What is NATS?
NATS is a high-performance, lightweight, open-source messaging system designed for building modern distributed systems, across any cloud or any arbitrary, user-defined edge.
NATS supports pub/sub, request/reply, and streaming with persistence (via JetStream), all through a single binary with minimal resource usage and sub-millisecond latency.
Official clients are available in Go, Rust, JavaScript (Node and Web), TypeScript (Deno), Python, Java, C#, C, Ruby, Elixir, and a CLI—plus 30+ community-contributed clients—making it easy to integrate across nearly any tech stack. See all the clients.
High performance
NATS uses a lightweight, single-threaded I/O loop written in Go, supports zero-copy message dispatch, and employs subject-based routing with minimal protocol overhead to deliver millions of messages per second with sub-millisecond latencies across globally distributed systems.
Lightweight
NATS is a single binary with no external dependencies, consuming minimal memory and CPU resources. The server typically uses less than 20MB of RAM, making it ideal for everything from resource-constrained edge devices to massive cloud deployments.
Open source
NATS server and its clients are open source under the Apache 2.0 license, with a vibrant community and transparent development process.
Why NATS?
NATS was built on intentional design choices: location independence, many-to-many communication, and an async-first model.
These principles shape how NATS works across environments—from a single process to global systems. Core communication and data patterns emerge naturally. Pub/sub, request/reply, queueing, streaming, key-value, and object storage all operate within the same system, without extra infra or fragile abstractions.
The result: a single connective fabric that stays simple as systems scale. Apps remain decoupled, resilient, and easier to operate, while teams avoid the complexity and sprawl that come with stitching together specialized tools.
Where NATS Thrives
NATS thrives anywhere systems are distributed. Its core foundations are designed for environments with many endpoints and services—where components are dynamic, loosely coupled, and constantly changing.
NATS also excels at the edge: on low-resource devices, across fleets of vehicles, or anywhere computing moves closer to users. The same connective layer works consistently, no matter the environment.
With leaf nodes and superclusters, NATS lets teams evolve topology over time. New clouds, regions, or edge locations can be added without downtime or redesign, allowing architectures to grow organically instead of being locked into early decisions.
Roadmap
NATS Server ships a minor release roughly every six months.
2.16 (target: March 2027)
| Feature | Status |
|---|---|
| Key expiration refresh. Extend a key’s lifetime without rewriting its value. | Planned |
| Automatic data repair. Cluster servers restore missing or damaged data from each other. | Planned |
| Stronger integrity checks. Checksums on every file written to disk, so damage is caught on recovery. | Planned |
| Steadier cluster leadership. A server rejoining the cluster no longer forces a leader change. | Planned |
| Lighter consumers. Optionally skip pending-message counts to cut overhead on large streams. | Planned |
| Incremental stream backups. Back up a stream from a chosen message onward. | Planned |
| Per-subject delivery limits. Cap unacknowledged messages per subject, not just per consumer. | Under consideration |
| Read-your-writes for key-value. Optionally guarantee a read sees the latest write. | Under consideration |
| Faster unreplicated writes. Batch disk writes on single-copy streams for higher throughput. | Under consideration |
This reflects current intent. Scope may change, and items under consideration may move to a later release. The NATS maintainers set each release from community discussion, commercial users, recurring support issues, and their own direction. Share ideas on Slack, in GitHub discussions, or at info@nats.io. To try unreleased changes, see the nightly build.