Docs
Continue
Continue's openai provider names a protocol, not a vendor. Give it an apiBase and Claude, GPT and Gemini are all model entries in the same config.yaml.
One block in ~/.continue/config.yaml: provider: openai with apiBase: https://api.kunavo.com/v1 and your sk-kn-… key. The extension does not need to know which vendor is behind the endpoint.
name: my-config
version: 0.0.1
schema: v1
models:
- name: Claude Sonnet 4.6
provider: openai # the protocol, not the vendor
model: claude-sonnet-4-6
apiBase: https://api.kunavo.com/v1
apiKey: sk-kn-...
roles: [chat, edit, apply]
- name: Haiku (autocomplete)
provider: openai
model: claude-haiku-4-5
apiBase: https://api.kunavo.com/v1
apiKey: sk-kn-...
roles: [autocomplete]provider: openai selects the wire protocol, not OpenAI as a company — this is the field people change first and should leave alone. The /v1 suffix belongs in apiBase; without it Continue appends the route to a path that does not exist and you get a 404.Step by step
- Create a key at
/app/keysand copy it — it is shown once. - Open the Continue sidebar in VS Code or JetBrains and edit the assistant's
config.yaml. - Add the
modelsentries above, replacingsk-kn-…with your key. - Save. Continue reloads the config on save — the model name you gave appears in the model picker.
- Pick it and send a message. Switching models later is a change of picker selection, not of configuration.
Continue's own reference for this is the OpenAI model-provider page.
Verify before you debug the extension
One request settles whether a failure is the endpoint, the key, or the config file. If this returns a JSON list of model ids, the same base URL and key work in Continue.
# Settles whether a failure is the endpoint, the key, or Continue.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."Which models to pick, per role
Every text model on Kunavo is reachable as a model value — the full list is on the models page and comes back live from GET /v1/models. Rates are USD per 1M tokens, input / output.
| Model id | Kunavo in / out | Role it suits |
|---|---|---|
claude-haiku-4-5 | $0.40 / $2.00 | autocomplete — the highest-volume role, where per-token cost dominates |
claude-sonnet-4-6 | $1.20 / $6.00 | chat and edit — the default balance of quality and price |
claude-opus-5 | $2.00 / $10.00 | edit on architecture-level changes |
gpt-5-4 | $1.00 / $6.00 | same key, different family — a second opinion without new credentials |
FAQ
How do I use Continue with an OpenAI-compatible API?
In ~/.continue/config.yaml, add a models entry with provider: openai, the model id, apiKey, and apiBase pointing at the endpoint — for Kunavo that is https://api.kunavo.com/v1. Here provider names the protocol rather than the vendor: it tells Continue to speak the OpenAI wire format to whatever apiBase names, so any endpoint implementing /v1/chat/completions works.
Can Continue use Claude models without an Anthropic key?
Yes, when the models are served over an OpenAI-compatible endpoint. Continue's openai provider sends the model id straight through to apiBase, so a Claude id resolves at the gateway rather than in Continue. On Kunavo the Claude, GPT and Gemini ids sit behind the same key, which means a second model entry rather than a second set of credentials.
Can Continue use a different model for autocomplete than for chat?
Yes, and it is usually worth doing. Each entry in the models list carries a roles field, so a large model can take roles [chat, edit, apply] while a small fast one takes [autocomplete]. Autocomplete fires on keystrokes and is the highest-volume role by a wide margin, so pairing it with the cheapest model changes the monthly bill more than any other single setting.
Why does Continue return a 404 from a custom apiBase?
Usually a base URL missing the /v1 suffix. Continue appends only the route to apiBase, so https://api.kunavo.com sends the request to a path that does not exist while https://api.kunavo.com/v1 resolves correctly. A 401 instead of a 404 means the URL is right and the key is not.