The Scalability Protocols

Patterns for programs that need to talk.

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

A small vocabulary for distributed systems.

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.

Choose your implementation

Use your favorite language. Interoperate everywhere.

Preferred pure Go implementation

mangos

A native Go implementation of the protocol family, built for Go applications rather than as a wrapper around a C library.

Start with mangos

Legacy C API

libnanomsg

The original C implementation. It remains available for existing applications and the language bindings built around its stable API.

Start with libnanomsg

Preferred Rust binding

nng-rs

A safe, idiomatic Rust wrapper for NNG. It is independently maintained, with its own release lifecycle.

Start with nng-rs

Preferred Python binding

pynng

Python bindings for NNG with synchronous, asyncio, and Trio-friendly APIs. It is independently maintained.

Start with pynng

More options

Other language bindings

Community-maintained bindings and wrappers for C++, Java, JavaScript, Lua, Ruby, and many more languages.

Browse language bindings

Open source

Build the shape of communication your system needs.

Visit nanomsg on GitHub