Architecture Decision Records

Short documents capturing why the architecture is the way it is. Each ADR names an alternative that was considered and rejected, and the forces that drove the choice. Read these when you're tempted to change something load-bearing.

Format loosely follows Michael Nygard's ADR template: context, decision, consequences.

Index

#TitleStatus
0001Single-process runtime over microservicesAccepted
0002NATS as the brokerAccepted
0003sqlite-vec for vector searchAccepted
0004Per-agent tool sandboxing at registry build timeAccepted
0005Drop-in agents.d/ directory for private configsAccepted
0006Per-agent git repo for memory forensicsAccepted
0007WhatsApp via whatsapp-rs (Signal Protocol)Accepted
0008MCP dual role — client and serverAccepted
0009Dual MIT / Apache-2.0 licensingAccepted

Writing a new ADR

  1. Copy the template (next ADR below, or use 0001 as a reference)
  2. Number sequentially: NNNN-short-slug.md
  3. Set status: Proposed while in review, flip to Accepted or Rejected after the discussion settles
  4. Link from this index
  5. Do not edit accepted ADRs in place. Create a new ADR that supersedes it and mark the old one Superseded by NNNN.

ADRs are load-bearing documentation — they're how future you (and future contributors) learn that "NATS over RabbitMQ was not an accident."