libcimbar is an optimized C++ implementation of color-icon-matrix barcodes for air-gapped data transfer.
The tool solves the problem of transferring data between devices without network connectivity, Bluetooth, NFC, or other wireless protocols. It works by encoding data into an animated barcode displayed on a screen, which a smartphone camera can read and decode. The barcode format stores data in a grid of colored tiles where both tile position and color encode information. Reed Solomon error correction handles the lossy nature of video decoding. The implementation adds a protocol layer using fountain codes and zstd compression, allowing files up to 33MB to be split across multiple barcode frames that can be received out of order, with missing or corrupted frames automatically recovered once enough distinct frames are successfully decoded.
Adoption suits scenarios requiring offline data transfer between air-gapped systems, such as secure environments or locations without connectivity. The encoder runs on any device with a modern web browser, including as a progressive web app or standalone HTML file for offline use. The decoder is available as an Android app. The tool achieves sustained transfer speeds around 850 kilobits per second using only a computer monitor and smartphone camera. This approach is experimental and positioned as a proof-of-concept rather than a replacement for standard barcode formats.
The project maintains active development across multiple platforms: the encoder compiles to WebAssembly and JavaScript for browser deployment, while the decoder targets Android. The codebase is written in C++ with platform-specific builds tested on Linux amd64, Android arm64, and WebAssembly. The project includes comprehensive documentation covering implementation details, performance characteristics, and a roadmap of planned work. Dependencies are either vendored in the source tree or clearly documented as external requirements, with the build system supporting standard development workflows on Linux.