Skip to content

ORBAgents

Autonomy without unlimited authority.

Each agent is an identity with its own budget, API keys and policy. Policies are enforced before money is reserved, inside the same database transaction.

Identities & budgets

An agent is an account with a leash.

Own balance

Owners allocate credits from the organisation (or a parent agent) to an agent. The agent spends only what it holds; owners can reclaim the remainder at any time.

Own keys

Agent-bound API keys carry restricted default scopes and can have their own spend cap and model allowlist. A key can never mint a key broader than itself.

Own status

Active, paused or revoked. Revoking an agent revokes its keys and returns unspent funds to its parent.

Policy templates

Start from a template, then tune.

Template values below are the actual defaults applied by the API. Every field can be overridden per agent.

TemplateDaily capMonthly capPer requestPer paymentIntended for
Conservative$1.00$10.00$0.05$0.10Tight caps, small requests — ideal for new or untrusted agents.
Standard$5.00$50.00$0.25$1.00Balanced defaults for production agents.
Research$20.00$200.00$1.00$2.00Higher ceilings for long-context retrieval and synthesis.
Coding$15.00$150.00$0.75$0.50Room for large code contexts; modest payment limits.
POST /v1/agents
curl https://<your-orbit-host>/v1/agents \
  -H "Authorization: Bearer $ORBIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "research-agent",
    "initial_allocation_usd": "10",
    "policy": { "template": "research" }
  }'

Rule order

  1. Agent and every ancestor must be active (not paused or revoked).
  2. Model, tool and payee allowlists — at every level of the hierarchy.
  3. Per-request maximum (inference and tools) or per-payment maximum (payments).
  4. Daily cap, then monthly cap — each counting the whole subtree's spend in UTC windows.

API-key spend caps and key-level model allowlists are checked first. Daily limits can never exceed monthly limits.

Simulator

See which rule fires.

Spend-policy simulator

Simulator · illustrative inputs
Policy template
Daily cap
$5.00
Monthly cap
$50.00
Per request
$0.25
Per payment
$1.00

Balanced defaults for production agents.

Allowed

Funds would be reserved for the worst-case cost, then settled on actual usage.

  1. Emergency pause (agent and ancestors) — Agent and ancestors are active
  2. Model allowlist — No allowlist set (all models permitted)
  3. Per-request maximum — $0.12 vs limit $0.25
  4. Daily cap (UTC day, includes children) — $4.20 spent + $0.12 vs cap $5.00
  5. Monthly cap (UTC month, includes children) — $18.00 spent + $0.12 vs cap $50.00

Mirrors the server's rule order. Real enforcement happens server-side inside the same database transaction as the reservation, with the agent row locked so concurrent requests cannot jointly exceed a cap.

Hierarchy

Children can only narrow.

Limits are ceilings

A child's daily, monthly, per-request and per-payment limits must be set and be ≤ the parent's. Unset values inherit the parent's.

Allowlists are subsets

A child's model, tool and payee allowlists must be subsets of the parent's. Effective allowlists are intersected down the chain.

Spend rolls up

A parent's caps count everything its descendants spend, so a fleet of children cannot jointly exceed the parent.

Delegation is explicit

An agent can only create children if its owner granted that right, and it can never pass delegation rights on.

Owner-only policy edits

Only a human owner can change an agent's policy. Agents can never edit their own policy or a parent's.

Pause cascades

Pausing an agent blocks it and every descendant until the owner resumes it.

Loop breaker

Stops runaway agents.

Checked on every request from an agent over a rolling 60-second window.

Signal (per minute)Default threshold
Total requests120
Identical requests (same fingerprint)10
Failed requests20

Action: pause (default)

The agent is paused, an audit-log entry and a notification are written, and the request fails with 429 loop_detected. The owner reviews activity and resumes it.

Action: throttle

The request is rejected with 429 rate_limited but the agent stays active.