These are the production domains. Hosted Control and gateway are still being commissioned; the quickstart requires an enabled workspace.
Obol is pre-alpha. The Rust gateway, Python control plane, Next.js dashboard, and contract pack are implemented and under active integration; the Python MCP worker application is not implemented. Pages here mark target architecture where it differs from what runs today.
What Obol guarantees, and what it proves
This distinction runs through every page in these docs, so it is worth stating before anything else. What Obol guarantees before a call is tier-independent. Default-deny authorization, argument-level conditions, approvals, budgets, and revocation apply identically to every provider, because the gateway sits upstream of all of them. What Obol proves after a call is tier-dependent. A native route executed by the gateway can producegateway_observed evidence. A route executed by a federated catalog broker cannot: its evidence is untrusted or broker_attested, and can never support a verified conclusion. The receipt always names the class.
Who it is for
Teams shipping agents that write to real systems — support automation, ops agents, vertical SaaS agents, and coding agents inside companies that care about audit. They already use MCP and at least two model providers, and they are concerned about tool-call blast radius.What Obol is not
- Not a cheaper inference route. Obol routes tools, not tokens, and takes no spread on either.
- Not an iPaaS or Zapier clone, and not 1,000 maintained connectors. Long-tail coverage is federated from catalog brokers precisely to avoid that treadmill.
- Not a merchant of record. Obol never mints or pools vendor payment keys, and never bills a percentage of your payment volume (ADR-0008).
- Not an agent framework.
- Not an MCP directory. Catalog size is an input to routing, never the pitch.
- Not a guarantee that the model picks the right tool — only that the wrong tool cannot execute.
- Not a claim that every tool call is verified. Verification is tier-dependent and the receipt says so.
The one-URL model
Three surfaces, one credential./v1/chat/completions,/v1/responses,/v1/embeddings,/v1/messages— the OpenAI-compatible and Anthropic Messages surfaces./mcp— Streamable HTTP MCP, with tools namespaced as<connector>.<tool>(for examplestripe.create_refund)./v1/route— advisory capability resolution. It never dispatches, never unwraps a credential, and never reaches a vendor.
ob_test_ or ob_live_ followed by 32 random bytes. Obol stores only the SHA-256 hash; the secret is shown once. A key is scoped to a workspace, models, tools, budget, rate limits, environment, and expiry — and it is the only credential an agent ever holds.
Start here
Quickstart
Mint a key, connect a provider, make a governed call.
Architecture
Two planes, the deployables that ship, and how state reaches the hot path.
Invariants
The nine rules no change may violate, and the ADRs behind them.
Glossary
The vocabulary used exactly this way in code, docs, and UI.
Explore by subject
Gateway
The Rust data plane: LLM routes, MCP sessions, and crate layout.
Policy
CEL for visibility, Cedar for permission, approvals for destructive tools.
Security
Virtual keys, the vault, OAuth, credential brokering, egress control.
Connectors
Native, trusted worker, and federated tiers, and how to add one.
Receipts
Evidence classes, idempotency, webhooks, and verification.
Routing
Capabilities over interchangeable providers, chosen deterministically.
Billing
Usage events, Stripe meters, and budgets that span tokens and tool calls.
Observability
The audit log and gateway telemetry.
Enterprise self-host
Running the stack in your own environment, on the Enterprise plan.