OpenClaw setup with Thalam
Install OpenClaw, paste your Thalam API key, and ship in under a minute. Claude, GPT, Gemini, DeepSeek, Qwen, Kling, Sora, and more — through one OpenAI-compatible endpoint. Pay per token. No lock-in.
Setup in three steps
OpenClaw reads its config from ~/.openclaw/openclaw.json (Mac/Linux) or C:\Users\<you>\.openclaw\openclaw.json (Windows).
Sign up
Create a THALAM account and copy your API key from the dashboard. No credit card required.
Merge the snippet
Open openclaw.json (run "openclaw onboard" first if it doesn't exist) and merge the snippet below — the models block at the top level, plus the model.primary and models allowlist under agents.defaults.
Validate + restart
Run "openclaw config validate" to catch JSON errors, then "openclaw gateway restart" so the new provider takes effect.
{
"models": {
"mode": "merge",
"providers": {
"thalam": {
"baseUrl": "https://api.thalam.ai/v1",
"apiKey": "tl-live-...",
"api": "openai-completions",
"models": [
{
"id": "anthropic/claude-sonnet-4.6",
"name": "Claude Sonnet 4.6 (THALAM)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0.003, "output": 0.015, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 200000,
"maxTokens": 8192
},
{
"id": "deepseek/deepseek-v3.2",
"name": "DeepSeek V3.2 (THALAM)",
"reasoning": false,
"input": ["text"],
"cost": { "input": 0.00027, "output": 0.0011, "cacheRead": 0, "cacheWrite": 0 },
"contextWindow": 128000,
"maxTokens": 8192
}
]
}
}
},
"agents": {
"defaults": {
"model": {
"primary": "thalam/anthropic/claude-sonnet-4.6"
},
"models": {
"thalam/anthropic/claude-sonnet-4.6": {},
"thalam/deepseek/deepseek-v3.2": {}
}
}
}
}Replace tl-live-... with your real key. To add more models, append to both the provider's models array AND the agents.defaults.models allowlist — OpenClaw refuses to route to undeclared models. Browse available ids on the (format is <provider>/<model>; the OpenClaw-side prefix is thalam/).
Verify it works
Open a new OpenClaw session and ask it anything. If you see a streamed reply, you're done. To confirm the model is being routed through THALAM, ask:
Common gotchas
Three issues that account for almost every "it validated but nothing happens" report.
"Unrecognized key: name" on validate
You wrote a name field at the provider level (older docs showed it). The current schema doesn't accept it — the display name lives inside each entry of the models array, not on the provider. Match the snippet above exactly.
Model missing from picker / silent refusal
You added the model to models.providers.thalam.models but forgot the matching entry in agents.defaults.models. OpenClaw enforces a per-agent allowlist — both lists need the model id.
"[assistant turn failed]" with no detail
The Control UI hides upstream errors. Run openclaw logs --follow in another terminal and retry — the real error (auth, network, schema) appears in the log. After any config change run openclaw gateway restart; provider changes don't hot-reload.
Want smarter routing? Install the skill.
The official THALAM SKILL.md teaches OpenClaw to auto-pick the best model for each task — flagship for hard reasoning, cheap open-weight for high volume, coding-tuned for engineering, vision-capable for OCR. Drop it into your skills folder and let the agent decide.
Why use THALAM with OpenClaw
OpenClaw runs locally; the bottleneck is which models you can reach. THALAM removes that.
Every leading model, one key
Claude, GPT, Gemini, DeepSeek, Qwen, Kimi, Llama, Mistral, GLM, MiniMax — text, coding, vision, image, video, speech, music, embeddings. Switch by changing one string.
Pick the right model for each call
Route high-volume traffic to open-weight models like Qwen3 or DeepSeek V3.2, and reserve Claude or GPT for the calls that actually need them. Same key, same SDK.
No lock-in, no minimums
Pay only for what you use. Drop THALAM and switch back to provider-direct any time. The OpenClaw config stays the same — just point baseUrl elsewhere.
Multimodal in one place
OpenClaw tasks aren't just chat. Generate images with FLUX or Imagen, video with Veo or Sora, voice with ElevenLabs, transcription with Whisper — all from the same OpenAI-compatible endpoint.
Frequently asked questions
What developers ask before wiring Thalam into OpenClaw.
Do I need an API key to use OpenClaw with Thalam?
?
Yes. OpenClaw runs locally, but the models live behind a provider. To route OpenClaw through Thalam, create a free Thalam account, copy your API key from the dashboard, and paste it into the openclaw.json snippet above. No credit card required to create the key — you only pay when you make requests.
How do I install OpenClaw and connect it to Thalam?
?
Three steps. (1) Install OpenClaw with the one-line installer for Mac or Windows. (2) Sign up at thalam.ai and copy your tl-live-... key. (3) Merge the provider block above into ~/.openclaw/openclaw.json, then run openclaw config validate and openclaw gateway restart. Full beginner walkthrough is linked at the top of this page.
Is Thalam OpenAI-compatible?
?
Yes. Thalam exposes an OpenAI-compatible base URL at https://api.thalam.ai/v1, so OpenClaw treats it the same way it treats the OpenAI provider — just with a different baseUrl and apiKey. Every model Thalam routes to (Claude, Gemini, DeepSeek, Qwen and more) is reachable through the same OpenAI Chat Completions interface.
Can I use Thalam with OpenClaw on Mac and Windows?
?
Both. OpenClaw runs natively on macOS and Windows; the openclaw.json config file lives at ~/.openclaw/openclaw.json on Mac and C:\Users\<you>\.openclaw\openclaw.json on Windows. The Thalam provider snippet is identical on both — only the file path differs.
Can I switch models without changing my OpenClaw code?
?
Yes. Add as many model ids as you want to the provider's models array (and the matching agents.defaults.models allowlist), then pick from OpenClaw's model picker at runtime. Switching between Claude, GPT, DeepSeek or any other Thalam-routed model is a config change, not a code change.
Plug in. Pick a model. Ship.
Get an API key in under a minute. No credit card required.