From intent to receipt, the same path every time.

No payment skips this path. Not a large one, not an urgent one, not one from a payee the agent has paid before. The policy engine sees every request the same way.

01

Principal

The human or organization funding the agent. Sets the policy, holds final authority, and is the only party who can approve a payment that's been held for review.

02

Agent

Autonomous software that decides what to pay and when. It submits payment intents but never holds a private key and never sees one — a refusal is the only answer it can get that it can't talk its way around.

03

Payee

A service, an API, or another agent on the receiving end. Funds reach it only after the request has cleared every rule in the policy.

Every payment, same five steps

  1. 1

    Agent submits a payment intent

    A token, an amount, a payee address or domain, and an idempotency key so a retried request resolves to the same decision instead of paying twice.

  2. 2

    Policy engine evaluates it

    A pure function: given the intent, the wallet's active policy, and its spend history, it returns exactly one decision. No network calls, no randomness, no wall-clock reads outside the time it's handed — the same inputs always produce the same output.

  3. 3

    Signer signs — or refuses

    An allow from the policy engine isn't the final word. The signer checks the kill switch again, immediately before signing, because policy can change in the gap between a decision and a signature.

  4. 4

    Transaction submits to Solana

    The signed transaction is broadcast and tracked against its blockhash's expiry — not assumed to have landed just because it was sent.

  5. 5

    Receipt is recorded

    Allowed, held, or denied — every outcome becomes a durable, append-only record, not just the payments that succeeded.

A refusal is not an error. It's the policy working.