Preferred for C
NNG
A modern C implementation with an updated API, broad transport support, and compatibility help for existing nanomsg applications.
Start with NNGThe Scalability Protocols
nanomsg is a family of lightweight messaging protocols for building distributed systems. Start with the communication pattern you need; choose the implementation that fits your language.
Protocol first
Each protocol describes how peers exchange messages. Implementations share this model, letting you make a deliberate choice about language, API, and lifecycle without losing sight of the topology.
Direct one-to-one communication between two peers.
02Publish messages to every interested subscriber.
03Route requests to services and receive replies.
04Distribute work and aggregate messages.
05Exchange messages in a simple many-to-many mesh.
06Ask many peers a question and collect their answers.
Choose your implementation
Preferred for C
A modern C implementation with an updated API, broad transport support, and compatibility help for existing nanomsg applications.
Start with NNGPreferred pure Go implementation
A native Go implementation of the protocol family, built for Go applications rather than as a wrapper around a C library.
Start with mangosLegacy C API
The original C implementation. It remains available for existing applications and the language bindings built around its stable API.
Start with libnanomsgPreferred Rust binding
A safe, idiomatic Rust wrapper for NNG. It is independently maintained, with its own release lifecycle.
Start with nng-rsPreferred Python binding
Python bindings for NNG with synchronous, asyncio, and Trio-friendly APIs. It is independently maintained.
Start with pynngMore options
Community-maintained bindings and wrappers for C++, Java, JavaScript, Lua, Ruby, and many more languages.
Browse language bindingsOpen source