Overview
Astroworx Starship is an observatory control system for unattended imaging. It connects to the equipment, runs the night, and gets out of the way. You author what you want shot, and Starship opens up, points, focuses, images, and closes down — on its own if you let it, or under your hand from the Console if you'd rather drive.
Core design choices
Safety-first kernel. A single SafetySupervisor is the only authority on whether the observatory can be opened. Its verdict is SAFE, WARNING, UNSAFE, UNKNOWN, or DISABLED. UNKNOWN (never heard from a required source) is treated identically to UNSAFE — no value is ever read as "probably fine". WARNING is the deliberately slow UNSAFE → SAFE recovery dwell, and it is not safe: only a clean SAFE releases the roof. DISABLED is Manual Mode — when you turn safety monitoring off (backyard / portable rig, no roof, no weather sensor) the verdict is never treated as unsafe and nothing is gated; you own the weather. See the Safety supervisor topic.
Display vs. control separation. All-sky cameras and CCTV streams give you situational awareness, but they never feed the supervisor. Only auditable instruments (the AAG CloudWatcher / Solo today; weather stations and rain sensors later) can change the verdict.
Open core licensing. Apache 2.0 for the core, with commercial premium features layered on top in the separate Professional build. Joshua's PhiFocuser ASCOM driver and other third-party hardware integrations stay separate. Everything documented in this help is standard functionality unless a topic says otherwise.
Modular by design. Each subsystem (Console, Sequencer, Scheduler, Cooling, Auto Flat, FITS, Dome, Alerts, Solo, ...) is its own module with its own config block, its own bus events, and its own UI page. Nothing is required for the rest to work — connect only the gear you have, turn on only the features you want.
What's implemented today
Equipment & transports
- Two equipment transports running side-by-side: ASCOM (Windows COM) and Alpaca (HTTP/JSON, cross-platform)
- Active control (Console): camera capture, mount slew/sync/park/track, focuser, filter wheel, cooling, field rotator, "Halt all" emergency stop
- Equipment dashboard: live device tiles with trends and per-device control, aware of configured-but-offline gear and observatory status
- Camera cooling: setpoint, settle detection, manual on/off, warm-up, slow ramp, on-connect auto-cool, sequencer hooks
- Filter wheel by name or position, with per-filter focuser offsets and per-filter refocus/exposure settings
Focus, framing & pointing
- Autofocus: two-button First Light Wizard + Refocus — full-frame multi-star V-curve (NumPy-only HFR/HFD, no external astronomy deps), auto-derived step and range, per-rig recipe that accumulates across runs
- Cartes du Ciel target lookup (Send/Fetch) and Sesame-style resolution
- ASTAP plate solver for image-to-WCS resolution, precise slew/solve/sync pointing, and plate-solved rotator position angle
- Plate-solve recenter after a managed meridian flip
- Polar alignment with live bolt-adjust guidance
- Sky Atlas — Aladin sky view, camera FOV framing, mosaic planning, one-click sequence
- Skyhunter — offline OpenNGC catalog, tonight's visibility, planets/asteroids/comets, satellite passes
Automation
- Sequencer with multi-target plans, rotate-per-frame and finish-each-filter modes, and up to seven policy phases (start / error / suspend / resume / end)
- Per-step error policy (abort / skip / retry), pause / resume / stop / abort
- Plan library (TOML save / load / backup / soft-delete) with a structured editor and a raw-TOML escape hatch
- Per-frame quality acceptance (HFR / stars / eccentricity / background, per-filter overrides, reshoot) and checkpoint/resume across a crash or restart
- Scheduler — autonomous multi-project, multi-night dispatch with per-filter goals, a persistent ledger, scoring/eligibility/hysteresis, two strategies, per-target recipes, per-filter Moon avoidance, and tonight-simulation dry-runs
- Blockscript — state-machine night automation (startup → running → shutdown, with WARNING / UNSAFE / RESUME / EMERGENCY handling and device-loss recovery)
- Auto Flat — automatic flat-frame acquisition to a per-filter target ADU, with flat-cover / warm-camera epilogue actions
- Roof and Dome control — open when dark + safe, close at dawn / unsafe / complete, with the CloudWatcher as the hardwired backstop; roll-off roof or dome, including ASDM adaptive slit slaving
- External scripts + plugin loader (opt-in extension points)
Safety, sources & displays
- AAG CloudWatcher (Solo) safety driver with stale detection, plus the Safety Supervisor
- Self-healing health monitor (memory, disk, threads, devices) with a COM-free liveness watchdog and a Solo driver-death heartbeat
- Hash-chained audit log (SQLite) of every command, verdict and event
- PHD2 guiding — read-only status plus commanding (set exposure, start/stop guiding, dither, settle gate) when you allow control; auto-launch and profile-connect for unattended rigs
- All-sky and CCTV displays; STF auto-stretched last-frame preview (the single image surface)
- Alerts — outbound email (SMTP) and Pushover notifications on safety and sequence events
Platform
- Web UI reachable from any browser (phones and tablets included) with WebSocket live updates
- Settings with live-save vs. save+restart, a background job system with progress streaming
- Equipment profiles, configuration snapshots, and a diagnostics bundle
- Ships as two editions from one codebase — Astroworx Starship (public) and Astroworx Starship Professional — with an in-app supporter Licence tab; see the Licence & editions topic
- In-app help (this thing you're reading) with searchable Markdown topics
What's coming
See the Roadmap topic for the full picture. The headline items still to come are: an out-of-process ASCOM driver host so a wedged driver can't stall the loop, per-event cooling setpoint overrides in the sequencer, the dome sync-point calibration solver, and OS-level boot auto-launch for remote rigs.