···125125| [**ocaml-odm**](https://tangled.org/gazagnaire.org/ocaml-odm) | odm | Orbit Data Messages (CCSDS 502.0-B-3) |
126126| [**ocaml-oem**](https://tangled.org/gazagnaire.org/ocaml-oem) | oem | CCSDS 502.0-B-3 Orbit Ephemeris Message parser and interpolator |
127127| [**ocaml-opam**](https://tangled.org/gazagnaire.org/ocaml-opam) | opam | Streaming opam file codec for OCaml |
128128-| [**ocaml-openamp**](https://tangled.org/gazagnaire.org/ocaml-openamp) | openamp | OpenAMP remoteproc interface for SpaceOS |
128128+| [**ocaml-openamp**](https://tangled.org/gazagnaire.org/ocaml-openamp) | openamp | OpenAMP remoteproc interface for asymmetric multiprocessing |
129129| [**ocaml-opm**](https://tangled.org/gazagnaire.org/ocaml-opm) | opm | CCSDS 502.0-B Orbit Parameter Message parser and serializer |
130130| [**ocaml-osv**](https://tangled.org/gazagnaire.org/ocaml-osv) | osv | OSV.dev vulnerability database client |
131131| [**ocaml-paseto**](https://tangled.org/gazagnaire.org/ocaml-paseto) | paseto | PASETO (Platform-Agnostic Security Tokens) implementation |
132132| [**ocaml-pbkdf2**](https://tangled.org/gazagnaire.org/ocaml-pbkdf2) | pbkdf2 | PBKDF2: Password-Based Key Derivation Function 2 (RFC 8018) |
133133| [**ocaml-pds**](https://tangled.org/gazagnaire.org/ocaml-pds) | pds | ATProto Personal Data Server storage for OCaml |
134134-| [**ocaml-pid1**](https://tangled.org/gazagnaire.org/ocaml-pid1) | pid1 | Minimal OCaml PID 1 for SpaceOS VMs |
134134+| [**ocaml-pid1**](https://tangled.org/gazagnaire.org/ocaml-pid1) | pid1 | Minimal OCaml PID 1 primitives for VM init processes |
135135| [**ocaml-precommit**](https://tangled.org/gazagnaire.org/ocaml-precommit) | precommit | Pre-commit hook initialization for OCaml projects |
136136| [**ocaml-protobuf**](https://tangled.org/gazagnaire.org/ocaml-protobuf) | protobuf | Protocol Buffers codec for hand-written schemas |
137137| [**ocaml-proximity1**](https://tangled.org/gazagnaire.org/ocaml-proximity1) | proximity1 | CCSDS Proximity-1 Space Link Protocol (211.0-B) |
···147147| [**ocaml-respond**](https://tangled.org/gazagnaire.org/ocaml-respond) | respond | Eio HTTP server with static file serving and route handlers |
148148| [**ocaml-retry**](https://tangled.org/gazagnaire.org/ocaml-retry) | retry | Generic retry logic with exponential backoff |
149149| [**ocaml-rice**](https://tangled.org/gazagnaire.org/ocaml-rice) | rice | CCSDS 121.0-B-3 Lossless Data Compression (Rice/Golomb coding) |
150150-| [**ocaml-rpmsg**](https://tangled.org/gazagnaire.org/ocaml-rpmsg) | rpmsg | RPMsg inter-partition messaging for SpaceOS |
150150+| [**ocaml-rpmsg**](https://tangled.org/gazagnaire.org/ocaml-rpmsg) | rpmsg | RPMsg inter-partition messaging over shared memory |
151151| [**ocaml-rtlsdr**](https://tangled.org/gazagnaire.org/ocaml-rtlsdr) | rtlsdr | RTL-SDR IQ sample reader |
152152| [**ocaml-runc**](https://tangled.org/gazagnaire.org/ocaml-runc) | runc | OCI runtime spec types and runc command wrapper |
153153| [**ocaml-s3**](https://tangled.org/gazagnaire.org/ocaml-s3) | s3 | Pure-OCaml S3 protocol client |
···212212| [**ocaml-zephyr**](https://tangled.org/gazagnaire.org/ocaml-zephyr) | zephyr | Virtio-serial port IO for guest VMs |
213213| [**osrelease**](https://tangled.org/gazagnaire.org/osrelease) | osrelease | Detect operating system, distro and version information |
214214| [**prune**](https://tangled.org/gazagnaire.org/prune) | prune | Find unused exports in OCaml interface files |
215215-| [**space**](https://tangled.org/gazagnaire.org/space) | space | SpaceOS CLI: build and boot SpaceOS VMs |
216216-| [**space-block**](https://tangled.org/gazagnaire.org/space-block) | space-block | SpaceOS block storage layout |
217217-| [**space-dtn**](https://tangled.org/gazagnaire.org/space-dtn) | space-dtn | DTN daemon with policy DSL for software-defined satellite networking |
218218-| [**space-ground**](https://tangled.org/gazagnaire.org/space-ground) | space-ground | SpaceOS ground station with web dashboard |
219219-| [**space-net**](https://tangled.org/gazagnaire.org/space-net) | space-net | APID-based virtual switch for SpaceOS inter-guest routing |
220220-| [**space-sim**](https://tangled.org/gazagnaire.org/space-sim) | space-sim | SpaceOS flight simulator for two-partition demo |
221221-| [**space-test**](https://tangled.org/gazagnaire.org/space-test) | space-test | SpaceOS E2E test harness |
222222-| [**space-wire**](https://tangled.org/gazagnaire.org/space-wire) | space-wire | SpaceOS wire protocol codecs |
223215| [**uniboot**](https://tangled.org/gazagnaire.org/uniboot) | uniboot | Minimal bootable disk image builder |
224216| [**xdge**](https://tangled.org/gazagnaire.org/xdge) | xdge | XDG Base Directory Specification support for Eio |
225217
+3-3
ocaml-chor/TODO.md
···228228 (action (run ocaml-chor emit --protocol TcDelivery --role P1 %{deps})))
229229```
230230231231-Each service (spaced, space-net, space-ground) depends on `spaceos-protocol`
232232-and links only the files for its role. Implements one `Chan` functor using
233233-its actual transport (virtio-net, Unix socket, etc.).
231231+Each service depends on `spaceos-protocol` and links only the files for its
232232+role. Implements one `Chan` functor using its actual transport (virtio-net,
233233+Unix socket, etc.).
234234235235- [ ] Design `spaceos-protocol` package structure
236236- [ ] Add dune rules for all 5 wire-protocol.md §5 sequences × their roles