Skip to content

Principles

Runne is built on three commitments. They originate in the Runne Engine runtime philosophy and carry through to the managed API.

Contracts over claims

Clients request work; the platform decides what is allowed and records what actually happened. Nothing is trusted on the caller's word alone:

  • Every API contract is validated (Zod) before it touches state.
  • Money moves only through explicit, auditable ledger operations — never through an implicit side effect.
  • Billing is derived from measured usage, not from what a caller declares.

Verification evidence

"Done" is a claim until it carries evidence. The platform keeps the proof:

  • Every balance change writes a transactions row with a balance_after snapshot — the ledger is the evidence trail.
  • Every request writes a usage_record linking tokens to cost.
  • Every financial operation writes an audit_log entry (credit, debit, reserve, refund, settle, adjust, suspend).

The same standard applies to the product itself: features ship with tests and typecheck evidence, not plausibility.

Capability grants

Dangerous actions require an explicit grant, never ambient authority:

  • API keys carry scopes — a key can only call what it was granted (chat:write, balance:read).
  • Workspaces are isolated — every query re-checks ownership; there is no cross-tenant access by ID.
  • Admin actions require an explicit platform-admin role, read from the database, not a self-asserted claim.

What this means for integrators

  • Request the minimum scope you need, and rotate keys rather than widening them.
  • Treat the ledger as the source of truth for billing disputes — the balance is derived from it.
  • Expect "403 insufficient scope" and "402 insufficient balance" to be enforced boundaries, not bugs.