Skip to main content

Architecture decisions

The project records its significant decisions as ADRs, with the reasoning attached. They are the fastest way to understand why the tool is shaped the way it is — and several of them explain constraints that show up directly in Limitations.

ADRDecision
001Go as the CLI language
002AGPL and the network boundary
003Local-first processing
004ActionIntent normalisation
005Stable finding IDs
006Adapter-specific enforcement
007No proprietary imports
008AWS first
009Telemetry opt-in
010Simple graph first

The three that shape everything else

ADR-006 — adapter-specific enforcement is why enforcement claims are scoped to the MCP gateway rather than to "agent actions" generally. It is the decision behind the first entry in Limitations.

ADR-003 — local-first processing is why the tool works with no account and why a workstation cannot see the organisation. Both follow from the same choice.

ADR-002 and ADR-007 together keep the AGPL boundary clean: Enterprise is reached over HTTPS, and the AGPL binary never links proprietary code.

Contracts

The repository publishes JSON schemas under schemas/decision, policy, action-intent, evidence-event among them. These are the shared contract with the commercial control plane, which must accept everything the OSS schemas define and may extend them. It can never remove or narrow one; unknown values fail closed on this side.