SpaceOS ground station with live web dashboard
OCaml 94.7%
Dune 1.6%
Other 3.7%
13 1 0

Clone this repository

https://tangled.org/gazagnaire.org/space-ground https://tangled.org/did:plc:jhift2vwcxhou52p3sewcrpx/space-ground
git@git.recoil.org:gazagnaire.org/space-ground git@git.recoil.org:did:plc:jhift2vwcxhou52p3sewcrpx/space-ground

For self-hosted knots, clone URLs may differ based on your setup.

Download tar.gz
README.md

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 exposing start, which:
    • Connects to the VMM ground Unix domain socket with automatic reconnection
    • Decodes incoming 256-byte Space_wire.Msg.t frames
    • Serves an embedded HTML page with the Helix/Signal reactive UI
    • Streams decoded frames as SSE events on the /events endpoint
  • 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