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.
Your agents
Bought
- Claude Code
- Cursor
- Codex
- ChatGPT
- OpenClaw
- Grok
- Muse
Built
- LangChain
- OpenAI Agents SDK
- Support bot
- Your own code
Or anything that acts through
- MCP
- your API
Your control room
- Observeevery agent and every attempt, live, each one recorded
- Controlallow, ask a person, or block, before it runs
- Analyzewhat it adds up to, and what is drifting
Claude Code wants to merge into mainwaits for a person
Your systems
Platforms
- GitHub
- Stripe
- Shopify
- QuickBooks
- Salesforce
- AWS
- Kubernetes
- Gmail
- Slack
And anything else
- your own code
- any API
- any platform
- Claude Code wants to merge into main
- Support bot refunds €400
- OpenClaw wants to delete 2,000 emails
- Cursor tries to grant AdministratorAccess
- LangChain agent updates 12 Shopify listings
- Agents SDK bot pays a €480 QuickBooks bill
- Grok bot exports all Salesforce records
- Muse opens a pull request
- Your code wants to close 40 accounts
- ChatGPT posts a summary in #support
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.
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.
- support-agentstripe.refund €400, from WhatsAppallowed
- Claude Codegithub.merge_pull_request into mainwaiting
- Cursoraws.iam.attach_role_policy, AdministratorAccesswaiting
- sales-workflowsalesforce.export_all, no rule for itblocked
- 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.
- k8s.scale_deploymentup to 10 replicas: it runs on its ownallow
- terraform.applywaits for platform-approver, for this exact planask
- k8s.delete_namespacenever, whoever asksblock
- 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.
- 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
- signalsplitting: three refunds just under €500 to one customer in forty minutesowner notified
- 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.
- Normalizeone action, one id
- Decideallow, ask, or block
- Approvebound to this exact action
- Reserveclaimed once
- Executeyour code runs
- Resolveunknown is not failed
- 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.
No rule for it
The action is blocked. Silence is never permission.
deniedArguments changed after sign-off
The old approval is void. A person signs again.
blockedOutcome unknown
No retry until a person resolves it. Nothing runs twice on a guess.
ambiguousGive 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