Observe. Control. Analyze.

The control room for your AI agents.

Every agent your company runs, bought or built, in one place. See what each one is doing, decide what it may do before it acts, and keep a record of everything that happened.

Works with Claude Code, Cursor, Codex, ChatGPT, OpenClaw, Grok, Muse, LangChain, the OpenAI Agents SDK, and anything that acts through MCP or your API.

For security and platform teams

  • Every agent in one place, bought or built
  • Every action decided by your policy before it runs
  • Evidence for every one, verifiable without us

For engineering teams

  • One URL for agents you can't modify
  • One line for your own code
  • Nothing rebuilt, redeployed or retrained

Why now

Agents went from answering to acting.

Your support agent refunds a customer. Stripe processes it, the response times out, and the agent retries. Did you just refund them twice?

Agents now refund, merge, deploy and email on their own, across a dozen tools. Nobody has one place to see them, stop them, or prove what they did, so every team that ships agents ends up asking three questions.

  1. 01Which agents are acting on our systems?Including the ones we bought and cannot modify.Observe
  2. 02Should this action be allowed to run?This exact one, with these arguments, right now.Control
  3. 03What happened, and can we prove it?To a customer, to an auditor, to ourselves after an incident.Analyze

Observe.

Every agent at work, in one place, including the ones you can't modify. One gateway in front of your tools; the agent is not rebuilt, redeployed or told.

Every attempt becomes a tamper-evident receipt, blocked ones included. Claude Code, Cursor, ChatGPT, Slack and WhatsApp bots, your own code.

Every attemptall agents
  1. support-agentstripe.refund €400, from WhatsAppallowed
  2. Claude Codegithub.merge_pull_request into mainwaiting
  3. Cursoraws.iam.attach_role_policy, AdministratorAccesswaiting
  4. sales-workflowsalesforce.export_all, no rule for itblocked
  5. ChatGPTgmail.send to 300 recipientswaiting

Control.

Your policy runs before the action does. Allowed actions go through, sensitive ones wait for a person, forbidden ones never leave.

Anything not listed is denied. An approval is bound to the exact action: change one argument after sign-off and the approval is void.

Policydeploy-agent
  1. k8s.scale_deploymentup to 10 replicas: it runs on its ownallow
  2. terraform.applywaits for platform-approver, for this exact planask
  3. k8s.delete_namespacenever, whoever asksblock
  4. anything elseno rule for it; silence is never permissionblock

Analyze.

See what each agent tried, what was allowed, waiting or blocked, and where its behaviour is drifting.

The receipts are yours in every plan, and you can verify them without us.

Gets sharper with use. When your team keeps approving the same kind of action, ctrl proposes a rule for it. You approve the change; nothing changes on its own.

Evidencercpt_01J9KX
agent
support-agent, through the gateway
action
stripe.refund €5,000 to cus_4Ab
decision
held, then approved by p.rao, policy v14
outcome
succeeded, once
chain
prev 3f9c1e…a1 this 8be27d…7d
verify
chain intacton your machine, without us
  1. signalsplitting: three refunds just under €500 to one customer in forty minutesowner notified
  2. proposalyour team approved 47 of 48 refunds under €800 this month: let them run on their own?waits for your yes

How it works

Seven steps between what an agent intends and what happens.

  1. Normalizeone action, one id
  2. Decideallow, ask, or block
  3. Approvebound to this exact action
  4. Reserveclaimed once
  5. Executeyour code runs
  6. Resolveunknown is not failed
  7. Recorda receipt either way
gateway
for agents you can't modify: one MCP URL in front of your tools
decorator
for your own code: one line on the function that acts
adapter
for a framework's SDK, such as the OpenAI Agents SDK

The model guesses.
ctrl does not.

WhenWhat happensresult

No rule for it

The action is blocked. Silence is never permission.

denied

Arguments changed after sign-off

The old approval is void. A person signs again.

blocked

Outcome unknown

No retry until a person resolves it. Nothing runs twice on a guess.

ambiguous

Give your AI agents a control room.

Transparent by design. The engine that decides is open source, so anyone can audit exactly what it does, and every receipt stays in a format you own.

Free for one person on their own machine. Business and Enterprise for teams. See pricing