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 — it's already your API.

That ephemeral proxy evaporates in an hour. To keep it — your API behind Handsel, as a real registered vendor climbing the same ladder — point the CLI at your real origin:

$ npx handsel register --resource https://api.your-service.com

Honest status: your API, behind an ephemeral Handsel proxy, sandbox tier, Stripe-free — gone in an hour. The handsel CLI isn't on npm yet; the sandbox registration it drives 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.