An agent cannot see the tools it lacks
So it cannot tell “never granted” from “does not exist”. One asked about posting to a site and invented a settings path. Withheld capabilities are now named out loud, as yours to grant, with the real route.
Each agent keeps its own tools, its own permissions and its own way of working — and every one of them reads the same brain. Tell one of them something and you have told all of them.
A named, domain-scoped worker with its own system prompt, its own tool set, its own conversation history and its own model binding — sharing one brain with every other agent, so what one learns makes the rest smarter.
They are data, not code. Presets ship with the app; the ones you make live in your own database. One is pinned as the lead.
run_turn(agent, text, effort) │ ├─ resolve model a stale binding is re-checked and repaired ├─ effort profile Low | Medium | High → every budget below ├─ runtime identity so "what model are you?" is answered truthfully ├─ the date, twice small models ignore mid-context notes ├─ auto-recall the brain, BEFORE the model chooses anything ├─ open tasks an authoritative list, so it cannot invent them ├─ history recent verbatim + a summary of older turns │ ├─ LOOP, up to N rounds ─────────────────────────────────────────────┐ │ stream text emitted as it is written │ │ tool calls? run in PARALLEL, deduped per turn │ │ re-state the plan │ │ nudge if a call failed │ │ two rounds that learn nothing ──► stop, ask it to answer │ │ budget spent ──► one more call, tools withheld │ │ ──────────────────────────────────────────────────────────────────┘ │ ├─ plan check steps never ticked off ──► told ONCE, with tools ├─ auto-learn durable facts → memory + curation └─ TurnResult reply, trace, plan, effort, steps used
| Low | Medium | High | |
|---|---|---|---|
| Tool rounds | 5 | 12 | 24 |
| Parallel calls | 2 | 4 | 6 |
| Verbatim history | 6 | 10 | 16 |
So it cannot tell “never granted” from “does not exist”. One asked about posting to a site and invented a settings path. Withheld capabilities are now named out loud, as yours to grant, with the real route.
Each switch is its own decision — the only shape that can say “allow two of these three”. The agent asks; it never grants, and the endpoint refuses a key the request never named.
A plan was advisory, which meant it could write four steps, do two, and reply in a way that reads identically either way. A turn ending on undone steps is told so — once, with both ways out.
You can walk away mid-reply. The answer lands in the conversation it belongs to, and the rail flags it rather than drawing it somewhere you are not.
An agent can hand a sub-task to another and get the result back. The guards that make that safe live in a context variable: one copy per call, and the chain is left on every exit path — so a delegated turn cannot quietly inherit a permission it was not given, and a crash cannot strand the chain open.
Generated from its id, so a first launch with an empty database still shows a full roster. A saved avatar is an override, never the only source.
And the menu is stored with it — otherwise a capability shipped later is indistinguishable from one you turned down.
Never a second loop. The text appears as it is written, with no parallel machinery to fall out of step.
Free while it is in beta. Bring your own model — or run a local one and never leave the machine.
Join the waitlist→