Quick answer
An agent control plane is the service that decides who may start an agent session, what the agent is told to do next, which credentials it receives, and what record is kept afterwards. It is separate from the machine where commands execute. When a vendor lets you self-host runners, usually only execution moves into your network. Orchestration, transcripts, credentials and inference often stay with the vendor unless the contract and the architecture say otherwise.
The five parts, drawn separately
Vendors say self-hosted, private and in your VPC about different things. The way to compare them is to split a coding agent into five parts and ask where each one lives.
- Execution. The sandbox or runner where the agent clones the repository, runs commands and edits files. This is the data plane.
- Orchestration. The service that accepts a request from Slack, a schedule or a webhook, checks who is asking, starts a session, and drives the agent loop: what to do next, when to stop, where to report. This is the core of the control plane.
- Transcripts. The record of every prompt, tool call, command output and file diff. A transcript of a coding session contains your source code.
- Credentials. Repository tokens, cloud keys, integration tokens and model keys. Somebody stores them and somebody hands them to the session.
- Inference. The model call. Each call carries the code and context the agent is working on to wherever the model runs.
A plain picture of the usual self-hosted runner arrangement:
VENDOR CLOUD YOUR NETWORK
+-----------------------------+ +----------------------+
| Orchestration (agent loop) | <--> | Execution (runner) |
| Transcripts | | repo checkout |
| Credential store | | shell, tests |
| Inference routing --> model | +----------------------+
+-----------------------------+
Moved to you: 1 of 5. Still with the vendor: 4 of 5.
Nothing is wrong with that arrangement if it matches what you need. The problem is assuming that a runner in your VPC means your code stays in your VPC. The runner sends file contents and command output back to the orchestrator, and the orchestrator sends them to a model.
Where each part lives, vendor by vendor
The table records only what each vendor's own pages state. Not documented means the pages we read do not establish it. It does not mean the answer is no, and it does not mean the answer is yes. Ask the vendor.
| Deployment model | Execution | Orchestration | Transcripts | Credentials | Inference |
|---|---|---|---|---|---|
| Nori Enterprise | Your AWS VPC, Azure VNet or on-prem compute | Your network; the full stack deploys with the control plane included | Your data store | Your network, tied to your identity provider (SAML, SCIM, OIDC) | Your own accounts or LLM gateway |
| Nori hosted | Isolated cloud sandbox per session | Dedicated, single-tenant control plane per organization | Dedicated data store per organization | Scoped to org, person or agent | Your own subscription, API keys or LLM gateway |
| Devin with Outposts | Not documented here; see the deployment overview | Cognition retains the agent brain | Not documented | Not documented | Not documented |
| Factory Private deployment (default) | Not documented here | Factory retains hosted control | Not documented | Not documented | Personal custom-model BYOK covers CLI and desktop, not hosted web or mobile |
| Factory airgapped (negotiated) | Not documented here | Negotiated airgap; excludes Slack and cloud sync | Not documented | Not documented | Not documented |
| Cursor self-hosted workers | Your workers execute tools | Cursor retains planning | Not documented | Not documented | Cursor retains inference |
| Claude Code customer-run environments (public beta, Team and Enterprise) | Customer-run environment | Anthropic retains control | Not documented | Not documented | Not documented |
| Warp Factories / Oz | Not documented here | Control plane stays with Warp | Customer storage can hold selected data | Not documented | Claude Code and Codex inference goes directly to the providers; Warp Agent differs |
| Augment Cosmos daemon pools | Customer daemon pools | Not documented | Not documented | Not documented | Daemon LLM calls still use external Augment services |
| OpenHands self-hosted Agent Canvas | Self-hosted (free, MIT) | Self-hosted | Not documented | Not documented | BYOK |
| Coder | Customer-hosted workspaces | Customer-hosted agent control plane | Not documented | Not documented | Not documented |
Three notes on reading it. Self-hosting is not the same as no outbound traffic: Coder's docs describe an outbound usage reporting endpoint, and OpenHands documents that self-hosted Slack needs publicly reachable HTTPS. An airgapped option can cost you features: Factory's negotiated airgap excludes Slack and cloud sync. And a beta label matters: Anthropic's customer-run environments are a public beta as of November 2026.
Why the difference matters
Each part answers a different question from a security or procurement review.
- Execution answers
can the agent reach our internal services?A runner in your network can reach a private package registry or staging database. - Orchestration answers
who can start an agent and tell it what to do?If the vendor runs it, access to your runners is decided by the vendor's service, and an outage or a compromise there affects agents inside your network. - Transcripts answer
where is a copy of our code?Wherever transcripts are stored, your source and command output are stored. - Credentials answer
who holds the keys?A session needs a repository token. If the control plane stores it, the control plane's operator is in your trust boundary. - Inference answers
which third parties see the prompt?If the vendor routes model calls, the vendor sees them. If your gateway routes them, your existing provider agreements apply.
Inference also decides who bills you for tokens. That side is covered in do cloud coding agents mark up token costs.
Questions to send a vendor
Send these in writing and ask for one answer per part. A diagram is better than a sentence.
- In the deployment you are proposing, which hosts run the service that starts sessions and drives the agent loop, and who operates them?
- Where are session transcripts stored, in which account, and who at your company can read them?
- Where are our repository tokens and integration credentials stored, and how do they reach the runner?
- Which endpoint does the runner call for model inference: yours, the provider's, or our gateway?
- Which outbound connections does the deployment need after installation: licensing, usage reporting, updates, telemetry?
- Which features are removed in the most private option you sell: Slack, schedules, sync, web UI?
- Does sign-in use our identity provider through SAML or OIDC, and are users provisioned and removed through SCIM?
If an answer is the runner is in your VPC, the question has not been answered. Ask again about the other four parts.
How Nori draws the line
Nori treats the control plane as part of the product you deploy, not as a service you call.
Enterprise. Nori deploys the full stack, control plane included, into your own AWS VPC or Azure VNet, or on-prem. Orchestration, transcripts, credentials and execution all run on your compute. Sign-in uses your identity provider with SAML, SCIM and OIDC. Inference goes to your own model accounts or your LLM gateway.
Hosted. Every Nori organization gets a dedicated, single-tenant control plane and data store. The service that starts your sessions and the store that keeps their record serve your organization only.
In both shapes the team works the same way. People start sessions from Slack, Discord, the web or the CLI. Cron schedules, reminders and webhooks start the same sessions with run history and approval paths. Org skillsets and shared memories give every session the team's context. Sessions run Jiro, Nori's AI engineering teammate, or any harness: Claude Code, Codex, Gemini CLI, Cursor, OpenCode, Droid, Amp or any ACP agent. Nori never charges for tokens.
A request then looks like this from the inside. An engineer writes @nori rotate the staging API key in billing-api and open a PR in Slack. The control plane in your VPC checks the engineer against your identity provider, starts a sandbox on your compute, hands it that engineer's scoped credentials, sends model calls through your gateway, and stores the transcript in your data store. No part of the session leaves the boundary you already audit, except the model call you already approved.
For the basics of how sessions work, see what a cloud coding agent is. Security leaders can find the longer account on the security leaders page.
Frequently asked questions
What is an agent control plane?
It is the service that decides who may start an agent session, drives what the agent does next, hands out credentials, and keeps the record of what happened. It is separate from the sandbox or runner where the agent's commands actually execute.
If I self-host the runners, does my code stay in my network?
Not necessarily. The runner sends file contents and command output to whatever service drives the agent loop, and that service sends them to a model. If orchestration, transcripts or inference stay with the vendor, copies of your code leave your network during every session.
What is the difference between a control plane and a data plane?
The data plane is where work executes: the sandbox with your repository and shell. The control plane decides what work runs, for whom, with which credentials, and what is recorded. Many self-hosted offers move only the data plane to the customer.
Does Nori deploy its control plane in our cloud?
Yes. For Enterprise, Nori deploys the full stack, control plane included, into your own AWS VPC or Azure VNet, or on-prem, with your identity provider, LLM gateway and compute. Hosted customers get a dedicated, single-tenant control plane and data store per organization.
Which vendors keep the control plane when runners are self-hosted?
As of November 2026, vendor docs state that Cognition retains the agent brain with Devin Outposts, Cursor retains planning and inference with self-hosted workers, Anthropic retains control with customer-run environments, and the control plane stays with Warp. Check each vendor's current pages.
Is inference part of the control plane?
It is best treated separately. Inference is the model call, and it can go through the vendor, directly to a model provider, or through your own gateway. Each route puts a different party in a position to see prompts that contain your code.
Sources
Vendor pages were read on November 11, 2026. Deployment options and beta labels change; check the linked pages before you decide.
- Devin docs: Enterprise deployment overview
- Factory docs: Network and deployment
- Factory docs: Airgapped deployment
- Cursor docs: Self-hosted cloud agent workers
- Claude Code docs: Self-hosted environments
- Warp docs: Factories infrastructure and security
- Warp docs: Harness authentication
- Augment docs: Cosmos daemons
- OpenHands: Pricing
- OpenHands docs: Slack integration
- Coder: Pricing
- Coder docs: Agent licensing and usage