Permissionless · no signup · no approval

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_downward
01

Clone 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.

terminal
git clone github.com/GigaHierz/ETH-global-lisbon-2026
cd ETH-global-lisbon-2026 && pnpm install
check_circleVerify

Workspace resolves and the provider package is present.

pnpm --filter @agentrouter/provider exec node -e "console.log('provider ok')"
02

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.

terminal
cp .env.example .env
# add your funded operator credentials, then:
pnpm setup-hedera
check_circleVerify

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.

03

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.

.env
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.

04

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.

terminal
# 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
check_circleVerify

Your endpoint answers from the outside world.

curl -s https://your-public-url/healthz
05

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.

terminal
pnpm provider   # or `pnpm provider:prod` on a host that injects PORT
check_circleVerify

The boot log prints your stake and registration transactions — open them on Hashscan.

# look for: staked 50 ℏ → escrow  /  registered on HCS registry topic
06

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.

terminal
curl -s https://exchange-production-275a.up.railway.app/providers | jq '.[] | select(.displayName=="Acme Inference")'
check_circleVerify

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.

smart_toy

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.

one-call onboarding
provision_provider({
  name: "Acme Inference",
  model: "llama-3.3-70b-versatile",
  price: 0.08,
  publicUrl: "https://acme-inference.example.com"
})