The worker
An agent that can be given a piece of work by something that knows nothing about it. Seven exchanges: whether it is free, what a job would take, whether it will take it, how it is going, what came of it, what it is blocked on, and stop.
This is an interface, not a role. Implementing it says nothing about what else the agent does, and an agent can implement it alongside anything.
1. Why this exists
A fleet is rarely built from one thing. The agents in it come from different vendors, run on different harnesses, and were mostly not written to be managed at all. Something still has to hand them work and find out how it is going.
Without a published contract the managing side has to know about every agent it manages, one special case at a time, and adding an agent means changing the manager. With one, the managing side knows nothing about the agents and does not need to.
Roles could not carry this. A role is a whole job with a closed scope, and an agent holds at most one, so almost no agent will ever hold any. Nearly any agent could answer what a piece of work would cost. That gap is the reason interfaces exist.
2. The exchanges
The set is closed. Anything outside it is refused, with the reason named.
- Are you free? Whether it can take work now, and optionally when that changes. The answer comes from the agent itself. A process being up is not the same as an agent being able to answer, and letting anything other than the agent answer this reports on the wrong thing.
- What would this take? Given a description of work: whether it can do it, what it would cost, how long it would take. It distinguishes "I cannot do this" from "I cannot tell whether I can do this". An estimate is not a commitment unless the answer says it is, and the answer says which it is.
- Will you take it? Accept or refuse, and a refusal names its reason. Accepting means owning that job until it delivers, fails, or is told to stop.
- How is it going? For a job it accepted: working, blocked, done or failed, plus one line. It answers even when nothing has happened, and never reports progress it cannot point at. Asked about a job it never accepted, it says so rather than inventing one.
- What came of it? The result, or the failure stated plainly. Either is an answer. Only silence is not.
- What do you need? Raising a block: what it needs and who from. This exists because a stuck agent and a slow agent look identical from outside, and only the agent knows which it is.
- Stop. Accepting cancellation and saying what condition the work is in. It does not keep working on a cancelled job.
3. The contract
- It does not price the deal. It says what work costs it. What that work is sold for is not its business, and the two numbers answer to different parties.
- It is never held to terms it was not given. It honours the constraints handed to it with the job, and cannot be held to one it was never told. Making sure it is always told is what the manager interface is for.
- An accepted job is never dropped silently. Where it cannot continue, it says so. Going quiet is the failure this interface exists to eliminate.
- A second job is declared, not absorbed. Asked to take work while holding other work, it says whether it can run both. Accepting quietly and then doing them one after another is how a stated turnaround becomes untrue.
- Refusal is specific. An exchange outside what it does is refused with the reason, never answered with a guess. An invented estimate is worse than no estimate, because it will be planned against.
- No document. This interface defines no signed statement and no signature tag. Everything here is a live exchange between two parties that already know each other. Where a durable record of what was agreed matters, the directing side owes it, and that belongs to the job holding the manager interface rather than to either interface.
4. Conformance
Behavioural, like the front desk. An interface is only its exchanges, so the test is to ask them and check the answers.
A harness checks that being free is answered by the agent rather than by something watching it; that work outside what it does draws a refusal rather than an invented estimate; that work it cannot assess draws "I cannot tell" rather than a number; that a status question about a job it never accepted is answered as such; that a job it accepted and then abandoned reports failed rather than nothing; that a cancelled job stops; and that every estimate says whether it is a commitment.
Refusing an exchange with a reason conforms. Not answering does not. There is no partial implementation and no degraded mode.
v0.2.0-draft (2026-08-29): first draft, published with the manager interface because an interface with only one side published is half a contract. Exchange 1 and rule 3 are the load-bearing pair: they are what separates an agent that is busy from one that has quietly died, which is the distinction every managing side actually needs and the one nothing outside the agent can make.