Kilo Code
Kilo Code, Inc.
The open-source coding agent for VS Code, JetBrains and the terminal. A custom provider lists the models your key can call.
Kilo Code connects to Actualyze as a custom provider that speaks the OpenAI Chat Completions API. When you enter the base URL and your API key, Kilo asks Actualyze which models the key can call and lets you pick from the list. The VS Code extension, the JetBrains plugin and the kilo CLI all read the same kilo.jsonc files and the same stored API keys, so a provider you set up in one is available in the others.
Before you start
- An Actualyze API key with the inference scope and read-write permission. Workspace Admins, Members and FinOps Managers who belong to a team can create one: in the Actualyze app, select API Keys under ADMIN in the sidebar (every role that can hold keys sees this page, not only admins), then select Create API Key. Keep the default Read & Write permission. The key is bound to one team and one budget, and that budget is the one your Kilo Code usage draws down.
- A model your key can call that supports tool calling. Kilo's agents read files, run commands and edit code through tool calls.
Install
In VS Code, open the Extensions view, search for Kilo Code, open the dropdown next to Install and choose Install Pre-Release Version. Kilo distributes its current extension on that channel. In a JetBrains IDE, open Settings → Plugins, search for Kilo Code on the Marketplace tab, and click Install.
Install the CLI with npm:
npm install -g @kilocode/cliKilo's installation guide covers Open VSX editors and offline installs.
Connect to Actualyze
In VS Code
- Open Settings (gear icon) and go to the Providers tab.
- Scroll to the bottom and click Custom provider.
- Fill in the dialog with the values in the table below.
- Under Models, check the models you want in the list Kilo fetched from Actualyze, then click Add N model(s). If no list appears, check the base URL and key and click Fetch models.
- Click Submit.
| Field | Value |
|---|---|
| Provider ID | actualyze |
| Display name | Actualyze |
| Provider API | OpenAI Compatible |
| Base URL | https:// |
| API key | <your-actualyze-api-key> |
Turn on a model card's Image toggle if the model accepts images. The dialog doesn't set token limits. It saves the provider to your global config file, which Global Config at the top of Settings opens. Add a limit block to each model there (see below), then click Reload.
In JetBrains
- Open Settings → Tools → Kilo Code → Providers and click Add custom provider. It adds an OpenAI-compatible provider.
- Enter the provider ID, display name, base URL and API key. To read the key from an environment variable instead, put the variable's name in API key environment variable.
- Click Select models to fetch the list from Actualyze and pick models, or type IDs into Model IDs (comma-separated).
- Click Add.
Set token limits in the global kilo.jsonc as below.
With the config file
Use the config file to set up the CLI, and to add token limits in any client. Kilo reads a global file at ~/ and a project file at kilo.jsonc or .kilo/ in the project root.
{
"$schema": "https://app.kilo.ai/config.json",
"model": "actualyze/<model-id>",
"provider": {
"actualyze": {
"npm": "@ai-sdk/openai-compatible",
"name": "Actualyze",
"env": ["ACTUALYZE_API_KEY"],
"options": {
"baseURL": "https://app.actualyze.ai/openai/v1",
},
"models": {
"<model-id>": {
"name": "Display name",
"tool_call": true,
"limit": { "context": 200000, "output": 64000 },
},
},
},
},
}-
envnames the environment variable Kilo reads the key from. Set it before you start Kilo:export ACTUALYZE_API_KEY="<your-actualyze-api-key>" -
If an editor can't see the variable, enter the key in the editor's dialog instead, or run
kilo auth login, choose Other, and enteractualyzeas the provider ID. Either way Kilo keeps the key in its own credential store, not inkilo.jsonc. -
@ai-sdk/speaks Chat Completions. It's also the default whenopenai-compatible npmis left out. -
Each key under
modelsis the model ID Kilo sends: a catalog model ID or Virtual Model slug, exactly as Actualyze lists it. Themodelsetting at the top adds the provider ID in front:actualyze/.<model-id> -
In the config file, Kilo uses the models you list under
models. The automatic fetch happens only in the editor dialogs.
Restart the CLI after editing the file. kilo models actualyze lists the models Kilo loaded for the provider; add --verbose to see each model's limits.
Choose a model
Pick an Actualyze model from Kilo's model picker, or set model in kilo.jsonc. For a one-off CLI run:
kilo run -m actualyze/<model-id> "summarize this repo"Give every Actualyze model a limit block with its real context window and output limit. Kilo reads only model IDs from Actualyze's model list, and its built-in catalog has no entries for a custom provider. Without a limit block, Kilo treats the context window as 0, which turns off conversation compaction. Copy the values from the Actualyze Model Catalog, or ask Actualyze with your key:
curl -s https://app.actualyze.ai/openai/v1/models/<model-id> \
-H "Authorization: Bearer <your-actualyze-api-key>"Use context_ for limit.context and max_ for limit.output. A null means Actualyze has no figure for that model; use the one the model's provider publishes. Set tool_ to match capabilities.tool_. The response's modalities object has the shape Kilo expects, so copy it as-is; for a model that accepts images, also add "attachment": true. To have Kilo estimate what a session costs, copy cost too; Actualyze and Kilo both express it in US dollars per million tokens.
Kilo asks for at most 32,000 output tokens per response, even when limit.output is higher, unless you set the KILO_ environment variable.
Note
Kilo recommends its OpenAI Responses provider API ("npm": "@ai-sdk/) for OpenAI models. Actualyze serves the Responses API at the same base URL. GPT-5-family reasoning models need it to use tools and reasoning in the same request. Add "reasoning": true to such a model (the Reasoning toggle in the VS Code dialog) to get Kilo's reasoning-effort choices.
Troubleshooting
Authentication failed. Check the API key above and try again.under Models in the VS Code dialog: Actualyze rejected the key when Kilo asked for the model list. Fix the key, then click Fetch models.- No models in the dialog's list: Kilo couldn't read
https://. Check that the base URL ends inapp.actualyze.ai/ openai/ v1/ models /, then click Fetch models. You can also add model IDs by hand.openai/ v1 - Some models are missing from the list: your key can't call them. An administrator can also hide a catalog model from the list while leaving it callable by name; add that one by ID.
- Long conversations hit the context limit without compacting: the model has no
limitblock. Add one. - A GPT-5-family model fails when it calls tools with reasoning turned on: switch the provider to OpenAI Responses (
"npm": "@ai-sdk/).openai" 402: a spend limit stopped the request before any model ran, so nothing was charged. The message says which limit: usually the key's budget, or the key's own monthly limit.401: the key was rejected. It may be mistyped, revoked or expired, lack the inference scope, or belong to someone who is no longer on the key's team.403: the request was refused. If the message says read-write permission is required, the key is read-only; create a read-write key. Otherwise your team can't use the model you asked for; check its access in the Model Catalog or pick another.402sayingBudget required: the key's budget was deleted, archived or retired, or you no longer have access to it. Create a new key bound to a budget you can use.- Model not found: the model ID doesn't match a catalog model or Virtual Model your workspace serves.
Reference
| Setting | Value |
|---|---|
Provider API / npm | OpenAI Compatible, @ai-sdk/ |
Base URL / options.baseURL | https:// |
| API key | Your Actualyze API key, in the dialog, env or kilo auth login |
| Model | actualyze/ |
limit.context | The model's context_ |
limit.output | The model's max_ |
Requests you cancel mid-stream still draw down the usage they consumed.
For Kilo's own settings, see the OpenAI Compatible provider guide, Custom Models and Settings.