This fork of the NATS server was planned to promote my UDS patches to NATS. It looks like the scope of the changes is not acceptable by upstream.
I need these changes for a project of mine and keep the fork around in case NATS will reconsider adding them later on. However, due to my time constraints I probably can't keep up syncing changes, so there is a good chance this becomes a hard fork in the future.
If you are interested in or need these changes and require robust support, I am - in principle - available for hire.
The project I am working on is "System NATS" or snats. That's the working title. It's an embedded NATS server based on this fork that operates as a system bus for Linux nodes (similar to DBUS) integrating into a communication mesh. This in turn is part of the onpremix project, a site/organization/network/fleet management solution for on-premise deployments, e.g. home labs, small business infrastructure or alternative cloud/edge solutions. Both of these projects will be open source projects when they reach a sufficient maturity level. They are not yet public though.
So while I am actively using this fork and maintain it for my use cases, it's not really supported in its current form.
Full documentation is in the wiki:
- UNIX domain sockets (implemented) — a UDS transport for the server, with peer-credential (uid/gid/pid) authentication. See UNIX domain sockets and the UDS permission model.
file://nkey references (implemented) — any nkey or seed in the config may be afile://URL, read at runtime, so secrets stay out of the config file. See NKey file references.- Peer authorization (planned) — propagate the publisher's identity to subscribers. See Peer authorization.
The UDS transport needs a client that can dial a Unix socket. These companion forks add that:
- natscli — the
natsCLI, with anats+uds://URL scheme for UDS connections. - nats.py — Python client with UDS support.
- nats.zig — Zig client with UDS support.
Programmatic Go clients need no fork — set a custom dialer
(nats.SetCustomDialer) that dials unix.
NATS is a simple, secure and performant communications system for digital systems, services and devices. NATS is part of the Cloud Native Computing Foundation (CNCF). NATS has over 40 client language implementations, and its server can run on-premise, in the cloud, at the edge, and even on a Raspberry Pi. NATS can secure and simplify design and operation of modern distributed systems.
- Official Website
- Official Documentation
- FAQ
- Watch a video overview of NATS.
- Watch this video from SCALE 13x to learn more about its origin story and design philosophy.
- Twitter: Follow us on Twitter!
- Google Groups: Where you can ask questions
- Slack: Click here to join. You can ask questions to our maintainers and to the rich and active community.
If you are interested in contributing to NATS, read about our...
The NATS product roadmap can be found here.
Who uses NATS? See our list of users on https://nats.io.
A third party security audit was performed by Trail of Bits following engagement by the Open Source Technology Improvement Fund (OSTIF). You can see the full report from April 2025 here.
If you've found a vulnerability or a potential vulnerability in the NATS server, please let us know at nats-security.
Unless otherwise noted, the NATS source files are distributed under the Apache Version 2.0 license found in the LICENSE file.
