BoundedTry the demo

How it works

The agent can only propose. The contract decides, in a fixed order, and records every decision.

Tiers

Four outcomes

  • Auto

    Within your limits and sent to an approved destination. Executes instantly.

  • Ask

    Valid destination, but over a limit. You approve or reject on your phone.

  • Block

    Breaks a rule. Nothing moves, and the reason is recorded.

  • Circuit breaker

    Too many blocked attempts in a short window. The agent is frozen automatically.

Evaluation order

Checked top to bottom. The first match wins.

  1. 1BlockAgent frozen or revokedFROZEN
  2. 2BlockPolicy expiredEXPIRED
  3. 3BlockDestination not on your allowlistNOT_ALLOWLISTED
  4. 4AskOver per-payment limit, remaining daily limit, or max % of vaultOVER_PER_TX · OVER_DAILY · OVER_VAULT_PCT
  5. 5AutoWithin every limit, approved destinationNONE

Daily limits use a fixed UTC day. Known edge case: an agent can spend up to about 2x the daily limit across midnight.

Circuit breaker

Too many blocks, and the agent freezes itself.

Every blocked proposal is counted in a rolling window. When the count reaches your threshold (default 3 in 10 minutes), the agent is frozen and an AgentFrozen event is recorded. Every later proposal is blocked with reason FROZEN until you unfreeze.

Blocked proposals don't revert. They return a decision and emit an event, so the reason and the counter persist on-chain. Rejected or expired approval requests don't count toward the breaker.

Receipts

Every attempt is recorded, including blocked ones.

Each proposal produces a Proposed event and exactly one Decided event with the tier and reason. Approvals, rejections, freezes and rule changes are events too. The receipt timeline is built only from this log.

Why the AI has no authority

Strict schema at execution. No chat.

The agent sends a fixed proposal: action, token, amount, destination. Unknown fields are rejected. There is no free-text channel that can talk the vault into anything.

Rules are set by you with sliders. Tightening applies instantly. Loosening shows a structured diff and needs your explicit confirmation. An AI may suggest tightening; it can never loosen a rule on its own.

Layer model

Agent, Bounded, Wallet, Rails

  1. Layer 1
    Agent

    Any AI. Untrusted. Can only propose.

  2. Layer 2
    Bounded

    Who may spend, and how much. Enforced by the contract.

  3. Layer 3
    Wallet

    The vault holds the funds you own.

  4. Layer 4
    Rails

    x402, transfers, DeFi. How money actually moves.