HomeProductsControl Tower

Every agent,
one place.

One control plane for the agents you run. See which agents exist, where they run, how healthy they say they are and which DeepAgentLabs tools each one has. Collect evidence from Lens, Evals, Sidecar and Chaos, get alerts when a run fails, and approve every change before it happens.

git clone https://github.com/DeepAgentLabs/agenticops-control-tower.git
  • Free and open source (MIT)
  • Self-hosted: data stays on your server
  • 0.8.0 on PyPI · pre-alpha
  • Python 3.10+
FLEET OVERVIEW · EXAMPLELive
48registered agents
  • Healthy 41
  • Degraded 5
  • Unhealthy 2
  • Unknown 0
  • support-triageLangGraphhealthy
  • invoice-agentCrewAIdegraded
  • research-botOpenAI Agents SDKhealthy
  • ops-runnerAutoGenno heartbeat

Recent activity

  1. support-triage sent a heartbeat
  2. invoice-agent reported degraded
  3. ops-runner stopped checking in

Example data, simulated live. Run the console to see your own fleet.

More agents, less visibility.

Teams start with one agent and soon run dozens, across different frameworks, machines and owners. Without one shared list, nobody can answer simple questions quickly.

“Which agents do we even have?”

Agents live in different repos, notebooks and services. There is no single inventory.

“Is anything broken right now?”

A failed run or an agent that stops checking in is often noticed only when a user complains.

“Who approved that change?”

Configuration changes and fixes happen out of band, with no preview, no second person and no record.

Control Tower answers all three from one server: a fleet inventory, live alerts from the evidence your tools already produce, and approval-gated actions with an audit trail.

See every agent, know what needs attention.

Everything below works in 0.8.0. Stable features shipped in 0.2–0.3; experimental ones (0.4–0.8) may still change before 1.0. Screens are from the console that ships with 0.8.0, with sample data.

Console · Fleet inventorysample data
Fleet inventory table: four agents with environment, runtime, reported health, last heartbeat and capability versions

Stable · 0.2

Fleet registry

Agents register with their environment, runtime, framework and the DeepAgentLabs packages they carry, then send heartbeats. Filter by health, environment, or missing and outdated packages.

Console · Fleet healthsample data
Fleet health tiles: total 4, healthy 2, degraded 1, unhealthy 1, unknown 0

Stable · 0.2

Health status

One status per agent: healthy, degraded, unhealthy or unknown. Health is what the agent reports, so evidence and alerts never silently overwrite it.

Console · Capability coveragesample data
Capability coverage: agenticlens installed on 4 agents, agentic-evals and agentic-sidecar on 2, agentic-chaos on 1

Stable · 0.2–0.3

Capability coverage

Which tools each agent reports, the versions in use, and which agents are missing a tool. Set a minimum version to flag outdated installs.

Console · Evidence posturesample data
Evidence posture per producer: fresh, stale and missing counts with native tallies for Lens, Evals, Sidecar and Chaos

Experimental · 0.5

Ecosystem evidence posture

Push native Lens runs, Evals reports, Sidecar decisions and Chaos reports. Tower shows each as fresh, stale or missing per deployment and never recomputes their verdicts.

Console · Live alertssample data
Live alerts: critical lens.failed alerts and warning evidence.missing alerts with acknowledgement state

Experimental · 0.8

Live alerts and incidents

Every 30 seconds Tower turns failed Lens runs, overdue heartbeats and stale or missing evidence into deduplicated alerts, with an incident view and timeline.

CLI · Approved actionscommands
$ agenticops-control-tower actions preview request.json
$ agenticops-control-tower --token "$APPROVER" \
    actions approve ID
$ agenticops-control-tower actions execute ID

Experimental · 0.4–0.7

Approval-gated changes

Preview a configuration change for one agent or a filtered fleet, have a second person approve it with a separate token, then execute it with per-target results and an audit trail.

Your laptop, or your server.

Control Tower is one Python service: the API, the CLI's server mode and the console run together. You host it; nothing is sent to DeepAgentLabs.

On your machine

Available in 0.8.0

Try it locally

Start the server on your laptop and open the console at http://localhost:8000/console/. Read a sample fleet offline first, with no server at all.

Access
Reader, writer and approval tokens you generate. No sign-up.
Where data lives
In memory, or a SQLite file with --database.
Install
From the repository: pip install ".[api]"

Best for: trying Control Tower, and single developers.

On your own server

Available in 0.8.0

Share it with your team

Run the same service on a VM or private network behind HTTPS, so your team opens one console. The repository includes an nginx reverse-proxy template.

