Control Tower Documentation
Control Tower is an AI control evaluation framework for measuring the effectiveness of safety protocols when deploying potentially misaligned AI agents. It provides realistic software environments where AI agents complete tasks while safety protocols monitor for malicious behavior, and models AI control as a game between a Blue Team (maximizing usefulness and safety) and a Red Team (attempting to subvert safety measures).
Where to start
- Running evaluations on existing settings: start with the Quickstart, then the User Guide covers running evaluations, monitoring, viewing trajectories, and measuring safety and usefulness.
- Building settings and tasks: start with the Hands-On Guide, then the User Guide covers environments, porting a benchmark, main tasks, side tasks, scorers, sabotage trajectories, and protocols.
Both paths use the objects defined in Core Concepts; the Glossary spells out every abbreviation. To change Control Tower itself, see CONTRIBUTING.md.
Stability
From v6.0.0, only a major release makes a breaking change, and a breaking change is a change to the stable API:
- the
ct run, ct runs, ct settings, ct protocols, ct live and ct login commands, as the CLI reference lists them;
- these Python modules, and the registry entries the Python reference lists:
- policies and protocols:
control_tower.eval.red, control_tower.eval.blue, control_tower.eval.white, control_tower.eval.harness, control_tower.eval.game_view and control_tower.eval.registry;
- monitors:
control_tower.monitors and control_tower.monitors.registry;
- tasks and samples:
control_tower.task.task, control_tower.task.space and control_tower.task.sample_metadata;
- results:
control_tower.trajectories.sample, control_tower.metrics.audit and control_tower.metrics.control, plus only suspicion_scores and SuspicionScore from control_tower.trajectories.monitor_score and only Cost and Priced from control_tower.models.pricing;
- the names Your Own Task lists for building your own Inspect
Task, imported from the modules it gives;
- the eval log format;
- the env API setting packages build on (
ct-setting-sdk and its wire protocol), versioned on its own: only an SDK major changes it incompatibly.
A listed module's stable names are the public names it defines, or its __all__ when it has one, and not names it only imports; the types those names take and return are stable with them. Everything else under control_tower is internal and can change or move in a minor release. ct extras and the modules behind it, control_tower.extras and control_tower.datasets.importers, are not part of the stable API either and can change or move in any release.
User Guide
Basics
| Page | Description |
|---|
| Quickstart | Fresh machine to running evals on public environments with an OpenRouter key |
| Hands-On Guide | Build a toy environment and run your first eval |
| Web Viewer | View uploaded trajectories and eval results |
Concepts
Running
Protocols and Monitors
Analysis
| Page | Description |
|---|
| Trajectories | Understand trajectory files, IDs, conversion, upload, and download |
| Safety Curves | Usefulness, safety, audit budget and cost of a control eval |
Building Environments
Tasks and Scorers
Sabotage Trajectories
Reference
Command Line, Python, and HTTP
| Page | Description |
|---|
| CLI Reference | Generated reference for every Control Tower command and option. |
| Python Reference | Generated reference for the registries Control Tower is extended through. |
| HTTP API | Viewer routes, wire conventions, auth, and self-hosting |
Data and Glossary
| Page | Description |
|---|
| Database | MongoDB collections and access |
| Glossary | Abbreviations and project terms used across the documentation |
Project Structure
| Directory | Purpose |
|---|
src/control_tower/environments/ | Environment infrastructure (settings, the env registry, env processes, the internet simulator) |
packages/ct-setting-sdk/ | The setting SDK setting packages build on (tasks, scorer utils, the env process server) |
.settings/ | Cloned environment repos (gitignored, populated via ct settings pull) |
src/control_tower/trajectories/ | Trajectory format handling |
src/control_tower/viewer/ | Client for the viewer's HTTP API (packages/viewer/ is the viewer app) |
src/control_tower/extras/ | Tooling behind ct extras |
src/control_tower/eval/ | The eval engine and the ct run eval and ct run monitor runners |
src/control_tower/protocols/ | The built-in blue-team protocols |
src/control_tower/policies/ | The built-in red-team policies |
src/control_tower/metrics/ | The audit scorer and the usefulness, safety, audit budget and cost metrics |
docs/ | This documentation |
tests/ | Test suite |
apps/docs/ | Docs and environment reference site |