Kilo Gateway routes requests to many models behind a single OpenAI-compatible endpoint and API key.
| Property | Value |
|---|---|
| Provider | kilocode (alias: kilo) |
| Auth | KILOCODE_API_KEY |
| API | OpenAI-compatible |
| Base URL | https://api.kilo.ai/api/gateway/ |
Install plugin
apus plugins install @openclaw/kilocode-provider
Installation applies to a running Gateway automatically; otherwise it takes effect on the next startup. See Apply changes and inspect.
Setup
Create an account
Go to [app.kilo.ai](https://app.kilo.ai), sign in or create an account, then generate an API key.
Run onboarding
```bash
apus onboard --auth-choice kilocode-api-key
```
Or set the environment variable directly:
```bash
export KILOCODE_API_KEY="<your-kilocode-api-key>" # pragma: allowlist secret
```
Verify the model is available
```bash
apus models list --provider kilocode
```
Onboarding preserves your model entries and leaves generated catalog rows to discovery. With models.mode: "replace", it also writes the built-in catalog because that mode skips discovery.
Default model and catalog
The default model is kilocode/kilo-auto/balanced, Kilo Gateway's balanced smart-routing tier.
Apus does not publish a task-to-upstream-model mapping for it; routing behind
kilo-auto/balanced is owned by Kilo Gateway.
At startup Apus queries GET https://api.kilo.ai/api/gateway/models and combines a nonempty public list
with the static routing entry. The static catalog contains only
kilocode/kilo-auto/balanced (Auto Balanced, input: ["text", "image"], reasoning: true,
contextWindow: 1000000, maxTokens: 65536).
Any model on the gateway is addressable as kilocode/<upstream-id> (for example
kilocode/anthropic/claude-sonnet-4, kilocode/openai/gpt-5.5). Run /models kilocode or
apus models list --provider kilocode to see the full discovered list.
Config example
{
env: { vars: { KILOCODE_API_KEY: "<your-kilocode-api-key>" } }, // pragma: allowlist secret
agents: {
defaults: {
model: { primary: "kilocode/kilo-auto/balanced" },
},
},
}
Behavior notes
Transport and compatibility
Kilo Gateway is OpenRouter-compatible, so it uses the proxy-style OpenAI-compatible request
path rather than native OpenAI request shaping (no `store`, no OpenAI reasoning-effort payload).
- Gemini-backed Kilo refs stay on the proxy-Gemini path: Apus sanitizes Gemini thought
signatures there but does not enable native Gemini replay validation or bootstrap rewrites.
- Requests use a Bearer token built from your API key.
Stream wrapper and reasoning
The Kilo stream wrapper adds an `X-KILOCODE-FEATURE` request header (default `apus`,
override with the `KILOCODE_FEATURE` env var) and normalizes reasoning-effort payloads for
models that support it.
`kilocode/kilo-auto/balanced` and `x-ai/*` refs skip reasoning-effort injection. Use a concrete
model ref such as `kilocode/anthropic/claude-sonnet-4` if you need reasoning support.
Troubleshooting
- If model discovery fails, Apus reports an unavailable catalog refresh. It does not replace the failed request with static rows or turn an empty response into `kilocode/kilo-auto/balanced`.
- Confirm your API key is valid and that your Kilo account has the desired models enabled.
- When Gateway runs as a daemon, ensure `KILOCODE_API_KEY` is available to that process (for example in `~/.apus/.env` or via `env.shellEnv`).
Related
Model selection
Choosing providers, model refs, and failover behavior.
Configuration reference
Full Apus configuration reference.
Kilo Gateway
Kilo Gateway dashboard, API keys, and account management.