Agents

Standing workers with a charter — scoped tools, budgets, and supervision built in.

The agents pillar turns one-off runs into standing capacity. An agent is a named, persistent configuration: a charter (what it is for, in plain language the model is held to), a fixed set of tools with their scopes, a budget in steps and currency per period, and a supervision policy that says which of its actions need approval. Once deployed, an agent works from triggers — a schedule, a webhook, a watched condition in the context graph like 'invoice overdue 30 days' — and every piece of work it does is an ordinary run with an ordinary trace, attributed to the agent. The discipline is in the boundaries. An agent's tool set is closed at deploy time; it cannot acquire capabilities mid-task. Its budget is enforced by the runtime, so a misbehaving agent exhausts its allowance and stops rather than running up a bill. Its charter is evaluated continuously by y0-judge against its actual outputs, and drift — an agent whose actions stop matching its stated purpose — pages a human. Agents can hand work to each other only through declared handoff points, which keeps multi-agent systems debuggable: the trace shows which agent did what under which scope, and 'the agents got confused' decomposes into specific steps you can read.

[ 01 ]Key features

Charter, tools, budget

Every agent declares its purpose, its closed tool set, and its per-period budget at deploy time — none of it is negotiable mid-run.

Trigger-driven

Schedules, webhooks, and watched graph conditions start agent runs — standing capacity without standing compute.

Continuous charter evaluation

y0-judge scores agent outputs against the charter; drift between stated purpose and actual behavior alerts a human.

Declared handoffs

Agents collaborate only through explicit handoff points, so multi-agent traces stay attributable and debuggable.

[ 02 ][ agent config ]

{
  "name": "invoice-chaser",
  "charter": "Recover overdue receivables politely.",
  "tools": ["finance.read", "email.send"],
  "triggers": [{ "watch": "invoice.overdue_days > 30" }],
  "budget": { "steps": 200, "period": "month" },
  "supervision": { "approval": ["email.send"] }
}