NATS Architecture and Design is a repository of architecture decision records and design specifications for the NATS messaging system ecosystem.
This repository serves as the authoritative source for documenting how NATS components are designed and how features are specified. It captures architectural decisions, design patterns, and feature guidance through a structured collection of architecture decision records organized by NATS version. The approach uses numbered ADRs to track decisions across the server, client libraries, and JetStream distributed streaming components, with each record tagged by affected subsystem and version to help developers understand which features apply to their deployment.
Developers maintaining NATS implementations, building client libraries, or deploying NATS infrastructure should consult this repository to understand the rationale behind system design choices and the specifications for features they plan to use. The records cover core messaging patterns, JetStream streaming capabilities including consumers and persistence, observability features like message path tracing, and operational concerns such as disaster recovery and consistency models. This is particularly valuable for anyone implementing NATS clients or operators, as it provides the design intent behind protocol behavior and feature interactions that may not be obvious from code alone.
The project maintains a steady stream of new architecture decision records across multiple subsystems, with recent additions addressing JetStream enhancements, consistency guarantees, backup and restore capabilities, and operational resilience. Records are actively refined and updated as features evolve, with some decisions spanning multiple version releases to reflect ongoing refinement of specifications.