Running agents
Table of Contents
Status: target state. This page describes the framework we are building, not the catalogue as it stands today. Where this page and the current catalogue disagree, the catalogue is what runs.
1. Summary
A regulator must reach the system it regulates. This page states how: how an agent is configured, where it may write, what it may do without asking, and what it needs before it can be left running with nobody watching.
The unattended case is the one that tests the framework. An advisory default helps an agent choose well while a person is present and does nothing at three in the morning, so an unattended run depends only on the parts that bind (The Cybernetic Skills Framework). Which parts those are is stated at the end of this document.
For the actor vocabulary and what each role may see and change, see Systems and levels.
2. Detail
The framework is built so that the mode (Methods and the mode) can be started on an agent and left to run. The levels decide what an agent sees, the methods decide what it does in what order, the recipes are what it reaches for, and the independent checkers are how it knows it succeeded. This document states how agents are configured and bounded.
2.1. Grounds for Delegation
Three reasons, and they are the only three.
- Context. Bulk reading belongs in a delegate, with a summary returned to the parent. A parent that reads a hundred files has spent its context on material it will not use again.
- Parallelism. Genuinely independent slices of work run at the same time, one delegate per slice, with the results aggregated.
- Isolation. Work that must not touch the parent's working tree gets its own.
Not a reason: hoping a second attempt on the same model will be better than the first. A re-attempt at identical configuration varies the sampling and nothing else, and where a genuine second perspective is needed the answer is deliberation or an independent checker rather than another agent.
Fan-out has two shapes and they fare differently here. Fan-out for coverage
survives intact, because its value is parallelism and parallelism does not
depend on diversity. Fan-out for competition, several attempts at one brief
judged and grafted, depends on diversity and is therefore weakened rather than
lost. Cross-family diversity is unavailable to this project. Diversity across
models within the family is available, and arena supplies it
(The pstack Collection).
The bound is worth stating wherever competition is used. Models trained together share more priors than models trained apart, so an intra-family bakeoff is a weaker instrument than a cross-family one and a stronger one than a single agent trying twice. Use coverage freely; reach for competition on design questions, and say which of the two you are relying on.
2.2. Isolation
Parallel writers get their own worktree. This is not tidiness: two agents in one tree corrupt each other's work in ways that are hard to attribute afterwards, and the failure surfaces long after the cause.
Each environment carries its own worktree, its own ports, its own
.env, and its own database, provisioned through compass rather than by
hand. compass fleet is the supervisor's view: what every worktree is
doing, which branch, which task, which pull request.
Two shared resources cut across the isolation and must be handled explicitly, because a worktree does not protect them: the git stash stack, which is shared across every worktree in the repository, and any remote the agents push to. Neither is a place for a delegate to improvise.
2.3. Configuration
Five fields, and the model is deliberately not among them.
| Field | Decides |
|---|---|
| System | The role: what it must read first, what it may do |
| Level | Which slice of the catalogue it sees |
| Environment | Which worktree and database it may write to |
| Finish condition | When it is done, checkable by the agent itself |
| Authority | What it may do without asking |
The model is inherited from the session that spawned the agent. Roles are not
routed to model tiers by default: the operator chooses one model and every
delegate uses it, which keeps the configuration small and the behaviour
predictable. Where an instrument depends on diversity, as arena and
interrogate do, the model is named explicitly for that call and the bound on
what it buys is stated.
2.4. Unattended Runs
An agent left running needs four things the attended case can do without.
2.4.1. The Finish Condition
"Work on this for a while" measures motion. "Zero old callers remain and every parser fixture passes" measures a result, and the agent can evaluate it without asking. An unattended run without such a condition does not terminate; it drifts until something interrupts it.
2.4.2. The Authority Boundary
By default, irreversible and outward-facing actions stop and ask: pushing to a shared branch, deploying, deleting data, raising a pull request, anything that leaves the machine. That default is right when a human is present and fatal when one is not — the run stalls at the first gate and the night is wasted.
So authority is granted explicitly and in advance, in the request that starts the run, and it is granted narrowly. "Commit and push to this branch without asking; do not open a pull request; do not touch main" is an authority grant. "Be autonomous" is not, and an agent should treat it as an instruction to proceed on reversible work only.
An agent that reaches the edge of its authority stops and says so. It does not widen its own grant.
2.4.3. The Decision Trail
The human was not watching, so the run must be reconstructable afterwards: what was decided, why, on what evidence, and what was discarded. Prefer evidence a reviewer can re-run — a script, a recipe, a test — over a claim in prose. The trail plus the diff is what makes an unattended result trustworthy rather than merely finished.
2.4.4. Liveness, Failure and Resumption
- Liveness. A silent agent and a stuck agent look identical from outside. Progress must be visible in the trail, so a supervisor can tell one from the other without interrupting.
- Failure. On a genuine dead end an agent stops and explains, and does not thrash. Repeatedly retrying a failing approach burns the budget and buries the cause.
- Resumption. A run may be paused at an atomic boundary and resumed later from its trail and branch, by a different agent. A run that can only be abandoned and restarted is not automation.
2.5. Consequences for the Framework
The parts of this architecture that matter most to an unattended run are the ones that bind rather than advise: the finish condition, the authority boundary, the read-only Systems, the isolation, and the independent checkers. Everything advisory, including the regulatory functions themselves and the default visibility at most levels, helps an agent choose well while someone is watching and does nothing at three in the morning.
2.6. Inventory
The fleet is live state rather than a table. compass fleet reports
what every worktree is currently doing: its branch, its task, its open
pull request and its synchronisation with the trunk. That report is the
inventory, and a written copy of it would be wrong within the hour.
3. See also
- The Cybernetic Skills Framework — which constraints bind, and which advise.
- Skill architecture — the index into the cluster this page belongs to.
- Systems and levels — the roles an agent adopts, and the read-only boundary.
- Methods and the mode — what an unattended agent is running.
- Verification — the checkers an unattended run depends on.
- The pstack Collection —
arena,swarmand the decision trail.