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.
Recommended: let the CLI guide the setup
If your inference endpoint is already running, the CLI checks its exact model identity and authenticated streaming contract, confirms that the market class is approved by the live router, creates a dedicated quote signer, and installs the public proposal, private runtime candidate, quote environment, launcher, and operator runbook with safe file modes.
# Put the existing endpoint credential in the environment through your
# shell or secret manager. The CLI accepts the variable name, never the value.
export OMNIOUS_PROVIDER_BACKEND_TOKEN='<router-to-provider credential>'
npx --yes omnious@latest provider preflight
npx --yes omnious@latest provider setup
# After setup, follow the generated README and use:
omnious provider proposal --dir ~/.omnious/providers/<provider-id>
omnious provider status --dir ~/.omnious/providers/<provider-id> --preflight
omnious provider status --dir ~/.omnious/providers/<provider-id> --liveproposal.json belongs in the public provider proposals repository. The runtime allowlist and quote environment contain credentials, stay mode 600, and must never be committed. Proposal approval also does not activate routing: private allowlisting and live quote supply remain separate operator gates.1. Generate a keypair
Quotes are signed price commitments; the signature is what makes them firm and non-repudiable. Generate a dedicated EVM keypair with your approved wallet or secrets-management tooling. 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
Beta provider ingress uses an operator-managed allowlist and signed terms. The allowlist is not collateral and no USDC stake is deposited. Send the operator one JSON entry: your id, address (the quote signer), 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 and funded provider bonds are Proposed with no activation date.
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.
For a self-hosted GPU cluster, use the Omnious Provider Node. Its one installer includes vLLM or SGLang, llm-d prefix-cache-aware routing, this quote signer, metrics, health breakers, scheduled canaries, conformance tests, and optional KEDA scaling.
# DEMO ONLY — this PROVIDER_KEY is a publicly known fixture for the local
# mock market. Never use it outside local mock mode; anyone can sign quotes
# as this provider. In production, use your own key from keygen.
PROVIDER_ID=minimax PROVIDER_KEY=0xe13ebb03ffe22f505ba6773aa0f2cff0a53ce7cfc41b2444902ec07a4d0c7e5d \
MODEL_CLASS=minimax-m3 FLOOR_IN=210000 FLOOR_OUT=680000 \
bun examples/provider-quoter.tsPROVIDER_KEY above is a committed local-mock fixture whose private key is public — it exists so the two-minute demo works with zero setup. Never run it (or the matching examples/providers.example.json allowlist) against anything but a local mock router: anyone can sign quotes as that provider. Your real quoter signs with the key from keygen in step 1.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.
Experimental capabilities are explicit opt-ins. Set CONTEXT_CACHE_TTL_S to the Passport cache horizon you can honor and DELTA_HANDOFF=1 only after validating structured handoffs. Both default off. Speculative attempts remain off unless you set SPECULATIVE=1; when enabled,SPECULATIVE_CANCEL_MS declares your pre-output cancellation window. The V1 mainnet router keeps all of these gates dark; use a separate private-validation quoter identity for soak testing.
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 minimax-m3) 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.
Tool calling is a deployment capability, not a catalog label. Before quoting, verify that the exact backend accepts both tool_choice: "auto"and a forced named function. Provider Node's versioned TOOL_PROFILE=auto resolver maps reviewed model families to their vLLM parser, then normalizes every result to the OpenAI tools shape. Unknown families require an explicit reviewed override. The same checks run before the quote signer starts. Every approved class also has an explicit managed and self-hosted disposition in the generated model tool-profile catalogue.
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
- Expose an OpenAI- or Anthropic-compatible endpoint the router can reach.
- Create a dedicated EVM signing key, then send the operator your allowlist entry.
- Pick your model class from the live book and set price floors in USDC base units per 1M tokens.
- Pass ordinary, streaming, automatic-tool, and forced-tool conformance through the router-facing backend URL.
- Start the quoter sidecar and confirm your quotes land: your class's depth ticks up within seconds.
- 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.
- router/examples/provider-quoter.ts the reference quoter sidecar: utilization-curve pricing, signed quotes every 2s
- router/src/api/protocol.ts OpenAI and Anthropic dialect translation at the dispatch boundary