Skip to main content

AI providers

WednesdayAI routes conversations to any supported AI provider. You pick the model; the gateway handles authentication, rotation, retries, and streaming.

Supported providers

Anthropic

Claude — Sonnet, Opus, Haiku. Thinking and prompt caching.

OpenAI

GPT and Codex. API key or Codex subscription OAuth.

Google

Gemini via AI Studio API key or Vertex AI.

Ollama

Run models locally — no API key, full privacy.

OpenRouter

One key, 200+ models, unified billing.

LiteLLM / Bifrost

Route through your own LLM proxy.
This is a curated subset. WednesdayAI ships the pi-ai catalog, which includes many more built-in providers (xAI, Mistral, Groq, Cerebras, GitHub Copilot, Hugging Face, Z.AI, Vercel AI Gateway, Kilo Gateway, and others) plus custom providers via models.providers.

Authentication

Use onboarding to set up a provider interactively:
openclaw onboard
The wizard sets up model and auth for common providers, including Anthropic (API key or claude setup-token) and OpenAI Codex (OAuth). For per-provider auth without the full wizard:
openclaw models auth login --provider <provider>        # OAuth providers
openclaw models auth paste-token --provider anthropic   # paste a setup-token
For non-interactive hosts and CI, set the provider’s environment variable on the gateway host before starting. The daemon reads ~/.openclaw/.env:
echo 'ANTHROPIC_API_KEY=sk-ant-...' >> ~/.openclaw/.env
See Authentication for the full credential lookup order, key rotation, and auth profiles.

Selecting a model

Model references use the provider/model format, set under a nested model object:
{
  agents: {
    defaults: {
      model: {
        primary: "anthropic/claude-sonnet-4-6",
        fallbacks: ["openai/gpt-5.1-codex"],
      },
    },
  },
}
Always use the nested model: { primary: "provider/model" } shape with a provider prefix. A bare string (model: "claude-sonnet-4-6") is deprecated.
If you set agents.defaults.models, it becomes the allowlist for /model and session overrides — a model not in the list is rejected before a reply is generated. Change the model for the current chat with /model:
/model
/model list
/model openai/gpt-5.2

Checking provider status

openclaw models status          # resolved primary, fallbacks, image model, auth overview
openclaw models list            # configured models (--all for full catalog)
openclaw doctor                 # validate credentials and reachability
openclaw models status --check exits non-zero when credentials are missing (1) or expiring (2) — wire it into monitoring.
Related: Authentication · Gateway configuration