OpenAstro Core
Concept
The shared backbone for the OpenAstro tools: coordinate math, plate-solving glue, device drivers (INDI, ASCOM Alpaca), and the protocol surfaces every downstream app needs. The aim is that the imaging-intelligence and the device-control behaviour stay consistent across OpenAstro Node, Photo Tour, and anything else that lands on top — one library, not five reimplementations.
Pure Rust through the stack. No C toolchain to maintain, no shared mutable state across language boundaries, and the unit tests run against the abstractions instead of the hardware. The driver layer is the only part that needs a real device to validate.
Architecture
RA/Dec · alt/az · transforms"] IMG["Imaging Intelligence
HFR · plate-solve glue · sequencing primitives"] DRV["Device Drivers
INDI · ASCOM Alpaca"] PROTO["Protocol Surfaces
session · telemetry · safety"] NODE["OpenAstro Node"] PT["Photo Tour"] EXT["Future tools"] COORD --> IMG DRV --> IMG IMG --> PROTO PROTO --> NODE PROTO --> PT PROTO --> EXT
About 8,000 lines of Rust across seven crates, with 160-plus unit tests that exercise the abstractions without requiring a mount or camera plugged in. Drivers sit behind trait boundaries so a downstream tool can mock the device cleanly when it needs to.