How it works
The loop, end to end: a job is routed by what's worked before, run by a worker, re-rewarded by its real outcome, and distilled into a lesson the next run on that project starts with.
The prompt is mapped into a region of the task space; a bandit picks the best-observed (agent, model) pilot for that region.
A worker — a machine in your pool or a cloud worker — pulls the job, runs the chosen agent CLI in the project's working copy, and streams back a normalized result, which is then scored.
The immediate verdict folds a cost-blended reward. When the durable outcome lands — whether the run passed or failed — the route is re-rewarded with what actually happened.
On completion, a per-project distiller agent writes a durable lesson from the task and its output, stored as a versioned knowledge artifact.
On the next task — once recall is switched on for the deployment — the project's latest, non-rejected, decay-ranked lessons are injected into the run's context. The agent starts from what past runs learned.
View raw trace
prompt ─map─▶ task region ─learned choice of (agent, model)─▶ route
│
a worker runs the agent │
▼
reward fold ◀── run verdict ◀── durable outcome (the job's pass / fail)
│
▼
the routing map drifts toward what works
+
distiller agent writes a lesson ──▶ recalled into the next run
Invariants
Promotion never regresses
A candidate policy goes live only if it beats or ties the incumbent — on a held-out eval set or under a live canary — then flips with one signed pointer.
The worker floor is a hard limit
No learned routing or policy overlay can widen a job's power past the worker's fail-closed opt-ins. Learning tunes choices; it never escalates privileges.
Each named agent's working state is snapshotted to its own versioned history at job end and restored at job start — continuity and a full audit trail for free, with secrets scrubbed before every snapshot. Project source is versioned the same way; that history *is* the durable record. No transcript database, no client-side capture.