OpenClaw + OmniaKey: one provider, three model families
Add OmniaKey to OpenClaw as one OpenAI-compatible provider and run Claude, GPT, and Gemini by model id — including the allowlist step everyone misses.
OpenClaw is a framework, not a bundled assistant: it gives you the agent loop, tool use, and code editing, but the intelligence comes from whatever provider you wire in. That makes the provider config the most important file you'll touch — and OmniaKey fits it as a single OpenAI-compatible entry that reaches Claude, GPT, and Gemini at once.
Add OmniaKey as a provider
Provider config lives in ~/.openclaw/openclaw.json. Add OmniaKey under models.providers:
{
"models": {
"mode": "merge",
"providers": {
"omniakey": {
"baseUrl": "https://api.omniakey.com/v1",
"apiKey": "your-omniakey-api-key",
"api": "openai-completions",
"models": [
{ "id": "claude-opus-4-8" },
{ "id": "gpt-5.5" },
{ "id": "gemini-3.1-pro-preview" }
]
}
}
}
}
"mode": "merge" tells OpenClaw to add this provider to your existing config instead of replacing it — keep it if you already have providers defined. One OpenAI-compatible provider covers three model families: OmniaKey routes by model id, so claude-opus-4-8, gpt-5.5, and gemini-3.1-pro-preview all run through the same entry.
The step everyone misses: allowlist the model
Defining the provider is only half of it. OpenClaw also needs the model on its allowlist, or you hit the classic model not allowed error even when the key is fine. This goes in the same openclaw.json, alongside the models block — models and agents are sibling top-level keys. Add the fully-qualified ref — provider/model-id — under agents.defaults:
{
"agents": {
"defaults": {
"models": ["omniakey/claude-opus-4-8", "omniakey/gpt-5.5", "omniakey/gemini-3.1-pro-preview"],
"model": "omniakey/claude-opus-4-8"
}
}
}
The request body only carries the model id; the provider/model-id ref is OpenClaw's internal name. Both the provider definition and the allowlist entry are required, and they do different jobs — which is exactly why so many setups define the provider, forget the allowlist, and get stuck.
Verify
openclaw doctor
doctor checks the config file, the provider, the key format, a live connection, and model access. Then openclaw models list should show your OmniaKey models, and you can set the active model to omniakey/gpt-5.5 — or any id you allowlisted — under agents.defaults.
Don't edit ~/.openclaw/agents/main/agent/models.json by hand — it's regenerated from openclaw.json. And if you fat-finger the JSON, you can just ask OpenClaw to fix the file; it's good at spotting a missing comma.
Why route OpenClaw through OmniaKey
One key and one balance for all three families, billed per token with no monthly plan — and no silent substitution. OmniaKey runs the exact model id you allowlisted; if an upstream is down you see the error instead of a quietly swapped "equivalent" that reasons about your codebase differently mid-task.
The coding agents guide covers the other tools.