The NATS Ecosystem
NATS is more than the nats-server binary. Around it sits a set of officially maintained clients, extension libraries, command-line and Kubernetes tooling, identity tools, and integrations.
This page is the map of those pieces — what each repository is, who maintains it, and where to look first.
If you only want to pick a client and start building, jump to Tier 1 clients.
Server
The single binary that does all message routing. Clustering, JetStream persistence, leaf nodes, MQTT, and WebSocket are all enabled through configuration on the same nats-server — there are no separate components to install.
| Name | Description |
|---|---|
| nats-server | The NATS server itself |
Clients
NATS clients come in three categories: Tier 1 (Synadia-maintained, track new server features at release), Tier 2 (Synadia-maintained, may lag behind on new server features), and community (third-party).
Tier 1 clients — track server releases
These are the ones the NATS team ships first when a new server feature lands. If a tier 1 client is available for your language, prefer it.
| Language | Repo | Description |
|---|---|---|
| Go | nats-io/nats.go | Reference implementation |
| JavaScript / TypeScript | nats-io/nats.js | Node, Deno, Bun, browser (WebSocket). Supersedes the archived nats.node, nats.deno, nats.ws, nats.ts |
| Python | nats-io/nats.py | asyncio-based, Python 3 only |
| Java | nats-io/nats.java | JVM; usable from Kotlin and Scala |
| Rust | nats-io/nats.rs | The async-nats crate |
| C# / .NET | nats-io/nats.net | .NET 6+. Modern async client |
| C | nats-io/nats.c | Embedded systems and FFI consumers |
Tier 2 clients — Synadia-maintained, feature-lag possible
Maintained by Synadia but not guaranteed to expose every new server feature on day one. Production-ready for the features they do cover; check each repo's README for current feature coverage.
| Language | Repo | Description |
|---|---|---|
| Zig | nats-io/nats.zig | Newer addition |
| Swift | nats-io/nats.swift | iOS, macOS, and server-side Swift |
| Ruby | nats-io/nats-pure.rb | Pure Ruby — preferred Ruby client |
| Ruby (legacy) | nats-io/nats.rb | EventMachine-based; use nats-pure.rb for new code |
| Elixir | nats-io/nats.ex | Replaces the archived elixir-nats |
Community clients
Third-party implementations exist for languages including Crystal, Dart, Kotlin, and PHP. Feature coverage and maintenance status vary — evaluate per project. These docs do not cover community clients.
Orbit — extensions and incubator per language
Orbit repositories live under the synadia-io org. They contain optional higher-level utilities and experimental features built on top of the matching tier 1 client. Pull in only the modules you need.
Typical Orbit contents include extra JetStream helpers (request-many, batch publish, scheduled messages), partitioned consumer groups, encoded KV / KV codecs, distributed counters, and retry / chaos utilities. Successful patterns may eventually graduate into the core client. Exact module set differs per language — check each Orbit repo's README.
| Language | Repo | Description |
|---|---|---|
| Go | synadia-io/orbit.go | Extensions for nats.go |
| JavaScript / TypeScript | synadia-io/orbit.js | Extensions for nats.js |
| Python | synadia-io/orbit.py | Extensions for nats.py |
| Java | synadia-io/orbit.java | Extensions for nats.java |
| Rust | synadia-io/orbit.rs | Extensions for async-nats |
| C# / .NET | synadia-io/orbit.net | Extensions for nats.net |
| C | synadia-io/orbit.c | Extensions for nats.c |
Command-line tooling
| Name | Description |
|---|---|
| natscli | The everyday nats CLI. Publish, subscribe, manage streams and consumers, inspect a running server. Most examples in these docs use it |
| nats-top | top-style live view of server activity |
| nats-box | Container image bundling the common NATS utilities (nats, nsc, nk) for ad-hoc shells in Kubernetes |
Identity & authentication
Tools and libraries for managing operators, accounts, users, and signing keys with NKeys + JWTs.
| Name | Description |
|---|---|
| nsc | CLI for managing operators, accounts, and users |
| synadia-io/jwt-auth-builder.go | Programmatic builder for accounts and users (alternative to driving nsc from code) |
| synadia-io/callout.go | Go SDK for writing auth-callout services |
| synadia-io/callout.net | .NET SDK for writing auth-callout services |
NKey libraries
Per-language implementations of the NKey signing and key-handling primitives.
| Language | Repo |
|---|---|
| Go | nats-io/nkeys |
| JavaScript / TypeScript | nats-io/nkeys.js |
| Java | nats-io/nkeys.java |
| C# / .NET | nats-io/nkeys.net |
| Python | nats-io/nkeys.py |
| Ruby | nats-io/nkeys.rb |
| Swift | nats-io/nkeys.swift |
| Elixir | nats-io/nkeys.ex |
JWT libraries
Per-language implementations for issuing and verifying NATS account / user JWT claims.
| Language | Repo |
|---|---|
| Go | nats-io/jwt |
| JavaScript / TypeScript | nats-io/jwt.js |
| Java | nats-io/jwt.java |
| C# / .NET | nats-io/jwt.net |
Kubernetes
| Name | Description |
|---|---|
| k8s | Official Helm charts for deploying nats-server clusters, surveyor, and related components |
| nack | Kubernetes controllers and CRDs for managing JetStream streams, consumers, and KV / Object stores declaratively. Successor to the archived nats-operator |
Observability
| Name | Description |
|---|---|
| prometheus-nats-exporter | Prometheus exporter for varz, connz, routez, and JetStream stats |
| nats-surveyor | Cluster-wide monitoring; aggregates stats across servers and exposes them as Prometheus metrics. Pairs with the exporter for full-cluster observability |
Schemas & API definitions
| Name | Description |
|---|---|
| jsm.go | Canonical source of JetStream API JSON schemas used by tooling and the reference docs in this site. Also contains a Go JetStream management library (alternative to nats.go with a different API surface) |
Bridges & integrations
| Name | Description |
|---|---|
| nats-kafka | Kafka ↔ NATS bridge |
| nats-spark-connector | Apache Spark structured-streaming source |
| synadia-io/flink-connector-nats | Apache Flink connector |
| nats-java-vertx-client | Vert.x integration |
| terraform-provider-jetstream | Manage JetStream resources as IaC |