Demo

An agent API call becomes a verifiable economic event.

Three demo tracks. The first one needs nothing from you. The third is what every signed pilot runs. Each track produces the same four artefacts: verified call, signed receipt, audit entry, offline-verifiable proof bundle.

Track A — No-credential proof / audit demo shipped

We run the gateway locally on your call. Identity → policy → 402 → 200 → signed receipt → audit chain → proof bundle. No external dependencies. No credentials from you. The wow moment lands without anyone touching production.

Track B — Operator-credentialled pilot operator-gated

Real public_x402 facilitator. Real GCS bucket. Real Alertmanager tenant. Real signed-webhook receiver. Each lane is operator-gated — pending real credentials we do not hold. The output is the first real externalOperatorVerified row in the alpha-RC status pack.

Track C — Design-partner pilot bounded

Your sandbox endpoint behind the gateway. Your acceptance criteria. Your operator-credential checklist. The pilot produces a signed dataroom bundle, a customer-acceptance report, and the first real signed receipt issued for a real paid call.

Try the live sandbox

Public sandbox endpoint at https://sandbox.aisthetic.services (live, signed by Let’s Encrypt, fronted by Fly.io; fallback URL https://agenttrust-sandbox.fly.dev). This is the same flow you can run from your own terminal — no SDK, no sign-up, no real funds.

1. Liveness probe

curl -i https://sandbox.aisthetic.services/live
# → 200 OK { "ok": true, "service": "agenttrust-api", ... }

2. Helper session (returns curl steps for the rest)

curl -s https://sandbox.aisthetic.services/v1/sandbox/demo-session
# → bounded JSON, no secrets

3. Unauthenticated call → 401

curl -i -X POST https://sandbox.aisthetic.services/g/demo/data
# → 401 Unauthorized
# identity evidence missing — no wallet, no DID, no VC

4. Identified but unpaid call → 402

curl -i -X POST https://sandbox.aisthetic.services/g/demo/data \
  -H "X-AgentTrust-Wallet-Address: 0xSANDBOX" \
  -H "X-AgentTrust-Signature-Scheme: sandbox" \
  -H "X-AgentTrust-Principal: did:web:sandbox.aisthetic.services"
# → 402 Payment Required
# challenge body bound to the request hash

5. Sandbox paid call → 200 + signed receipt

X-AgentTrust-Sandbox-Proof: demo-paid is a sandbox-only header. It accepts no real settlement, calls no facilitator, touches no chain. Production deploys refuse the header unconditionally.

curl -i -X POST https://sandbox.aisthetic.services/g/demo/data \
  -H "X-AgentTrust-Wallet-Address: 0xSANDBOX" \
  -H "X-AgentTrust-Signature-Scheme: sandbox" \
  -H "X-AgentTrust-Principal: did:web:sandbox.aisthetic.services" \
  -H "X-AgentTrust-Sandbox-Proof: demo-paid"
# → 200 OK
# X-AgentTrust-Receipt-Id: rcp_<placeholder>
# the response body is whatever the demo upstream returns

6. Verify the proof bundle offline

# clone the repo locally, then:
pnpm proof:verify ./bundle-<placeholder>.zip
# → { "verdict": "valid", "hashChainContinuous": true, "signaturesValid": true }

Sample CLI output

$ pnpm pilot:demo:rehearse
{
  "schemaVersion": "agenttrust.demo_rehearsal.v1",
  "externalDependenciesUsed": false,
  "steps": [
    { "name": "401_unauth", "status": "passed" },
    { "name": "402_challenge", "status": "passed" },
    { "name": "200_paid_request", "status": "passed" },
    { "name": "receipt_verify", "status": "passed" },
    { "name": "audit_presence", "status": "passed" },
    { "name": "posture_read", "status": "passed" },
    { "name": "readiness_reference", "status": "passed" }
  ],
  "verdict": "passed"
}