State
Four stores, each doing the job it is genuinely better at — and one of them is optional on purpose.
It is absent unless you configure it, and the graph API answers a plain 503 when it is not there rather than pretending. Relational data stays relational. A new domain graph is ingestion plus queries over the same connector — never a new service — and forcing graph where relational fits is explicitly the wrong call.
Per-call tokens and dollars land in the cost table as the work happens, attributed to the bot that spent them. When you ask what an agent cost you last month, the answer is a query against the system of record — not an estimate reconstructed from logs.
Keep reading
One shell for every app. The left ribbon is drawn from the app you opened, and the URL decides — never a cached preference.
Learn more → Connections308 hand-audited connector specs ship in the repo. Your token is encrypted per user, and the model never sees it.
Learn more → Work routingA request becomes a ticket, a ticket becomes phases, and phases are dispatched to accountable bot identities over durable streams.
Learn more → OperationsThe stack watches itself, files its own incident tickets and does root-cause analysis on them — with the repair still gated on a human.
Learn more → any-bot40 model providers wired in, hosted or local, on your keys — with a containment boundary that fails closed.
Learn more → ReachA bot is an identity, not a location — and an identity can live on the desktop where your browser is already signed in.
Learn more → InteropAgents that are not yours can be given a scoped door into the swarm — and oshal bots can call out through the same protocol.
Learn more → The wallAuth per route, credentials the model never sees, per-user data scoping, and a fail-closed gate between a commit and the public.
Learn more →