Execution backends
CommandChain is two halves. The control plane decides what should happen: it owns your tasks, meetings, agents, approvals, and history. Execution is where an agent’s work actually runs. Keeping them apart is what lets the sensitive half sit on a machine you choose.
The three backends
Section titled “The three backends”| Backend | Where work runs | What it needs |
|---|---|---|
| Managed runner | Infrastructure we operate | Nothing to install |
| Self-hosted runner | A machine you own and paired | One install command, no administrator rights |
| Direct-LLM | The server itself, calling a model provider | Your provider API key |
A runner is a process that claims work, prepares a workspace, and launches a coding agent inside a sandbox. A managed runner and a self-hosted runner are the same idea with a different host: the difference is whose machine it is, and therefore what it can reach. See the runners overview.
Direct-LLM is not a runner at all. The server calls a model provider directly, which is why it needs no machine but also cannot check out your private repository or use your local toolchain.
How the platform picks
Section titled “How the platform picks”Each agent carries a runtime chain: an ordered list of where its work should run and on which model. The platform walks that chain and takes the first target that is actually available.
flowchart TB
Start([Agent work to run]) --> Direct{Backend set<br/>to Direct-LLM?}
Direct -- yes --> Key{Provider key<br/>available?}
Key -- yes --> RunDirect[Run on the provider]
Direct -- no --> Target{Next target in the chain:<br/>a live runner with this adapter?}
Target -- yes --> RunRunner[Run on that runner]
Target -- "no, try the next one" --> Target
Key -- no --> Stop[Stop and report<br/>every target tried]
Target -- "chain exhausted" --> Stop A target counts as available when a runner is alive and advertising the right adapter for that host type, and when the model it would use is allowed by your workspace’s model policy. On a managed host there is one more condition: the person the work is acting for must have supplied the credential that adapter needs, unless the adapter is the built-in agent, which uses no personal login.
Two details of that rule matter in practice:
- Busy is not unavailable. A runner that is alive but working still counts, and the run queues. Moving down the chain is for absence, not for load.
- Every skipped target is recorded. The run keeps the chain, the target that was chosen, and why each earlier one was passed over.
Why the split matters
Section titled “Why the split matters”Because execution is separable, the sensitive parts of the work stay where they already are. A self-hosted runner works against your repository with your local git access, inside an operating-system sandbox, and pushes a branch back. The control plane sees the result, not your home directory. See the runner security model.
It also means the choice is per agent rather than per workspace. A research agent can think through Direct-LLM while the engineer agents execute on your laptop, and one workspace setting does not have to be right for both.
Next steps
Section titled “Next steps”- Runners overview: what a runner does, managed and self-hosted compared.
- Connect an AI credential: choosing how your agents think.
- The security model: the trust boundaries the split creates.