Astro is a Go library and command line tool for the protocols spacecraft use to talk to the ground. It implements the CCSDS and ECSS standards that NASA, ESA, JAXA and others run their missions on.
Every protocol package takes nothing outside the Go standard library, so a mission integrating one does not inherit a dependency tree. The command line tool is the exception: it uses a few libraries of its own.
Start here
New to Astro: Install it, then build your first packet in the Go quickstart or the CLI quickstart.
New to CCSDS: read the stack. It explains how a sensor reading becomes radio symbols, and which package does which part. Every protocol page assumes you have read it.
Looking for a specific standard: the protocol index lists all 29, grouped by layer.
Lost in the acronyms: the glossary expands every one, grouped by layer.
Debugging a capture: read debug a real capture, which works one out end to end from the terminal. The CLI reference has every command.
Build something
Fifteen worked chains, each backed by a runnable program in the repository. The guide index lists them all; these are the ones to read first:
- Downlink, telemetry from a spacecraft to the ground, packets through frames to CADUs.
- Uplink, commands from the ground to a spacecraft, with reliable delivery.
- A lossy link, what happens when frames get dropped and corrupted, and how the protocols cope.
- A full-duplex link, both directions joined, with the CLCW riding home.
Then, depending on what you are building:
- PUS services and a mission database, for what the bytes mean.
- File downlink and DTN, for moving things bigger than a packet.
- AOS, security and compression, for a high-rate or protected link.
- Ground station and time correlation, for the ground segment.
- Debug a capture, when someone hands you a binary file and no documentation.
What is covered
29 standards across transport, data link, coding and synchronization, ground-to-ground transfer, compression, time, packet utilization, and mission databases. Every one has a scope statement saying what Astro implements and what it leaves to you, plus a conformance page.
Before you trust any of it, read how this is verified: it says which claims rest on a published test vector and which rest on a reading of the standard. Performance has the measured throughput of every layer, and security covers what happens when the octets are hostile.
See the protocol index for the full list.
What Astro is not
It is not a mission control system, and it is not a flight software framework. It is the wire format layer that both of those need. It moves bytes correctly and tells you when they are wrong.