Skip to main content

What is NATS?

NATS is an open source messaging system. Applications connect to a NATS server and exchange messages by subject, without knowing each other's network addresses.

Overview​

At its core, NATS is about publishing and listening for messages. It provides a layer between application components, allowing them to communicate without being directly connected or even aware of each other's existence.

NATS optimizes for a small single binary, low latency at high message rates, and secure defaults. It runs from one server on a laptop up to clusters of servers spanning regions.

How NATS Works​

NATS is a messaging fabric that connects all your applications and services:

Core Components​

  1. NATS Server - The messaging broker that routes messages
  2. Publishers - Applications that send messages
  3. Subscribers - Applications that receive messages
  4. Subjects - Named channels for message organization

The NATS Ecosystem​

NATS ships as a small set of pieces you compose together: the server, a client for your language, and tooling you add as you need it.

  • Server — the single nats-server binary. Clustering, JetStream, leaf nodes, MQTT, and WebSocket are all configuration on the same process.
  • Clients — official Tier 1 clients exist for Go, JavaScript/TypeScript, Python, Java, Rust, C#/.NET, and C. Tier 2 clients (may lag on new server features) cover Zig, Swift, Ruby, and Elixir.
  • Orbit — optional per-language extension libraries with higher-level utilities and experimental features built on top of the core client.
  • Tooling — the nats CLI with built-in nats auth identity commands, nsc as the standalone identity tool, NACK and Helm charts for Kubernetes, Prometheus exporter, surveyor, bridges to Kafka / JMS / Spark / Flink, and a Terraform provider.

See the ecosystem page for the full list with links.

Key Differentiators​

Simplicity​

NATS focuses on moving messages between applications. The server is one binary, and the client API is small.

Performance​

  • Process millions of messages per second
  • Sub-millisecond latency
  • Small memory footprint (typically ~15MB)

Location transparency​

Applications don't need to know where other services are located. NATS handles:

  • Service discovery
  • Load balancing
  • Fault tolerance

Multi-tenancy​

Accounts isolate messaging domains within one server or cluster, which supports:

  • Secure multi-tenant deployments
  • Department or team isolation
  • SaaS platform building

Use Cases​

NATS excels in scenarios requiring:

Agentic AI​

  • Agent-to-agent communication with automatic service discovery
  • Real-time event streams for LLM inference and tool calls
  • Multi-region GPU inference routing with scale-to-zero

Real-time Data Streaming​

  • IoT telemetry collection
  • Financial market data distribution
  • Log and metrics aggregation

Microservices Communication​

  • Service mesh data plane
  • Event-driven architectures
  • CQRS and Event Sourcing patterns

Edge Computing​

  • Edge-to-cloud connectivity
  • Intermittent network handling
  • Bandwidth and resource-constrained environments

Command and Control​

  • Remote procedure calls
  • Configuration management
  • System orchestration

Next steps​