Handsel. Live edge-proxy demo
Reference implementation · Stripe test mode · Sandbox tier · Instances evaporate in an hour
Playground

Paste your API's base URL. Watch a real agent climb it.

An unmodified agent client hits your API, gets a 401 it already knows how to answer, provisions a guest grant with zero forms, and calls your tool — all behind an ephemeral Handsel proxy in front of your upstream. Sandbox tier, Stripe-free, gone in an hour.

Nothing is stored. We spin up a throwaway proxy in front of the URL you paste, run one guest climb against it, and evaporate it within an hour. No account, no card, no form — your API, behind Handsel, sandbox tier.

the climb — mint proxy → 401 → guest grant → your real response → co-signed receipt

Idle — paste an https:// API base URL to begin. Every row below is a real observed step, never a mockup.

The hosted playground isn't live yet.

This page runs a real climb against a real service — so when the hosted service is off, it says so rather than faking a run. You can run the whole thing locally against your own core:

# from a clone of the repo
pnpm i
pnpm db:up
PLAYGROUND_ENABLED=true PLAYGROUND_LOCAL_PORTS=true HANDSEL_CORE=http://127.0.0.1:8080 \
  pnpm --filter @handsel/playground dev

Then point this page at it: set data-playground on the demo box to your local service URL. The steps you'd see are exactly the ones in the trace above — mint → 401 → guest grant → your real response → co-signed receipt.

The settlement atomSPEC §14.1

Even the free rung settles — a co-signed receipt, priced at zero.

The guest call your agent just made emits a receipt: signed by the vendor edge, countersigned by the core. The sandbox tier settles it at $0 against a real, nonzero published price — so you see the exact economics you'd run in production, with no money moving and no Stripe in the loop.

Claim this instance to keep it.

That ephemeral proxy evaporates in an hour. Claim it — no form, no redeploy — and it stops evaporating: your API stays behind Handsel at this exact origin, on the same sandbox-tier ladder you just watched.

Run the climb first — the claim uses the one-time token from that run.

Honest status: claiming persists the gateway side — the instance survives beyond the hour and the sweep. To keep the core registration alive too, run $ npx handsel claim --resource this instance's origin — both halves must persist. (Surviving a gateway restart additionally needs the durable store, a follow-up.) The handsel CLI isn't on npm yet; the sandbox registration is the same POST /v1/vendors/register/sandbox the playground calls for you here.

What just happenedSPEC §18.2 · §6.5.1

The playground is the reserved, tightly-fenced playground partition of the spec: short-TTL demo proxies under a wildcard subdomain that can never crowd a real vendor. Each instance is a zero-code @handsel/proxy edge over the URL you pasted, self-registered at the sandbox tier — the first rung of the self-serve vendor ladder — serving the free guest rung only. No trial, no mandate, no settlement above $0. The upstream is classified (http(s) only, no private/loopback/link-local targets, DNS-rebinding pinned), rate-limited, budget-bounded, and evaporated at its TTL.

Your pasted URL is never stored. The proxy holds an in-memory ephemeral signing seed for its lifetime only, forwards raw HTTP (the inbound bearer never reaches your upstream), and is gone within the hour.