finds.dev← search

// the find

foxglove/mcap

★ 971 · Rust · MIT · updated Jun 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →