// the find
OpenCyphal-Garage/libcyphal
Portable reference implementation of the Cyphal protocol stack in C++ for embedded systems and Linux.
libcyphal is a header-only C++11/14 implementation of the Cyphal (formerly UAVCAN v1) protocol stack, targeting embedded systems, Linux, and POSIX RTOSs. It covers the full stack from CAN/UDP transport through serialization up to application-layer nodes with heartbeat, service registry, and RPC. If you're building avionics, drone firmware, or space-grade vehicle bus software, this is the reference implementation.
The layered architecture is clean — transport, presentation, and application layers are genuinely separated, with well-defined interfaces that let you swap CAN for UDP without touching application code. Being header-only removes the build system friction that usually kills embedded library adoption. Test coverage is serious: per-layer unit tests with mock transports, SonarCloud integration, and MISRA compliance as a stated goal — not just a badge. The dev container setup with containerized toolchains means you can actually reproduce the build environment without fighting compiler versions.
The README's own warning is honest: v1 is not complete, and 'work in progress' on a safety-critical protocol stack is a real risk if you need it now. The dependency chain is non-trivial — you need libcanard or libudpard separately, plus Nunavut for DSDL compilation, and the cmake/modules setup assumes you've already sorted out those fetches yourself. MISRA compliance is listed as a goal but there's no audit report or deviation list documenting where and why they deviate, which means you can't actually claim it in a certification context. Documentation examples are good at the transport layer but thin for the application layer, and the registry/node APIs are the ones you actually use day-to-day.