VS Code extensions
Cline, Roo Code and Continue all take the same OpenAI-compatible provider: base URL, key, model ID. Here is where those fields live in each of them.
Quick
All three extensions connect the same way: they understand an "OpenAI-compatible" provider, so they need three values — the address, the key, the model.
# Cline Roo Code Continue → OpenAI-compatible provider
- name: Kumo
provider: openai
apiBase: https://api.kumorouter.com/v1
apiKey: ${KUMO_API_KEY}
model: <model>The base URL ends in /v1 — this is the OpenAI-compatible dialect. Take the model identifier from the catalog: the extension puts it into the request as-is and knows nothing about Kumo's own model list.
Cline and Roo Code
Both extensions keep the provider in their own settings panel inside VS Code, and the key in the editor's secret storage. There is no file here worth hand-editing.
- Check what is installed`code --list-extensions` shows whether Cline, Roo Code, or both are present.
- Open the extension's settingsThe provider screen in its panel.
- API ProviderChoose "OpenAI Compatible".
- Base URL`https://api.kumorouter.com/v1`.
- API KeyYour Kumo key.
- Model IDAn identifier from the catalog.
The extensions carry capability toggles — images, computer use, prompt caching. Leave off the ones the chosen model does not support: a toggle that is on adds fields to the request the model is not expecting. What a model can actually do is on its card in the catalog.
Field placement moves between releases. If the screen does not match the description above, go by what you see: the "provider" and "base URL" pair exists in every release.
Continue
Continue is configured by a file, and the file exists in two formats. Edit the one you already have, and do not create a second.
~/.continue/config.yaml— the current format.~/.continue/config.json— the older format.
The model is added to the list rather than replacing it: whatever is already configured stays beside it.
models:
- name: Kumo
provider: openai
model: <model>
apiBase: https://api.kumorouter.com/v1
apiKey: <your key>
roles: [chat, edit, apply]Add a second entry with another model if you want to switch inside Continue without going back to the file.
The key sits in that file in plain text. Check whether your Continue release can read the key from an environment variable — if it can, use that. A config file in a version-controlled repository should not carry a key.
Verify
You paste the key into the extension itself, while the command below reads it from a shell variable: export the key once in the terminal you verify from.
export KUMO_API_KEY="kumo_sk_..."
curl https://api.kumorouter.com/v1/chat/completions \
-H "Authorization: Bearer $KUMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "<model>",
"max_tokens": 64,
"messages": [{ "role": "user", "content": "reply with OK" }]
}'If curl answers, reload the editor window, pick the added model in the extension's chat, send one message, and find the call in the console log.
When it does not work
- 401 — the key is wrong, or was never saved in the extension's panel.
- 404 — the base URL is missing the
/v1, or the extension appends a path of its own; check the request address in the extension's output. - Model not found — the identifier is not from the catalog.
- Continue ignores your edits — the wrong file is being edited: you have two config formats and only one is read.
- The answer is cut off or refused — a capability toggle is on for a model that lacks it. Turn it off and retry.