Access
Shared deployment tokens. Per-user accounts are planned.
Where data lives
A SQLite file on that server.

Best for: teams that keep agent data on their own infrastructure.

See it before you install it.

The read-only console ships with the server at /console/. No separate build. These screens are from 0.8.0, with sample data.

AgenticOps Console 0.8: health tiles (4 agents: 2 healthy, 1 degraded, 1 unhealthy) and the fleet inventory table

Screens change every few seconds · click one to enlarge it

  • Health
  • Inventory
  • Coverage
  • Evidence
  • Alerts
  • Incidents

Up and running in four steps.

0.8.0 is available on PyPI. The repository includes the sample files used below. Steps 3 and 4 need the api extra, which the install below includes.

  1. 1

    Install

    Clone the repository and install it with the api extra for the server and console.

    git clone https://github.com/DeepAgentLabs/agenticops-control-tower.git && cd agenticops-control-tower && pip install ".[api]"
  2. 2

    Read a sample fleet

    Answer read commands from the bundled snapshot, with no server or token.

    agenticops-control-tower --snapshot examples/sample_fleet_snapshot.json status
  3. 3

    Start the server

    Generate tokens once, then serve the API and console with a SQLite file so data survives restarts.

    agenticops-control-tower serve --database registry.sqlite
  4. 4

    Open the console

    Paste your reader token and select Connect / refresh. Register agents from the CLI or API.

    http://localhost:8000/console/

Full getting-started guide · Step-by-step use cases

Four states, no guesswork.

Every agent reports one simple status, so the fleet view shows straight away where to look first.

  • HealthyReporting no problems.
  • DegradedStill running, but reporting problems. Worth a look.
  • UnhealthyNot working as it should. Needs attention now.
  • UnknownNo status reported yet.

The operate step of the loop.

Each DeepAgentLabs tool keeps its own logic. Control Tower reads their native artifacts, ties them to a deployment and shows them together. None of them is required to run Tower.

  1. DefineAI Operations Spec
  2. ObserveAgenticLens
  3. StressAgentic Chaos
  4. EvaluateAgentic Evals
  5. OperateControl Tower

What Control Tower 0.8.0 reads from each tool

ToolWhat Tower usesTested with
AgenticLensNative runs; a fresh failed run raises an alert and an incident0.10.0
Agentic EvalsReports and release-gate results, never re-scored0.9.0
Agentic SidecarGuard decisions and required escalations0.9.0
Agentic ChaosExperiment reports in evidence posture0.8.0
Agentic MCPInvestigate incidents from an MCP host (local server)0.4.1
Control TowerFleet registry, evidence posture, alerts and approvals0.8.0

From Tower 0.8 compatibility. All producers are optional.

Works with any framework

  • LangGraph
  • CrewAI
  • OpenAI Agents SDK
  • AutoGen
  • LlamaIndex
  • Your own agents

Where it is today.

Control Tower is pre-alpha and built in the open. Here's exactly what works now and what's coming.

Stable (0.2–0.3)

  • Registry, discovery and fleet health
  • HTTP API, CLI and offline snapshots
  • SQLite storage and tokens
  • Read-only console

Experimental (0.4–0.8)

  • Approved configuration and bulk actions
  • Ecosystem evidence posture
  • Approved staging recovery
  • Live alerts and incident views

Install

  • 0.8.0 from the GitHub repository
  • 0.8.0 is also available on PyPI

Planned

  • 0.9: versioned recovery runbooks
  • 1.0: stable capability contract
  • Per-user identities
  • Pull-based evidence collection

Common questions.

Quick answers about cost, data, installing and what works today.

Still have questions? Ask the community on Discord, or open an issue on GitHub. Feature ideas are welcome too.
Is Control Tower free?

Yes. It's open source under the MIT license, like every DeepAgentLabs package.

Does my data leave my machine?

No. Control Tower runs on your own machine or server, and agents and tools push data to it. It doesn't call DeepAgentLabs or fetch anything from your producers.

How do I install the documented version?

Install the published version with pip install "agenticops-control-tower[api]==0.8.0", and clone the repository for example files: see getting started.

Does it fix agents on its own?

No. Detection only raises alerts and opens incidents. Every change and recovery needs a preview and a human approval, and recovery today covers one staging runtime. Reusable runbooks are planned for 0.9.

Is there an AI model inside?

No model is bundled. To investigate an incident with AI, connect a local Agentic MCP server to your own MCP host; Tower supplies the evidence.

Where do I ask questions or report bugs?

Open an issue on GitHub, or ask on Discord.

Run the Control Tower console.

Read the sample fleet in a minute, then start the server and open the console on your own machine.