Extend zed_svo_to_mcap to export multiple SVO inputs or a kindergarten segment directory into a single MCAP with per-camera namespaced topics.
Add a MultiMcapRecordSink so one writer can manage independent video, depth, calibration, pose, and body channels for multiple cameras while reusing the existing protobuf schemas and encoded access-unit flow.
Implement strict timestamp synchronization for bundled exports by computing the common time window, seeking each SVO to the shared start, dropping unsynced frames, and only emitting groups that fall within the configured tolerance.
Load per-camera positional tracking settings from a cv-mmap style TOML pose config, preserve single-camera behavior, and add graceful SIGINT or SIGTERM shutdown so interrupted exports flush encoders and finalize readable MCAP files.
Add mcap_multi_record_tester coverage and switch zed_svo_to_mcap defaults to H.265 plus QUALITY depth mode.
Register an MCAP recorder service on the streamer control subjects, reuse the shared recording request and status model, and expose the zed recording preview/conversion helper.
This also replaces the temporary cnats boolean with the explicit CVMMAP_CNATS_PROVIDER modes and documents the supported system and workspace build paths.
Point the build and dummy runtime producer at the canonical protocol module so runtime ownership matches the refactored directory structure.
- compile src/protocol/wire_codec.cpp
- update frame source to include and use protocol::wire_codec
- remove remaining sim/wire usage from runtime code
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Replace hand-rolled argument parsing with CLI11-backed parse paths for streamer runtime config and simulator runtime options.
Simulator help text is now generated from CLI11 app definitions to keep parser/help output in sync, while preserving legacy validation messages and exit semantics used by automation.
Remove the monorepo-relative spdlog fallback so this project no longer depends on ../app/lib/spdlog. This makes configuration deterministic when cvmmap-streamer is checked out as an independent repository.
The build now fails fast unless spdlog is provided by the host toolchain, which matches standalone packaging expectations.
This commit introduces the full downstream runtime implementation needed to ingest, transform, and publish streams.
It preserves the original upstream request boundary by packaging the entire cvmmap-streamer module (build config, public API, protocol and IPC glue, and simulator/tester entrypoints) in one coherent core unit.
Keeping this group isolated enables reviewers to validate runtime behavior and correctness without mixing test evidence or process documentation changes.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>