Go live in six steps
Sell LLM inference on AgentRouter and get paid per request over x402. Your Hedera account is your identity — boot the service and it stakes, registers on the Consensus Service, and enters routing on its own.
smart_toyPrefer an agent? Onboard via our MCP server or Claude skillarrow_downwardClone and install
The provider service is one package in the monorepo. Node 22+ and pnpm (corepack enable) are the only prerequisites — no GPU, no Docker required.
git clone github.com/GigaHierz/ETH-global-lisbon-2026 cd ETH-global-lisbon-2026 && pnpm install
Workspace resolves and the provider package is present.
pnpm --filter @agentrouter/provider exec node -e "console.log('provider ok')"Create your Hedera account
Your provider IS a Hedera account — that's your identity, your payout address, and what holds your stake. There is no signup and no approval step.
cp .env.example .env # add your funded operator credentials, then: pnpm setup-hedera
The account exists and holds testnet HBAR (never print the key itself).
grep -q '^HEDERA_PROVIDER_ID=.\+' .env && echo 'account present' || echo MISSING
infoNo operator account? Get testnet HBAR at portal.hedera.com (1000 ℏ/day), or ask the AgentRouter team to provision one for you.
Describe what you sell
Name, model and price are your listing. Advertise exactly what you serve — the verifier replays sampled prompts against another provider of the same model, and serving something cheaper than advertised costs you your bond.
PROVIDER_NAME="Acme Inference" PROVIDER_MODEL="llama-3.3-70b-versatile" PROVIDER_PRICE=0.08 PROVIDER_PORT=4025 PROVIDER_BACKEND=0g # 0g (default) | groq | canned ZEROG_API_KEY=... # from pc.0g.ai — omit for canned demo answers
infoBackends are pluggable: 0G Compute's decentralized GPU network (recommended) by default, or Groq. Without any key you still run — with deterministic canned answers, so you can try the whole flow in MOCK_MODE first (no keys, no funding) before going live on testnet.
Make yourself publicly reachable
The endpoint you register is the endpoint the exchange calls. This is the single most common mistake: register localhost and you'll show as ○ down forever, because the exchange is probing its own machine.
# any public URL works — VPS, Railway, or a tunnel: cloudflared tunnel --url http://localhost:4025 # put the printed https:// URL in .env: PROVIDER_PUBLIC_URL=https://your-public-url
Your endpoint answers from the outside world.
curl -s https://your-public-url/healthz
Boot — staking and registration are automatic
On first boot the service transfers a 50 ℏ quality bond to escrow and publishes an HCS-14 registration to the Hedera Consensus Service registry topic. Both are idempotent: restarts never double-stake.
pnpm provider # or `pnpm provider:prod` on a host that injects PORT
The boot log prints your stake and registration transactions — open them on Hashscan.
# look for: staked 50 ℏ → escrow / registered on HCS registry topic
Verify you're live in the market
The exchange reads the registry topic from Mirror Node (1–5s lag), probes your /info, and adds you to routing. Cheapest live provider for a model wins each request.
curl -s https://exchange-production-275a.up.railway.app/providers | jq '.[] | select(.displayName=="Acme Inference")'
Your row shows "status": "live" — you are now earning per request.
# use the checker below to confirm without leaving this page
Am I live?
Checks the exchange's registry table for your provider — the same data routing uses. Enter your display name, Hedera account id, or public URL.
Or let an agent do it
The repo ships an MCP server that exposes every step above as agent-callable tools, and a Claude Code skill that walks you through it and verifies each step on-chain. Clone the repo, approve the MCP server once, and ask your agent to onboard you.
provision_provider({
name: "Acme Inference",
model: "llama-3.3-70b-versatile",
price: 0.08,
publicUrl: "https://acme-inference.example.com"
})