NATS uses cookies to ensure you get the best experience on our website. Continuing to use this site assumes compliance with our Privacy Policy.

Download

Here you will find the NATS Server and officially supported & community clients and our JetStream enabled clients . Our documentation provides detailed instructions on how to get started.

Also available are a wide variety of community contributed clients, connectors, and utilities. We are always happy to receive contributions to review - send us a PR, or contact us at info@nats.io to share what you have built using NATS!

Want to try out what our engineers are working on? Check out the NATS Server Nightly Build. This Docker image is not an official release but contains new engineering coming to NATS Server soon.

Clients

NATS clients are used to connect to and communicate with NATS Server. If you would like to contribute your own client or add one not listed here, you can submit a pull request to update the contents of this file .

Starred clients are maintained by official NATS Authors and belong to the nats-io GitHub organization.

NATS Clients

LanguageDescriptionDevelopersDetails
ArduinoNATS Arduino ClientJosh Glendenning
Asio C++NATS Asio C++ ClientVlad Troinich
BallerinaNATS Ballerina ClientBallerina
Ballerina
CNATS C ClientNATS Authors
.NET C#NATS .NET C# ClientNATS Authors
Daniel Wertheim
ClojureNATS Clojure ClientEmployee Republic
CrystalNATS Crystal ClientNATS Authors
Joakim Repomaa
DartNATS Dart ClientDavid Gofman
DenoNATS Deno ClientNATS Authors
ElixirNATS Elixir ClientNATS Authors
Sarat Chandra
ElmNATS Elm ClientChristophe de Vienne
ErlangNATS Erlang ClientYuce Tekol
GoNATS Go ClientNATS Authors
HaskellNATS Haskell ClientOndrej Palkovsky
JavaNATS Java ClientNATS Authors
Mike Heath
Java AndroidNATS Java Android ClientMarek Kedzierski
LabVIEWNATS LabVIEW ClientDrew Herron
Common LispNATS Common Lisp ClientccQ
LuaNATS Lua ClientEric Pinto
MicroPythonNATS MicroPython ClientM K Hari Balaji
NGINXNATS NGINX ClientNATS Authors
Node.jsNATS Node.js ClientNATS Authors
PerlNATS Perl ClientCarwyn Moore
PHPNATS PHP ClientDmitry Krokhin
Raül Pérez
Pure RubyNATS Pure Ruby ClientNATS Authors
PythonNATS Python ClientNikita Grishko
Python AsyncioNATS Python Asyncio ClientNATS Authors
Python MinimalNATS Python Minimal ClientEugene Van Den Bulke
Python TornadoNATS Python Tornado ClientNATS Authors
Python TwistedNATS Python Twisted ClientJohn Lockwood
Qt5 C++NATS Qt5 C++ ClientPetar Koretić
RubyNATS Ruby ClientNATS Authors
RustNATS Rust ClientNATS Authors
David McNeil
Kevin Hoffman
ScalaNATS Scala ClientTeppei Yagihashi
SwiftNATS Swift ClientFirman Maulana
aus der Technik
TclNATS Tcl ClientPetro Kazmirchuk
WebSocketNATS WebSocket ClientNATS Authors

NATS JetStream Enabled Clients

NATS 2.2 release welcomed our newest persistence engine, JetStream. Additional JetStream enabled clients will be introduced soon.

LanguageDescriptionDeveloperDetails
CNATS C ClientNATS Authors
.NET C#NATS .NET C# ClientNATS Authors
DenoNATS Deno ClientNATS Authors
GoNATS Go ClientNATS Authors
JavaNATS Java ClientNATS Authors
Node.jsNATS Node.js ClientNATS Authors
PHPNATS PHP ClientDmitry Krokhin
Pure RubyNATS Pure Ruby ClientNATS Authors
Python AsyncioNATS Python Asyncio ClientNATS Authors
RustNATS Rust ClientNATS Authors
TclNATS Tcl ClientPetro Kazmirchuk
WebSocketNATS WebSocket ClientNATS Authors

Connectors and Utilities

To add a new connector or utility, you can submit a pull request to update the contents of this file .

