Kilo Code
Kilo's CLI and VS Code extension, on the Anthropic Messages and OpenAI Chat wires. Reaches: the full catalog — Claude and open-weight on the Anthropic-wire provider, the chat catalog and GPT-5.6 on the OpenAI-wire provider (verified end-to-end in a real Kilo CLI session).
…/v1; the VS Code extension uses the bare origin. And in both, register InferenceHub as a custom provider — Kilo's built-in "Anthropic" entry talks to api.anthropic.com and rejects your key with invalid x-api-key.Kilo CLI — store your key
In Kilo, run /connect, choose Other Custom provider, enter the provider id inferencehub, then paste your key. Repeat once with the id inferencehub-oai and the same key — Kilo stores keys per provider id, and the second id unlocks the GPT / chat catalog. The key lives in Kilo's auth store — it does not go in the file below.
Kilo CLI — create ~/.config/kilo/kilo.json
One file, both wires. The base URLs end in /v1 on both providers, and the key stays out of this file:
// ~/.config/kilo/kilo.json (or ./kilo.json in your project){ "$schema": "https://app.kilo.ai/config.json", "model": "inferencehub/sonnet", "provider": { "inferencehub": { "npm": "@ai-sdk/anthropic", "name": "InferenceHub", "options": { "baseURL": "https://app.inferencehub.tech/v1" }, "models": { "sonnet": { "name": "Claude Sonnet 4.6" }, "sonnet-5": { "name": "Claude Sonnet 5" }, "opus": { "name": "Claude Opus 4.8" }, "haiku": { "name": "Claude Haiku 4.5" }, "zai-glm-5.2": { "name": "GLM-5.2" }, "deepseek-3.2": { "name": "DeepSeek 3.2" } } }, "inferencehub-oai": { "npm": "@ai-sdk/openai-compatible", "name": "InferenceHub (OpenAI wire)", "options": { "baseURL": "https://app.inferencehub.tech/v1" }, "models": { "zai-glm-5.2": { "name": "GLM-5.2" }, "moonshotai-kimi-k3": { "name": "Kimi K3" }, "moonshotai-kimi-k2.6": { "name": "Kimi K2.6" }, "gpt-5.6-sol": { "name": "GPT-5.6 Sol" }, "gpt-5.6-terra": { "name": "GPT-5.6 Terra" } } } }}Restart Kilo, open the model picker, and pick a model under the InferenceHub provider. Keep Claude on inferencehub — the Anthropic wire earns the prompt-cache read discount, the OpenAI wire can't. GPT-5.6 and the chat catalog live under InferenceHub (OpenAI wire); open-weight ids work on either. Declare any enabled id the same way — your portal's Connect → Kilo Code tab emits this file with the full list.
On the Kilo VS Code extension instead?
It's a GUI client on a different SDK. Go to Settings → Providers, choose Anthropic, paste your key into Anthropic API Key, tick Use custom base URL, and paste the bare origin — the extension appends /v1/messages, so no /v1:
https://app.inferencehub.techThen pick a Claude model (sonnet / opus / haiku).
Extension — GPT-5.6 or open-weight chat models? (optional)
inferencehub-oai block above — this step is the extension flow.Add a second custom provider: Settings → Providers → Custom provider, Provider API OpenAI Compatible, base URL https://app.inferencehub.tech/v1 (it appends /chat/completions), same key — the model picker auto-fetches the catalog (zai-glm-5.2, gpt-5.6-sol, …) from the gateway's /v1/models.
Troubleshooting
| If you see… | Fix |
|---|---|
invalid x-api-key | You picked Kilo's built-in Anthropic provider. Choose the custom InferenceHub provider you registered instead. |
| 404 on requests | Wrong base URL for the product: the CLI needs https://app.inferencehub.tech/v1, the VS Code extension needs the bare origin https://app.inferencehub.tech. |
gpt-5.6-* not found | GPT-5.6 serves on the InferenceHub (OpenAI wire) provider (inferencehub-oai), not the Anthropic one. If that provider won't authenticate, run /connect again with the id inferencehub-oai. |
| Opus is plan-gated | Premium models need a subscription or sufficient paid balance — top up or switch to Sonnet/Haiku. |