For providersLive V1

Onboarding runbook

Keypair, allowlist entry, the quoter sidecar, and the go-live checklist.

A provider is any OpenAI- or Anthropic-compatible endpoint plus a quoting loop. There is no per-vendor integration code in the router, so onboarding is three artifacts: a keypair, an allowlist entry, and a quoter process running next to your backend.

1. Generate a keypair

Quotes are signed price commitments; the signature is what makes them firm and non-repudiable. The CLI generates the EVM keypair: bun cli/omnious.ts keygen. The address goes in the router's allowlist and verifies your quotes; the private key stays with your quoter and signs them. It never authorizes payments, but anyone holding it can commit you to prices, so treat it like an API secret.

2. Get allowlisted

V1 gates provider ingress with an operator-managed allowlist: seed providers join under a signed agreement, which stands in for on-chain staking. Send the operator one JSON entry: your id, address (from keygen), payout_address (where netted USDC lands each epoch), backend_url, bearer_token, and optionally a model_map translating the market's class name to the model id your stack serves. Permissionless onboarding with USDC staking is the V2 path; see staying in good standing for the trust layer that replaces the agreement.

3. Run the quoter sidecar

The reference quoter (examples/provider-quoter.ts, about 80 lines) runs next to your vLLM or SGLang deployment and POSTs a signed standing quote every 2 seconds. The repo also ships a demo-provider container that packages the same loop. Floors are integer USDC base units per 1M tokens: FLOOR_OUT=680000 is $0.68 per 1M output tokens.

PROVIDER_ID=minimax PROVIDER_KEY=0xe13ebb03ffe22f505ba6773aa0f2cff0a53ce7cfc41b2444902ec07a4d0c7e5d \
  MODEL_CLASS=qwen3-72b-instruct FLOOR_IN=210000 FLOOR_OUT=680000 \
  bun examples/provider-quoter.ts

Point BACKEND_METRICSat your engine's Prometheus endpoint and the quoter reprices on a utilization curve automatically, quoting zero capacity above TARGET_UTILIZATION (default 0.85) so you never sell headroom you do not have. Pricing strategy lives on the quoting page. No inbound firewall holes are needed for quoting: the quoter POSTs out to the router, and the router calls your backend_url with your bearer_token when you win.

Serve either protocol

Self-hosted vLLM and SGLang speak OpenAI out of the box; serve the market's class name directly (vLLM: --served-model-name qwen3-72b-instruct) or map it with model_map. Anthropic-dialect backends (a /v1/messages API) plug in by adding "protocol": "anthropic" to the allowlist entry: the router translates the request out and the response back before metering, so customers, metering, and analytics stay dialect-blind.

what makes quotes competeThe shared model_class name. Two providers quoting different class names never meet in an auction. Join an existing class unless you are deliberately opening a new market.

Go-live checklist

  1. Expose an OpenAI- or Anthropic-compatible endpoint the router can reach.
  2. Run keygen, then send the operator your allowlist entry.
  3. Pick your model class from the live book and set price floors in USDC base units per 1M tokens.
  4. Start the quoter sidecar and confirm your quotes land: your class's depth ticks up within seconds.
  5. Watch your win rate and auction feedback (each quote ack carries your recent outcomes with loss reasons), then tune floors and capacity from there.

Want a dry run first? The whole market runs locally with no chain and no GPU: mock backends, mock settlement, fast epochs. See the repository README's two-minute quickstart.