NameDescriptionDeveloperSupport
Apache FlinkAllows Apache Flink to send/receive a stream of string based messages to/from NATS.Matthew RingCommunity
Apache SparkProvides an Apache Spark (a fast and general engine for large-scale data processing) integration with NATS.Laurent MagninCommunity
AWS NATSThis repository contains tools and templates to help using NATS in the Amazon Web Services platform.Danko MiocevicCommunity
Elastic BeatsTrack NATS metrics and logs with dedicated modules of Metribeat and Filebeat agents.Stamatis Katsaounis
Michael Katsoulis
Chris Markou
Community
Caddy NATSA caddy module that allows the caddy server to interact with a NATS server. This extension supports: publish/subscribe, fan in/out, and request reply.Jeremy SaenzCommunity
CoreOS ClusteringNATS clustering made easy with CoreOS, etcd2 and Docker.Paulo PiresCommunity
Deepstream.io connector for NATSDeepstream message connector for NATSnxteditionCommunity
Dokku-NATSNATS plugin for Dokku, a PaaS PlatformJose Diaz-GonzalezCommunity
ElasticsearchAllows you to take data from nats subjects/groups and pump these into Elasticsearch.NetlifyCommunity
Fluent BitThe NATS output connector allows to flush your Fluent Bit records into a NATS Server endpointFluent BitCommunity
Fluentd Event CollectorNATS plugin for fluentd Event CollectorCloud Foundry CommunityCommunity
A Gatling to NATS ConnectorThe NATS Gatling library provides a Gatling (an open-source load testing framework based on Scala, Akka and Netty) to NATS messaging system (a highly performant cloud native messaging system) Connector.Laurent MagninCommunity
HemeraA Node.js microservices toolkit for NATS.Dustin DeusCommunity
Java NATS ServerJava NATS Server for unit testing.Yuna MorgensternCommunity
Java NATS Streaming ServerJava NATS Streaming Server for unit testing.Yuna MorgensternCommunity
KubernetesNATS cluster on top of Kubernetes made easy.Paulo PiresCommunity
LogrusNATS hook for Logrus - helpers assume you are using a TLS connection.Ryan NealCommunity
Logrus-NATSA Logrus hook for sending data to NATS.Erik HowardCommunity
NATS Connector FrameworkA pluggable Java based framework to bridge the NATS messaging system and other technologies.NATS TeamSynadia
NATS Redis PubSubThe NATS Redis publish subscribe connector is provided to facilitate the bridging of NATS and Redis Publish/Subscribe.NATS TeamSynadia
NATS ElkUtility for forwarding NATS monitoring data to ELK StackVladimir SundupeyCommunity
NATS Kafka BridgeThis project implements a multi-connector bridge between NATS or NATS streaming and Kafka topics.NATS TeamSynadia
NATS-MonA realtime web based NATS monitorRaül PérezCommunity
NATS MQ Series BridgeThis project implements a simple, but generic, bridge between NATS or NATS streaming and MQ Series queues and topics.NATS TeamSynadia
NATS Kubernetes OperatorThis operator manages NATS clusters atop Kubernetes, automating their creation and administration.NATS TeamSynadia
NATS ReplicatorThis project implements a multi-connector bridge, copier, replicator between NATS and NATS streaming endpoints.NATS TeamSynadia
NATS-RPC GeneratorRPC layer on top of NATS standardizing on Protocol Buffers.Department of Biomedical and Health InformaticsCommunity
NATS SnifferA simple sniffer for NATS, the cloud native messaging system.Paulo PiresCommunity
NATS Spring SupportA Spring Cloud Stream Binder for NATS.NATS TeamSynadia
NATS Stream ReplicatorThis project replicates streams between NATS streaming clusters. Ideal for mirroring streams across data centers.R.I. PienaarCommunity
NATS Streaming Server on KubernetesThis project contains a Docker image and a Helm chart to run NATS Streaming Server in the Kubernetes cluster. The NATS Streaming Server can run in fault tolerance mode.Canh NgoCommunity
NATSBoardDashboard for monitoring NATS. It provides real-time information from NATS server.Fatih CetinkayaCommunity
nRPC is like gRPC, but over NATSnRPC is an RPC framework like gRPC, but for NATS. It can generate a Go or Python client and server from the same .proto file that you’d use to generate gRPC clients and servers. The server is generated as a NATS MsgHandler.nats-rpc teamCommunity
Nvisible Inc Go ARI ProxyAn implementation of the [go-ari-library] used to connect to the Asterisk REST Interface for delivery of Events and Commands across a message bus.Leif MadsenCommunity
OpenFaaS NATS Streaming ConnectorThis is a queue-worker to enable asynchronous processing of function requests.Alex EllisCommunity
NATS Prometheus ExporterThe official NATS exporter for Prometheus, written in Go. It supports monitoring multiple NATS servers, is highly resilient to network outages, and can be embedded into go applications via an API. Metrics are exposed through a HTTP(S) interface for Prometheus to collect them.NATS TeamSynadia
PrometheusNATS exporter for Prometheus, written in Go. It extracts several metrics and provides them via the standard HTTP interface for Prometheus to collect them.LovooCommunity
Rancher NATSThis is an extended version of the official Docker image for nats. It adds support to set up a cluster easily onrancher.Community
ResgateA Realtime + REST API Gateway for NATS to create web APIs with live data. It supports access control, caching, scaling, queries, and more.Samuel JiréniusCommunity
REST to NATS ProxyThis library provides a translation of HTTP requests to NATS. Client side is partly inspired by Gin to process requestsRadomír SohlichCommunity
RPC over NATSProvides an RPC and pub/sub framework with first-class support for NATS.WorkivaCommunity
Socket.io-NATS ConnectorThis connector enables multiple socket.io instances to broadcast and emit events to and from each other through NATS.Edgar RibeiroCommunity
Spring NATS ServerSpring NATS Server for unit testing.Yuna MorgensternCommunity
Spring NATS Streaming ServerSpring NATS Streaming Server for unit testing.Yuna MorgensternCommunity
Synadia NGSNGS is a global communications system built on NATS.io.SynadiaCommunity
TCP/Websocket Gateway with NATSAn embeddable TCP and Websocket gateway/bridge with NATS, written in golang.Bin ZhaoCommunity
TelegrafThe NATS consumer plugin reads from specified NATS subjects and adds messages to InfluxDB. The plugin expects messages in the Telegraf Input Data Formats. A Queue Group is used when subscribing to subjects so multiple instances of telegraf can read from a NATS cluster in parallel.Cameron SparrCommunity
Websocket GatewayA websocket gateway for NATS, usable as a backend for elm-nats and websocket-nats.Orus.ioCommunity
websocket-natsAn in-browser websocket client for NATS, a lightweight, high-performance cloud native messaging system.Josh GlendenningCommunity