// the find
foxglove/mcap
MCAP is a modular, performant, and serialization-agnostic container file format, useful for pub/sub and robotics applications.
MCAP is a binary container format for recording time-series message data, aimed squarely at robotics (ROS1/ROS2) but general enough for any pub/sub workload. It handles indexed reads, chunked compression, and schema embedding so files are self-describing. Libraries ship in C++, Go, Python, TypeScript, Swift, and Rust.
The format is genuinely serialization-agnostic — you store raw bytes with a schema reference, so Protobuf, JSON Schema, ROS1msg, and custom encodings all coexist in the same file without the library caring. The indexed chunk layout means you can seek to a time range without scanning the whole file, which matters when recordings run hours. Cross-language conformance tests across all six SDKs are a real commitment most multi-language projects skip. The CLI (brew-installable, single binary) covers the most common ops — inspect, merge, split — without pulling in the full SDK.
Under 1000 stars for a format that's been out since 2022 signals adoption is still narrow outside the Foxglove/ROS ecosystem; if you're not in robotics you'll be betting on a niche. The C++ library is header-only with Conan as the distribution path — if your shop doesn't use Conan, integration is a manual copy-paste exercise. Random-access reads require a valid summary section at the end of the file; a recording interrupted mid-write produces an unindexed file that falls back to a linear scan, and this failure mode isn't prominently documented. The Rust crate is the newest and thinnest — async support is absent and the API surface is noticeably smaller than the Go or C++ implementations.