Chutes Provider Setup: OAuth, API Keys, and Models
Configure the Chutes provider for OpenClaw using browser OAuth or API keys, with model discovery and aliases. Useful for users connecting OpenAI-compatible open-source model catalogs.
Read this when
- You want to use Chutes with OpenClaw
- You need the OAuth or API key setup path
- You want the default model, aliases, or discovery behavior
Chutes provides catalogs of open-source models via an API that is OpenAI-compatible. Two auth methods are supported by OpenClaw: browser OAuth and API keys.
| Property | Value |
|---|---|
| Provider | chutes |
| Plugin | official external package (@openclaw/chutes-provider) |
| API | OpenAI-compatible |
| Base URL | https://llm.chutes.ai/v1 |
| Auth | OAuth or API key (see below) |
| Runtime env vars | CHUTES_API_KEY, CHUTES_OAUTH_TOKEN |
An OAuth access token you already hold can be passed in through CHUTES_OAUTH_TOKEN (in CI, for instance), which skips the interactive browser flow described below.
Install plugin
openclaw plugins install @openclaw/chutes-provider
If a Gateway is running, installation is applied to it automatically; if not, it takes effect at the next startup. See Apply changes and inspect.
Getting started
Either path registers the Chutes catalog and sets chutes/zai-org/GLM-5.2-TEE as the default model.
OAuth
Run the OAuth onboarding flow
openclaw onboard --auth-choice chutes
On a local machine OpenClaw starts the browser flow itself. On remote or headless hosts it instead presents a URL plus a redirect-paste flow. OAuth tokens are refreshed automatically by OpenClaw auth profiles.
API key
Get an API key
A key can be created at chutes.ai/app/settings/api-keys.
Run the API key onboarding flow
openclaw onboard --auth-choice chutes-api-key
Discovery behavior
Once Chutes auth is in place, OpenClaw calls GET /v1/models using that credential and adopts the models it discovers, cached per credential for 5 minutes. If the credential is rejected, the catalog fails with an authentication error and no anonymous retry is made. Any other request failure yields an unavailable catalog result rather than a successful static list. A successful response that contains no models remains empty. Discovery for API keys and OAuth goes through this same path.
Pricing is taken from the native Chutes model catalog. Its numeric prompt, completion, and cached-input rates are already expressed in USD per million tokens, not as per-token OpenRouter rates. A model cannot be assumed free just because its price metadata is missing or invalid.
With the default models.mode: "merge", fresh onboarding records the provider and its aliases, and does not copy generated model rows or prices into your config. Live prices can therefore refresh without clobbering model costs you authored explicitly. Under models.mode: "replace" discovery is off, so in that mode onboarding keeps the bundled catalog as an explicit offline seed. Model rows you already configured, along with their prices, survive when provider setup is applied again.
Default aliases
Two convenience aliases are registered by OpenClaw for the Chutes catalog:
| Alias | Target model |
|---|---|
chutes-pro | chutes/deepseek-ai/DeepSeek-V3.2-TEE |
chutes-vision | chutes/moonshotai/Kimi-K2.6-TEE |
Built-in starter catalog
These current starter models ship in the bundled fallback catalog, together with one compatible prior-generation ref that stays selectable yet is hidden from pickers:
| Model ref | Picker status |
|---|---|
chutes/zai-org/GLM-5.2-TEE | Visible |
chutes/deepseek-ai/DeepSeek-V3.2-TEE | Visible |
chutes/moonshotai/Kimi-K2.6-TEE | Visible |
chutes/Qwen/Qwen3.6-27B-TEE | Visible |
chutes/Qwen/Qwen3.5-397B-A17B-TEE | Hidden |
The full list is available by running openclaw models list --all --provider chutes.
For starter models the native endpoint still lists, fallback prices were refreshed from its August 31, 2026 response. A model that is absent keeps the seed snapshot it had before: absence from the feed by itself neither retires a shipped reference nor alters its picker status. Being listed in metadata does not prove your account is able to invoke a model.
Config example
{
agents: {
defaults: {
model: { primary: "chutes/zai-org/GLM-5.2-TEE" },
models: {
"chutes/zai-org/GLM-5.2-TEE": { alias: "Chutes GLM 5.2" },
"chutes/deepseek-ai/DeepSeek-V3.2-TEE": { alias: "Chutes DeepSeek V3.2" },
},
},
},
}
OAuth overrides
The OAuth flow can be customized with these optional environment variables:
| Variable | Purpose |
|---|---|
CHUTES_CLIENT_ID | OAuth client id (prompted if unset) |
CHUTES_CLIENT_SECRET | OAuth client secret |
CHUTES_OAUTH_REDIRECT_URI | Redirect URI (default http://127.0.0.1:1456/oauth-callback) |
CHUTES_OAUTH_SCOPES | Space-separated scopes (default openid profile chutes:invoke) |
Redirect-app requirements and further help are covered in the Chutes OAuth docs.
Notes
- Chutes models get registered as
chutes/<model-id>. - While streaming, Chutes does not report token usage (
supportsUsageInStreaming: false); the usage totals appear only after the stream finishes.
Related
-
Model selection, Provider rules, model refs, and failover behavior.
-
Configuration reference, Full config schema including provider settings.
-
Chutes, Chutes dashboard and API docs.
-
Chutes API keys, Create and manage Chutes API keys.