Architectural Decision Record tool in Rust
168
stars
366
commits
Rust
primary language
Sep 3, 2026
updated
A command-line tool for creating and managing Architecture Decision Records (ADRs).
doctor command with configurable rules ([doctor] in adrs.toml) and a pre-commit hookbrew install adrs
cargo install adrs
docker run --rm -v $(pwd):/workspace -w /workspace ghcr.io/joshrotenberg/adrs init
Download from GitHub Releases.
# Initialize a new ADR repository
adrs init
# Create your first decision
adrs new "Use PostgreSQL for persistence"
# List all ADRs
adrs list
# Check repository health
adrs doctor
adrs [OPTIONS] <COMMAND>
Commands:
init Initialize a new ADR repository
new Create a new ADR
edit Edit an existing ADR
list List all ADRs
search Search ADRs for matching content
link Link two ADRs together
status Change an ADR's status
config Show configuration
doctor Check repository health
generate Generate documentation (toc, graph, book)
export Export ADRs to different formats
import Import ADRs from different formats
template Manage ADR templates
completions Generate shell completions
mcp Start MCP server for AI agent integration (included by default)
cheatsheet Show quick reference for common workflows
Options:
--ng Enable NextGen mode with YAML frontmatter
-C, --cwd <DIR> Run from a different directory
-h, --help Print help
-V, --version Print version
# Classic Nygard format (default)
adrs new "Use REST API"
# MADR 4.0.0 format
adrs new --format madr "Use GraphQL"
# Minimal template
adrs new --variant minimal "Quick decision"
# With tags (NextGen mode)
adrs --ng new --tags security,api "Use JWT for authentication"
# Full-text search
adrs search postgres
# Filter by status
adrs list --status accepted
# Filter by tag (NextGen mode)
adrs --ng list --tag security
# Supersede an existing ADR
adrs new --supersedes 2 "Use MySQL instead"
# Link related ADRs (auto-derives reverse link)
adrs link 3 Amends 1
# Table of contents
adrs generate toc > doc/adr/README.md
# Graphviz dependency graph
adrs generate graph | dot -Tsvg > doc/adr/graph.svg
# mdbook
adrs generate book && cd book && mdbook serve
# Export to JSON-ADR format
adrs export json > decisions.json
# Import from another repository
adrs import json decisions.json --renumber
adrs includes an MCP (Model Context Protocol) server for AI agent integration (enabled by default).
Add to Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"adrs": {
"command": "adrs",
"args": ["mcp", "serve"],
"cwd": "/path/to/your/project"
}
}
}
The MCP server provides tools for reading, creating, and managing ADRs.
adrs is built on the adrs-core library, which can be used independently:
[dependencies]
adrs-core = "0.9"
use adrs_core::Repository;
let repo = Repository::open(".")?;
for adr in repo.list()? {
println!("{}: {}", adr.number, adr.title);
}
See library documentation for more details.
Full documentation: joshrotenberg.com/adrs
Contributions welcome! See issues or open a new one.
MIT or Apache-2.0
Rust
99.9%
Architectural Decision Record tool in Rust
168
stars
366
commits
Rust
primary language
Sep 3, 2026
updated
A command-line tool for creating and managing Architecture Decision Records (ADRs).
doctor command with configurable rules ([doctor] in adrs.toml) and a pre-commit hookbrew install adrs
cargo install adrs
docker run --rm -v $(pwd):/workspace -w /workspace ghcr.io/joshrotenberg/adrs init
Download from GitHub Releases.
# Initialize a new ADR repository
adrs init
# Create your first decision
adrs new "Use PostgreSQL for persistence"
# List all ADRs
adrs list
# Check repository health
adrs doctor
adrs [OPTIONS] <COMMAND>
Commands:
init Initialize a new ADR repository
new Create a new ADR
edit Edit an existing ADR
list List all ADRs
search Search ADRs for matching content
link Link two ADRs together
status Change an ADR's status
config Show configuration
doctor Check repository health
generate Generate documentation (toc, graph, book)
export Export ADRs to different formats
import Import ADRs from different formats
template Manage ADR templates
completions Generate shell completions
mcp Start MCP server for AI agent integration (included by default)
cheatsheet Show quick reference for common workflows
Options:
--ng Enable NextGen mode with YAML frontmatter
-C, --cwd <DIR> Run from a different directory
-h, --help Print help
-V, --version Print version
# Classic Nygard format (default)
adrs new "Use REST API"
# MADR 4.0.0 format
adrs new --format madr "Use GraphQL"
# Minimal template
adrs new --variant minimal "Quick decision"
# With tags (NextGen mode)
adrs --ng new --tags security,api "Use JWT for authentication"
# Full-text search
adrs search postgres
# Filter by status
adrs list --status accepted
# Filter by tag (NextGen mode)
adrs --ng list --tag security
# Supersede an existing ADR
adrs new --supersedes 2 "Use MySQL instead"
# Link related ADRs (auto-derives reverse link)
adrs link 3 Amends 1
# Table of contents
adrs generate toc > doc/adr/README.md
# Graphviz dependency graph
adrs generate graph | dot -Tsvg > doc/adr/graph.svg
# mdbook
adrs generate book && cd book && mdbook serve
# Export to JSON-ADR format
adrs export json > decisions.json
# Import from another repository
adrs import json decisions.json --renumber
adrs includes an MCP (Model Context Protocol) server for AI agent integration (enabled by default).
Add to Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"adrs": {
"command": "adrs",
"args": ["mcp", "serve"],
"cwd": "/path/to/your/project"
}
}
}
The MCP server provides tools for reading, creating, and managing ADRs.
adrs is built on the adrs-core library, which can be used independently:
[dependencies]
adrs-core = "0.9"
use adrs_core::Repository;
let repo = Repository::open(".")?;
for adr in repo.list()? {
println!("{}: {}", adr.number, adr.title);
}
See library documentation for more details.
Full documentation: joshrotenberg.com/adrs
Contributions welcome! See issues or open a new one.
MIT or Apache-2.0
Rust
99.9%