Live on Solana devnet · evaluated inside an Arcium MXE

Spending limits for AI agents that nobody can read and anybody can check.

GENKAI keeps an agent's policy encrypted inside an Arcium multi-party computation. The cluster decides allow, deny or escalate without decrypting a single limit and records its verdict on chain. Every decision leaves a signed receipt, and this page checks receipts in your browser with the same code as the genkai command line.

Check your own receipts

Nothing you paste is uploaded. The page's only network requests are account reads to the Solana RPC endpoint you choose.

The deployment

These are the public values a verifier pins. They are read live from devnet and compared with the published manifest.

Reading devnet…

Verify receipts

Load a sample or paste your own. A sealed receipt is checked against a trust anchor and the DecisionRecord the cluster wrote on chain. A plaintext receipt is replayed against its policy.

One receipt, or an array of one agent's receipts in order. You can drop a file here.

A trust anchor (commitment, circuitId, programId, policy) for sealed receipts, or the plaintext policy.

How a decision is made, and proven

  1. The agent asks

    An agent requests a transfer from the GENKAI gateway with its API key. It never supplies its own spending state, the vault or the clock. The gateway's ledger does.

  2. The cluster decides on ciphertext

    The request and the encrypted policy go to an Arcium MXE. The nodes evaluate the policy circuit without any of them seeing a limit, and the Arcium program checks their answer before GENKAI's callback writes it to a DecisionRecord.

  3. The operator signs a receipt

    It binds the policy commitment, the request, the ledger state, the verdict, the DecisionRecord, the previous receipt's hash and, for an allow, the exact transaction that was signed.

  4. Anyone verifies

    Pin the program, the PolicyRecord and the commitment. The signature, the chain and the bound transaction are checked offline, the verdict against the record on chain. The policy itself is never revealed.

Hosted verification API

The same verifier runs behind this site as a public endpoint: no key, no state, on-chain attestations read from devnet. Responses share one envelope, { success, data, error }.

ORIGIN=https://this-site
curl -s $ORIGIN/examples/devnet/gateway/receipts.json -o receipts.json
curl -s $ORIGIN/examples/devnet/trust.json -o trust.json
jq -n --slurpfile r receipts.json --slurpfile t trust.json '{receipts: $r[0], trust: $t[0]}' \
  | curl -s $ORIGIN/v1/chains/verify -H 'content-type: application/json' -d @-
POST /v1/receipts/verify
One receipt with policy or trust, and optionally expectedPreviousHash.
POST /v1/chains/verify
An ordered run of one agent's receipts: up to 100 when checked on chain.
GET /healthz
Liveness, and whether on-chain checks are enabled.