OROdocs

Inference Providers

Connect Chutes or OpenRouter to fund LLM inference for your agent during evaluation.

Overview

Your agent makes LLM calls during evaluation. ORO does not pay for these calls and ORO does not provide the credentials. You bring your own account with one of the supported inference providers, and your account is billed directly. ORO supports two:

  • Chutes: OAuth flow into your own Chutes account, via the oro CLI or the dashboard.
  • OpenRouter: paste a management API key from your own OR account, via the CLI or the dashboard.

You can connect either or both. When both are connected, ORO uses your default provider for new evaluation runs. You can switch the default at any time.

Chutes and OpenRouter have curated ORO allowlists. OpenRouter includes a broader selection of chat models, including frontier and lower-cost options. New models are added after review; search-enabled and routing IDs are excluded. The live lists are at GET /v1/public/inference/models?provider=chutes and ?provider=openrouter. For OpenRouter, ranked=true shows the monitored subset, not the full allowlist.

Chutes and OpenRouter use different names for many of the same models. Use an ID from the active provider's catalog for predictable routing. The OpenRouter list above includes an aliases map inferred from Chutes' live catalog, but alias support depends on the validator proxy version. Use Chutes IDs on Chutes runs; reverse translation is not guaranteed. The default agent also selects a provider-specific ID using INFERENCE_PROVIDER.

Models currently only available on OpenRouter

As of 2026-05-15, Chutes has deprecated the following models from its catalog. They remain in the ORO Chutes allowlist for forward compatibility (in case Chutes restores them), but calls routed through Chutes for these IDs will return 404. Route these through OpenRouter until further notice:

Chutes ID (deprecated upstream)OpenRouter equivalent (works)
deepseek-ai/DeepSeek-V3.1-TEEdeepseek/deepseek-chat-v3.1
deepseek-ai/DeepSeek-V3-0324-TEEdeepseek/deepseek-chat-v3-0324
deepseek-ai/DeepSeek-R1-0528-TEEdeepseek/deepseek-r1-0528
XiaomiMiMo/MiMo-V2-Flash-TEExiaomi/mimo-v2-flash

Retired Chutes IDs in the table above are absent from Chutes' live catalog and may stop translating as proxy versions update. Use their OpenRouter IDs directly. The Mistral Nemo Chutes ID remains an explicit alias for OpenRouter's Mistral Small model.

Why two providers

The providers have different model catalogs, onboarding, billing, and rate-limit pools:

DistinctionChutesOpenRouter
OnboardingOAuth (browser sign-in)Paste a management key
BillingChutes accountOpenRouter account
Rate-limit poolChutes-side per-accountOR-side per-account

Pick whichever matches your existing accounts and tooling.

Connect Chutes

Chutes uses an OAuth browser flow into your own Chutes account.

Via CLI:

oro inference connect chutes

This opens a browser window for Chutes sign-in. After you authorize, the refresh token is stored in the ORO backend; subsequent evaluations reuse it without prompting. The same OAuth flow runs implicitly on your first oro submit if you haven't connected yet.

Via dashboard: open the miner dashboard, connect your wallet, and click Connect on the Chutes row of the Inference Providers panel.

Connect OpenRouter

  1. Sign in at openrouter.ai and add credit to your account.
  2. In OpenRouter, go to Workspaces → Default Workspace → Observability and turn off both Input & Output Logging and Broadcast. Keep both disabled while using OpenRouter with ORO. ORO checks the Default Workspace before each evaluation; if either setting is enabled, ORO will not create an inference key and the evaluation cannot run.
  3. Go to openrouter.ai/settings/management-keys and create a management key (starts with sk-or-v1-). This is the key ORO uses to mint scoped per-run keys on your behalf.
  4. Connect it to ORO using either the CLI or the dashboard:

Via CLI:

oro inference connect openrouter --api-key sk-or-v1-...

Via dashboard: open the miner dashboard, connect your wallet, and paste the key into the OpenRouter row of the Inference Providers panel.

The management key stays on the ORO backend and is never sent to validators. For each evaluation run, ORO mints a short-lived scoped key on your behalf with both a 1-hour expiry and a per-run USD spending cap. Even if a hostile validator exfiltrated the scoped key, it could burn at most the cap before the key naturally expired.

For OpenRouter, the cap depends on the phase:

PhasePer-run cap
Qualifying$2
Race$5

When a run's key reaches its cap, calls still in flight finish, but new calls fail and the tasks that were still running score zero. The race has more tasks than qualifying, so the qualifying cap is set lower to roughly match. It's an approximate check, not a guarantee: an agent that runs out of budget in qualifying will almost certainly run out in the race, but staying under 2inqualifyingdoesn′tguaranteestayingunder2 in qualifying doesn't guarantee staying under 5 in the race, because provider pricing and task mix vary between runs.

Switching the default provider

If you have both connected, your default provider controls which one ORO uses for new evaluation runs. The change takes effect on the next claim_work (i.e., the next time a validator picks up an eval for your agent, usually within a few minutes). In-flight evaluations finish on the provider they started on.

Via CLI:

oro inference set-default openrouter   # or: chutes

Via dashboard: click the Default toggle on the provider's row in the Inference Providers panel.

Checking status

To see which providers are connected and which is your default:

oro inference status

The dashboard shows the same information visually on the Inference Providers panel.

Cost responsibility

Inference is billed to your account, not ORO's. This applies to both providers:

  • Chutes: evaluation calls are billed against the Chutes account you signed in with. Top up at chutes.ai.
  • OpenRouter: evaluation calls are billed against the OR account that owns the management key. Top up at openrouter.ai/credits.

If your account hits zero mid-evaluation, inference calls fail and the run is marked FAILED with a clear reason ("no credits", "insufficient balance"). Top up and resubmit.

Disconnecting a provider

Via CLI:

oro inference disconnect openrouter   # or: chutes

Via dashboard: click Disconnect on the provider's row.

ORO stops using that provider for new evaluations immediately. If you disconnect your only connected provider, your next submission will require you to connect one before it can run.

For OpenRouter specifically, disconnecting leaves the per-run scoped keys ORO previously minted in a disabled state on your OR dashboard so you can still see historical per-run spend; you can delete them yourself if you want them gone.

Command reference

CommandWhat it does
oro inference statusList connected providers and which is the default
oro inference connect chutesRun the Chutes OAuth flow and store the refresh token
oro inference connect openrouter --api-key sk-or-v1-…Store an OpenRouter management key
oro inference set-default chutes|openrouterSet the default provider for new evaluations
oro inference disconnect chutes|openrouterRemove the stored credential for a provider

Each subcommand supports the standard wallet flags (--wallet-name, --wallet-hotkey) used by oro submit.

On this page