space-ground#
SpaceOS ground station with web dashboard.
space-ground connects to the VMM ground socket, decodes SpaceOS wire frames
in real time, and serves a live web dashboard over HTTP. The dashboard is built
with Helix/Signal (compiled to JavaScript via js_of_ocaml) and uses
Tailwind CSS for styling. Telemetry is streamed to the browser using
Server-Sent Events (SSE).
The web client decodes raw 256-byte frames using the space-wire codecs
compiled to JavaScript, providing a Wireshark-like detail panel with header
field breakdown, sub-payload decoding (ERROR, DP, EVR), and a hex dump view.
Installation#
opam install space-ground
Usage#
space-ground --socket /tmp/spaceos/ground.sock --port 8080
Then open http://localhost:8080 in a browser to see the live frame feed.
Programmatic#
Eio_main.run @@ fun env ->
Eio.Switch.run @@ fun sw ->
Ground.start
~sw
~net:(Eio.Stdenv.net env)
~clock:(Eio.Stdenv.clock env)
~socket:"/tmp/spaceos/ground.sock"
~port:8080
API#
Ground-- single-module library exposingstart, which:- Connects to the VMM ground Unix domain socket with automatic reconnection
- Decodes incoming 256-byte
Space_wire.Msg.tframes - Serves an embedded HTML page with the Helix/Signal reactive UI
- Streams decoded frames as SSE events on the
/eventsendpoint
web/main.ml-- js_of_ocaml client providing the reactive dashboard:- Summary cards (total frames, unique APIDs, kind breakdown)
- Live frame table with click-to-inspect
- CCSDS frame detail panel with header fields and sub-payload decoding
- Raw hex dump view