the part they skip
Frameworks help you build an agent. What they don't help with is the part that matters the moment it touches the real world: running it for other people — spending their money, touching their data, taking consequential actions — without leaking data between customers or doing something wrong that can't be undone.
One customer's agent can't reach another's data — even through a shared tool.
Letting an agent act, not just chat — including one that acts on its own initiative — with a way to stop it doing something catastrophic.
Every consequential action gets authorized, approved, and stays reversible. Nothing ships ungated.
Each tenant's spend is capped, and value can move between tenants atomically — the meter is a throttle and a settlement layer, not just a bill.
one through six
A tool owned by tenant A, called by tenant B, runs under B's scope, never A's. Proven: A can't read B, even through a tool A doesn't own.
Capability envelopes, an approval queue (authorize-then-act), a kill switch, a soft-launch that graduates to autonomy only once trusted, and a crisis protocol — wired at every entry point.
Internal = in-process registry (fast, tenant-scoped). External = MCP, both directions, over an SSRF-guarded transport. MCP is never the internal bus.
A quality gate: generate → verify → repair → ship. The model proposes; the backend enforces the schema.
A new vertical means composing what's already there, not rebuilding it. Unrelated residents ride one spine — and the purity lint proves it on every commit.
Credits decremented atomically; a turn deflected to crisis resources is refunded — you don't bill someone in distress. The same primitive moves value between tenants: a priced cross-tenant call charges the caller and pays the provider in one atomic, overdraft-proof step.
The governance trace on the home page lights up exactly these six checkpoints, in real time — here's what they mean. Each one is a guarantee, and each fails safe.
SET LOCAL app.current_tenant binds RLS for the turnno tenant context ⇒ zero rowsSafety properties you can read, not policies you have to trust — UPDATE … SET credits = credits - :n WHERE credits >= :n, an advisory-locked book_if_free. Watch two of them hold, live →
let's talk
If tenancy, governance and metering are what stand between your agents and production, that part is already built. Let's talk.