Kilo Code with a custom provider: DeepSeek, Claude or any OpenAI-compatible model

Kilo Code is an open-source coding agent for VS Code, JetBrains and the terminal. It takes any OpenAI-compatible API as a custom provider. We set Zurelay up in the Kilo CLI, which reads the same settings file as the editor extensions, ran tasks on DeepSeek V4.1 Flash and Claude Sonnet 5.5, and noted each error on the way.

· Zurelay guides · Prices update live

In VS Code

  1. Open Kilo Code's settings (the gear) and go to the Providers tab. At the bottom, click Custom provider.
  2. Set Provider ID to zurelay, a display name, and Provider API to OpenAI Compatible.
  3. Enter the base URL, https://api.zurelay.com/v1, and your key. Use Fetch models to load the model list and add the ones you want, then submit.
  4. Pick a Zurelay model in the chat's model menu.

These steps follow Kilo's provider docs. We ran the setup in the Kilo CLI. Kilo's docs say the CLI, VS Code and JetBrains read the same config files, so a provider set up in one shows up in the others.

In the Kilo CLI, or by editing the file

Kilo keeps its settings in ~/.config/kilo/kilo.jsonc, which is %USERPROFILE%\.config\kilo\kilo.jsonc on Windows. This is the file we tested, with Zurelay's current prices per 1M tokens:

~/.config/kilo/kilo.jsonc
{
"$schema": "https://app.kilo.ai/config.json",
"model": "zurelay/deepseek-v4.1-flash",
"small_model": "zurelay/deepseek-v4.1-flash",
"provider": {
"zurelay": {
"npm": "@ai-sdk/openai-compatible",
"name": "Zurelay",
"options": {
"baseURL": "https://api.zurelay.com/v1",
"apiKey": "{env:ZURELAY_API_KEY}"
},
"models": {
"deepseek-v4.1-flash": {
"name": "DeepSeek V4.1 Flash",
"cost": { "input": 0.03, "output": 0.12, "cache_read": 0.00074 }
},
"claude-sonnet-5-5": {
"name": "Claude Sonnet 5.5",
"cost": { "input": 0.79, "output": 3.95, "cache_read": 0.079 }
}
}
}
}
}

Then install the CLI, set the key, and run a task:

terminal
npm install -g @kilocode/cli
export ZURELAY_API_KEY="zr_live_..."
kilo models zurelay
kilo run -m zurelay/claude-sonnet-5-5 "Add a README for this project"
kilo # or the full terminal UI

Three errors we hit

  1. Provider not found: zurelay. Our first config had the base URL and key but no models, expecting Kilo to load them from the API. The CLI doesn't: a provider with no models listed doesn't exist for it. List each model you want.
  2. environment references are not allowed in project config. Moved to .kilo/kilo.jsonc in the project, the same file was refused because of {env:ZURELAY_API_KEY}, and every model then came back Model not found. Kilo won't read secrets from a project's own config, so keep the provider in the global file.
  3. Every task showed $0.00 in kilo stats. Kilo only counts spend for models with a cost, in dollars per 1M tokens. With it, each message's cost in kilo export matched our bill: $0.0000406 against $0.000041. The stats table still rounds to cents, so small tasks show $0.00 there.

What it cost in our test

In a fresh git repo, Kilo's default agent wrote a small Python file on DeepSeek V4.1 Flash, edited it on Claude Sonnet 5.5, then added a line on DeepSeek again. It used its file tools correctly each time. Zurelay billed:

ModelTaskRequestsPrompt tokens (cached)Cost
DeepSeek V4.1 FlashCreate hello.py231,842 (0)$0.00097
Claude Sonnet 5.5Edit hello.py490,282 (44,721)$0.041
DeepSeek V4.1 FlashAdd a comment line348,267 (15,360)$0.001

Every request carries Kilo's instructions and tool definitions, about 16,000 tokens on DeepSeek and 22,000 on Claude, before any of your code. That's why the model's price matters more than the task's size, and why caching helps: on the Claude task, half of all prompt tokens came from the cache.

Things to know

  • Choose OpenAI Compatible even for GPT and Grok models. Kilo's OpenAI Responses option calls OpenAI's Responses API, which Zurelay doesn't serve.
  • Pick models that support tool calling. Kilo's agent reads and edits files through tools, so a model without them can only chat.
  • small_model handles titles and other quick jobs. A cheap model such as DeepSeek V4.1 Flash is enough.
  • npm 11 skipped the CLI's install script for us (install scripts not yet covered by allowScripts). The kilo command worked without it.

Prices for the models you'd run it on

Per 1M tokens, the lab's list price and Zurelay's:

ModelInputOutputOn Zurelay (in / out)
DeepSeek V4.1 Flash$0.30$1.20$0.03 / $0.12
Claude Sonnet 5.5$2.00$10.00$0.79 / $3.95
Claude Opus 5.5$4.00$20.00$1.40 / $7.00
GPT-6.1 Terra$1.00$5.00$0.25 / $1.25
Gemini 3.8 Flash$0.75$3.75$0.22 / $1.10
Kimi K3.1 Pro$2.00$10.00$0.80 / $4.00
GLM-5.3$1.40$4.40$0.38 / $1.21

Tested on November 3, 2026 with the Kilo CLI 7.8.18 on Windows, against Zurelay's API. The short setup is in Kilo Code in the docs. Kilo's own documentation: OpenAI-compatible providers and custom models.

Every model on one OpenAI-compatible key, below list price. Credit from $10, no subscription.Get your API key

FAQ

Questions people ask

Anything else? Ask our team and we’ll answer by email.

How do I add a custom provider in Kilo Code?

Open Kilo Code's settings, go to the Providers tab and click Custom provider at the bottom. Give it a provider ID, choose OpenAI Compatible as the provider API, enter the base URL and API key, add the models you want, and submit.

Where is Kilo Code's config file?

Globally in ~/.config/kilo/kilo.jsonc (%USERPROFILE%\.config\kilo\kilo.jsonc on Windows), and per project in kilo.jsonc or .kilo/kilo.jsonc at the project root. The CLI, VS Code and JetBrains read the same files.

Why does Kilo say Provider not found?

In our test the provider had no models listed. The Kilo CLI only offers a custom provider's models that are listed under models in kilo.jsonc, so add each model ID you want there.

Why does Kilo say environment references are not allowed in project config?

Kilo doesn't resolve {env:VAR} in a project's own config file, so a key reference there is refused. Put the provider with its {env:...} key in the global ~/.config/kilo/kilo.jsonc instead.

Why does Kilo Code show $0.00 for my usage?

Kilo prices a custom provider's models only when they have a cost entry: input, output and cache_read in dollars per 1M tokens. Add it to each model in kilo.jsonc. kilo stats also rounds to cents, so small tasks show $0.00 there.

Does the Kilo CLI use the same settings as the VS Code extension?

Yes. Kilo's docs say the CLI, VS Code and JetBrains read the same JSONC config files, so a provider added in one shows up in the others.

More guides

Stop paying list price.
Start saving today.

Create a key in seconds, point the SDK you already use at Zurelay, and every request costs up to 90% less from the first token.