Architecture
Control Tower is one Python package. A single ControlTowerAPI facade holds the
control model; the HTTP API, the CLI, offline snapshots and the console are all
thin surfaces over it, so they always agree.
flowchart LR
subgraph Producers["Agents and sibling packages"]
A[Your agents<br/>register + heartbeat]
L[AgenticLens]
E[Agentic Evals]
S[Agentic Sidecar]
C[Agentic Chaos]
end
subgraph Tower["Control Tower service (serve)"]
H[HTTP API<br/>bearer tokens]
F[ControlTowerAPI facade]
R[(SQLite or memory:<br/>registry, evidence,<br/>config, alerts, incidents)]
D[Detector<br/>every 30 s]
U[Console /console/<br/>read-only]
end
CLI[CLI] --> H
SNAP[Snapshot file] -->|--snapshot, read only| F
MCP[Agentic MCP<br/>tower.* tools] --> H
A --> H
L & E & S & C -->|push native JSON| H
H --> F --> R
D --> F
U -->|GET with reader token| H
- Inventory first. Agents register and report their own health; Tower aggregates, it does not probe.
- Push, never pull. Sibling results arrive as attributed native artifacts. Tower stores projections and never recomputes their verdicts.
- Read-only surfaces, approved writes. The console only reads. Configuration, bulk and recovery changes need a preview, a separate approval and an audit record.
Package layout
The package separates the following control-plane domains:
registry/for agent registration and heartbeat statediscovery/for capability and version discoveryapi/for a unified control-plane surfaceconfig/for centralized configuration contractscli/for operator workflowsconsole/for the packaged read-only AgenticOps Consoleadapters/for thin ecosystem integration boundariesevidence/for pushed evidence storage and freshness postureincidents/for incident investigation and approved recovery,bulk/for fleet operations, andoperations/for live detection and alertsstatus/for fleet health and capability coverage rollups
See README.md and ROADMAP.md for the product boundary and milestone order.
Deployment and operator setup: hosting and customer-managed authentication.
v0.4 controlled configuration
See configuration and approvals for Tower ownership, action lifecycle, audit durability and API/CLI usage. Runtime settings remain mirrored or unsupported without an adapter.