--- summary: "Use Kilo Gateway's unified API to access many models in OpenClaw" title: "Kilo Gateway" read_when: - You want a single API key for many LLMs - You want to run models via Kilo Gateway in OpenClaw --- Kilo Gateway routes requests to many models behind a single OpenAI-compatible endpoint and API key. | Property | Value | | -------- | ---------------------------------- | | Provider | `kilocode` | | Auth | `KILOCODE_API_KEY` | | API | OpenAI-compatible | | Base URL | `https://api.kilo.ai/api/gateway/` | ## Install plugin ```bash openclaw plugins install @openclaw/kilocode-provider openclaw gateway restart ``` ## Setup Go to [app.kilo.ai](https://app.kilo.ai), sign in or create an account, then generate an API key. ```bash openclaw onboard --auth-choice kilocode-api-key ``` Or set the environment variable directly: ```bash export KILOCODE_API_KEY="" # pragma: allowlist secret ``` ```bash openclaw models list --provider kilocode ``` ## Default model and catalog The default model is `kilocode/kilo/auto`, a provider-owned smart-routing model. OpenClaw does not publish a task-to-upstream-model mapping for it; routing behind `kilo/auto` is owned by Kilo Gateway. At startup OpenClaw queries `GET https://api.kilo.ai/api/gateway/models` and merges discovered models ahead of a static fallback catalog. The static fallback contains only `kilocode/kilo/auto` (`Kilo Auto`, `input: ["text", "image"]`, `reasoning: true`, `contextWindow: 1000000`, `maxTokens: 128000`). Any model on the gateway is addressable as `kilocode/` (for example `kilocode/anthropic/claude-sonnet-4`, `kilocode/openai/gpt-5.5`). Run `/models kilocode` or `openclaw models list --provider kilocode` to see the full discovered list. ## Config example ```json5 { env: { KILOCODE_API_KEY: "" }, // pragma: allowlist secret agents: { defaults: { model: { primary: "kilocode/kilo/auto" }, }, }, } ``` ## Behavior notes 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: OpenClaw 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. The Kilo stream wrapper adds an `X-KILOCODE-FEATURE` request header (default `openclaw`, override with the `KILOCODE_FEATURE` env var) and normalizes reasoning-effort payloads for models that support it. `kilocode/kilo/auto` 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. - If model discovery fails at startup, OpenClaw falls back to the static catalog containing `kilocode/kilo/auto`. - 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 `~/.openclaw/.env` or via `env.shellEnv`). ## Related Choosing providers, model refs, and failover behavior. Full OpenClaw configuration reference. Kilo Gateway dashboard, API keys, and account management.