Coding in the IDE
SovrGPT as a model backend for Kilo Code, Cline, Roo Code, Continue, OpenCode, Qwen Code, goose, Zed, Theia, OpenHands, Cursor and Aider — sovereign EU models right in your editor, with honest figures on latency, telemetry, permissions and limits.
Coding in the IDE
SovrGPT is OpenAI-compatible. Any coding tool that accepts a custom base URL can be switched to European models with it — without your code ever reaching a US provider.
- Base URL:
https://sovrgpt.com/api/v1 - Key: create one under Settings → API keys, scope
chat. Formatsov_… - Auth:
Authorization: Bearer sov_…
Read the cold start section first. Our models run on cards that are switched off when idle. The first request after a pause waits several minutes. That is not a bug, but it is the difference between "it works" and "it is usable day to day" — and many IDE plugins run into a timeout before then.
Which model?
| Model ID | What for | Context | Cold start (measured) |
|---|---|---|---|
qwen3.6-35b-a3b | The default for agentic work — multi-step tasks, tool chains, rewrites across several files | 131k | ~421 s |
stackit-qwen3.6-27b | no cold start — operated by STACKIT in Germany | 131k | 0 s |
tensorx-kimi-k2.7-code | Heavy agentic runs, no cold start | 262k | 0 s |
🔴 Do not use a 32k model for agents — and why no 32k model is listed here any more
Until 2026-09-10 this page recommended
qwen3-coder-next-fp8for "repository-wide rewrites, long tool chains". That was the wrong way round. Since 2026-09-11 the model is out of the catalogue entirely — we would rather tell you why than quietly swap it.Agentic tools consume context before they even begin: Cline's system prompt alone takes about 11,700 tokens, OpenHands states 22,000 as the minimum and 32,768 as the recommendation — exactly the old ceiling, with no headroom at all. On top of that comes the conversation: from roughly turn 30 onwards, each request carries 25,000–35,000 tokens.
At 32k this means permanent compaction — the tool keeps discarding earlier steps to make room. To you this looks like a model that loses the thread or repeats itself. It is the context window, not the model.
⇒ Use one of the three models above. All have 131k or more.
🅿️ Two model IDs have disappeared from this page
qwen3-coder-next-fp8— withdrawn on 2026-09-11. It was overtaken byqwen3.6-35b-a3b: better coding scores at four times the context and a shorter cold start.
deepseek-v4-flash— withdrawn on 2026-09-07. It occupied two H200 cards and did not start: the container aborted while initialising the inference engine and was restarted over and over — and the full time was billed. Four days at the end of August cost 948 USD, against seven answered requests over the tier's entire lifetime. The same model runs astensorx-deepseek-v4-flashwith no cold start.✅ Your configuration will not break. Sending
coder,coding,qwen-coderorqwen3-coderas the model name now gets youqwen3.6-35b-a3b— the role names have been repointed to the successor. ⚠️ If you hardcoded either exact ID, you now get the general default tier — not a coding model. The response says so: it carriesx-sovrgpt-model-substituted. Change the name.
Why
stackit-qwen3.6-27bis on this list: because it answers immediately. (Until 2026-08-18 this said "even though it is the same model as our own tier" — that no longer holds: ourbalancedhas carried Qwen 3.8 27B since then, while STACKIT still runs the previous generation, Qwen 3.6 27B.) For an IDE plugin that is precisely the decisive difference — an editor that stalls for seven minutes on every first question does not get used. The entry only appears if operation at STACKIT is enabled for your organisation.
The cold start is the one thing you need to know
Our GPU workers shut down when idle (scale-to-zero). That keeps the price down but costs
time on the first call. When warm, every tier answers within seconds.
Three ways to deal with it:
- Pick a model without a cold start —
stackit-qwen3.6-27bruns continuously at the operator. - Book keep-warm (warm-up pin in the chat or through the API). The pin places a permanent worker on the endpoint. ⚠️ It is billed by the minute for as long as it runs — that is the price of having the card standing by for you.
- Pre-heat on a schedule — enter your start of work; the lead time is accounted for.
Raise your plugin's timeout. Most clients abort after 60–120 seconds. With a cold worker that is too early, and the failure then looks like "the server is broken" when it is really a timeout that is too short. Where possible: ≥ 900 s.
Setup per tool
Kilo Code — our recommendation
Kilo Code covers VS Code, JetBrains and the command line from a single codebase, is MIT
licensed and ships a German UI. For us it has one practical advantage over all the others: it
fetches the model list itself from GET /v1/models. So you never type a model ID by hand
and cannot pick a stale one.
Settings → Providers → OpenAI Compatible
| Field | Value |
|---|---|
| Base URL | https://sovrgpt.com/api/v1 |
| API Key | sov_… |
| Model | pick from the list — e.g. qwen3.6-35b-a3b |
Alternatively as a file (kilo.jsonc, same format as opencode.json below).
Change two things before the first run: telemetry and the permission settings. Both sections are below and apply to more than just Kilo Code.
Cline / Roo Code (VS Code)
API Provider → OpenAI Compatible
| Field | Value |
|---|---|
| Base URL | https://sovrgpt.com/api/v1 |
| API Key | sov_… |
| Model ID | qwen3.6-35b-a3b |
| Context Window | 131072 |
| Max Output Tokens | 8192 |
You have to set the last two fields by hand in Cline and Roo. Neither detects the context window automatically for a custom provider, so otherwise they work from a default that is wrong. Set it too high and you eventually get
max_tokens must be less than: max_context_length - input_tokens; set it too low and the tool compacts without need, and the agent loses the thread.
Continue
~/.continue/config.yaml:
models:
- name: SovrGPT Coder mini
provider: openai
model: qwen3.6-35b-a3b
apiBase: https://sovrgpt.com/api/v1
apiKey: sov_...
requestOptions:
timeout: 900000 # cold start, see aboveOpenCode
opencode.json:
{
"provider": {
"sovrgpt": {
"npm": "@ai-sdk/openai-compatible",
"options": {
"baseURL": "https://sovrgpt.com/api/v1",
"apiKey": "sov_..."
},
"models": {
"qwen3.6-35b-a3b": { "name": "SovrGPT Coder mini" },
"stackit-qwen3.6-27b": { "name": "SovrGPT · STACKIT (no cold start)" }
}
}
}
}Zed
settings.json:
{
"language_models": {
"openai_compatible": {
"SovrGPT": {
"api_url": "https://sovrgpt.com/api/v1",
"available_models": [
{ "name": "qwen3.6-35b-a3b", "max_tokens": 131072 }
]
}
}
}
}Zed takes the key under Assistant → Configure.
Aider
export OPENAI_API_BASE=https://sovrgpt.com/api/v1
export OPENAI_API_KEY=sov_...
aider --model openai/qwen3.6-35b-a3bAider is the tool that asks the least of us — it needs no tool calling and works with diff formats instead. That is why the 32k tier is deliberately used here: Aider's own docs warn that "above about 25k tokens" most models start to become distracted anyway. If you want to get going today without detours, this is the shortest path.
Qwen Code (command line, German UI)
~/.qwen/.env:
OPENAI_API_KEY=sov_...
OPENAI_BASE_URL=https://sovrgpt.com/api/v1
OPENAI_MODEL=qwen3.6-35b-a3b
QWEN_CODE_LANG=deQWEN_CODE_LANG=de switches the UI to German. 🔴 Qwen Code ships with approval mode auto —
see permissions.
goose
OPENAI_HOST=https://sovrgpt.com
OPENAI_BASE_PATH=api/v1/chat/completions
OPENAI_API_KEY=sov_...Two stumbling blocks, each worth half an hour otherwise.
OPENAI_HOSTis the root only — the path belongs inOPENAI_BASE_PATH; a 404 almost always means something is wrong here. And: 🔴 a key inconfig.yamlis ignored, it has to come from the environment.🔴 goose runs autonomously out of the box — see permissions.
Theia
{
"ai-features.openAiCustom.customOpenAiModels": [
{
"model": "qwen3.6-35b-a3b",
"url": "https://sovrgpt.com/api/v1",
"id": "sovrgpt-coder",
"apiKey": "sov_...",
"developerMessageSettings": "system"
}
]
}OpenHands
Model openai/qwen3.6-35b-a3b, base URL https://sovrgpt.com/api/v1.
OpenHands states 22,000 tokens as the minimum and 32,768 as the recommendation in its own docs, and warns that with the default of 4096 "not even the system prompt will fit". So use the 131k model here and enter the context window along with it.
Cursor
Under Settings → Models, Cursor accepts a custom OpenAI base URL. Enter
https://sovrgpt.com/api/v1 and the sov_… key, and add the model ID by hand.
A limit we are not hiding: Cursor routes part of its functionality (tab completion, indexing) through its own infrastructure, regardless of which model you select in the chat. Chat and agent requests then reach us, the rest do not. Anyone who needs complete sovereignty is better served by Cline, Continue, Zed or OpenCode — there the base URL is the only address the plugin knows.
Claude Code
Not possible today. Claude Code speaks the Anthropic protocol, not the OpenAI protocol. So far we only offer the OpenAI-compatible route, so Claude Code cannot be pointed at SovrGPT. An Anthropic-compatible route is on our list; as long as it does not exist, we say so here rather than writing instructions that do not work.
Turn telemetry off
🔴 This is the section most likely to be skipped in a setup guide — and the most important one for a sovereignty product. Your requests landing with us in Europe helps little if the tool next to them opens its own connection to the outside. Several of the tools listed here do that out of the box.
| Tool | What runs by default | How to turn it off |
|---|---|---|
| Kilo Code | its own telemetry package | disable in settings |
| opencode | sessions can be shared | "share": "disabled" in opencode.json |
| Forge | 🔴 tracker is ON by default | FORGE_TRACKER=false |
| Prime Agent | telemetry | telemetry.enabled = false |
| Cursor | tab completion and indexing run over Cursor's own infrastructure | 🔴 cannot be turned off — see the Cursor box |
⚠️ This list is not exhaustive and the names of these switches change between versions. If it matters legally for you, verify it against your own installation — by looking at the network connections, not just at the settings.
Permissions: the factory defaults are not the safe ones
🔴 Three of the tools listed here write files and run commands without asking, out of the box — until somebody changes the setting:
| Tool | Factory default |
|---|---|
| goose | runs autonomously |
| Qwen Code | approval mode auto |
| Cline (command line) | executes automatically |
For opencode and Kilo Code this can be pinned down cleanly:
{
"permission": {
"*": "ask",
"read": "allow",
"grep": "allow",
"glob": "allow"
},
"share": "disabled"
}Reading, searching and listing files pass through, everything that writes asks first.
For enterprise use: put the same file under
%ProgramData%\opencode(Windows) or/etc/opencode/(Linux/macOS) — there it cannot be overridden by the user. That lets you mandate both the base URL and the permission model without anyone building their own variant.
Thinking level per request
The OpenAI-standard field reasoning_effort (low | medium | high) is accepted at the
top level; in the Python SDK via extra_body.
🆕 Since 2026-08-24 this no longer applies to deepseek-v4-flash alone. Which models
evaluate the control is stated by effort_levels in GET /v1/models — an empty array
means "no effective control". Measured for the coding tiers:
| Model | effort_levels | What happens internally |
|---|---|---|
qwen3.6-35b-a3b | low, medium, high | Token cap thinking_token_budget (128 / 512 / unlimited) — a measured factor of 13.7 in the amount of thinking |
stackit-qwen3.6-27b | (empty) | There it is steered by chat_template_kwargs.enable_thinking |
tensorx-kimi-k2.7-code | (empty) | Always thinks; cannot be switched off |
The route handles the translation into the respective provider parameter — you send low,
medium or high. The remaining tiers still switch the thinking mode through
chat_template_kwargs.enable_thinking.
⚠️ With high, raise max_tokens too: the chain of thought counts against the answer
budget. Measured on qwen3.6-35b-a3b — with an unlimited thinking budget and 2000
max_tokens, the answer text was empty.
📌 An empty
effort_levelsdoes not mean "cannot think". It means "we measured no effective graded control for this model". The binary thinking toggle (chat_template_kwargs.enable_thinking) may still work — and on some models it does not either. On the withdrawnqwen3-coder-next-fp8exactly that was measured: attemperature: 0the answers with and withoutenable_thinkingwere byte-identical, because its chat template never evaluated the field. Rely oneffort_levels, not on the model family.
Context and memory: prom.codes
A sovereign model is one half. The other half is what the agent knows about your repository — and most context and memory services for coding agents run outside Europe.
prom.codes closes exactly that gap: MCP servers for code context (semantic search, symbol graph, references) and agent memory (durable facts, decisions and conventions across sessions), hosted in Europe. It is a standalone platform from the same house as SovrGPT.
Together this gives you a toolkit that does not leave the border:
| Part | Who provides it |
|---|---|
| Model (completion, agent, refactor) | SovrGPT — EU data centres |
| Code context and memory | prom.codes — EU-hosted |
| Editor | your machine |
The integration runs over MCP and is therefore independent of us — both work on their own as well. Setup: see prom.codes.
What is still missing
We keep this in the open rather than leaving it out of the instructions:
- No Anthropic-compatible route ⇒ Claude Code cannot be connected.
- No Responses API (
/v1/responses) ⇒ Codex CLI cannot be connected; it acceptswire_api = "responses"and nothing else. - No FIM endpoint (
fill-in-the-middle) ⇒ inline completion in the editor ("ghost text") is not supported. Chat and agentic work do function. - We always report
usage.cached_tokensas 0. That is a known gap in the inference software, not a counting error on your side. Tools that derive a cache ratio or a cost estimate from it will show nonsense at that spot. deepseek-v4-flashis no longer selectable (it does not start, see above) — requests for it are routed to the default tier.
What we measured — and what we did not
So you know how much this page is worth:
Measured: that the connection works (base URL, key, model list), that tool calls work on all three paths — streaming included —, the cold-start figures in the table above, and how the thinking control behaves per model.
🔴 Not measured: a long, multi-step agent run with any of these tools against our models. Our test runs are single-step; the problems reported for this class of tool — infinite loops, a lost tool-result turn, exhausted context — typically appear only from around turn 10. Nor does a published benchmark exist for any of these tools with our model class in exactly this harness, and the range you would otherwise have to estimate across is far too wide to draw anything from.
⇒ This page tells you how to connect it, not how well it will ultimately perform. If you need that for a procurement, talk to us — then we measure it for your case instead of quoting you a number we borrowed.
Related: Models · API reference · MCP server