SovrGPT Docs

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. Format sov_…
  • 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 IDWhat forContextCold start (measured)
qwen3.6-35b-a3bThe default for agentic work — multi-step tasks, tool chains, rewrites across several files131k~421 s
stackit-qwen3.6-27bno cold start — operated by STACKIT in Germany131k0 s
tensorx-kimi-k2.7-codeHeavy agentic runs, no cold start262k0 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-fp8 for "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 by qwen3.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 as tensorx-deepseek-v4-flash with no cold start.

Your configuration will not break. Sending coder, coding, qwen-coder or qwen3-coder as the model name now gets you qwen3.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 carries x-sovrgpt-model-substituted. Change the name.

Why stackit-qwen3.6-27b is 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: our balanced has 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:

  1. Pick a model without a cold startstackit-qwen3.6-27b runs continuously at the operator.
  2. 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.
  3. 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 → ProvidersOpenAI Compatible

FieldValue
Base URLhttps://sovrgpt.com/api/v1
API Keysov_…
Modelpick 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 ProviderOpenAI Compatible

FieldValue
Base URLhttps://sovrgpt.com/api/v1
API Keysov_…
Model IDqwen3.6-35b-a3b
Context Window131072
Max Output Tokens8192

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 above

OpenCode

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-a3b

Aider 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=de

QWEN_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_HOST is the root only — the path belongs in OPENAI_BASE_PATH; a 404 almost always means something is wrong here. And: 🔴 a key in config.yaml is 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.

ToolWhat runs by defaultHow to turn it off
Kilo Codeits own telemetry packagedisable in settings
opencodesessions can be shared"share": "disabled" in opencode.json
Forge🔴 tracker is ON by defaultFORGE_TRACKER=false
Prime Agenttelemetrytelemetry.enabled = false
Cursortab 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:

ToolFactory default
gooseruns autonomously
Qwen Codeapproval 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:

Modeleffort_levelsWhat happens internally
qwen3.6-35b-a3blow, medium, highToken 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_levels does 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 withdrawn qwen3-coder-next-fp8 exactly that was measured: at temperature: 0 the answers with and without enable_thinking were byte-identical, because its chat template never evaluated the field. Rely on effort_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:

PartWho provides it
Model (completion, agent, refactor)SovrGPT — EU data centres
Code context and memoryprom.codes — EU-hosted
Editoryour 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 accepts wire_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_tokens as 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-flash is 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

Coding in the IDE