SovrGPT Docs

AI coding in your IDE: Kilo Code, Cline, OpenCode & more

OpenAI-compatible API for Kilo Code, Cline, OpenCode, Zed, Aider and goose: base URL, key, model IDs and a ready-made config for each tool.

SovrGPT offers an OpenAI-compatible API. Any coding tool that accepts a custom base URL can use it to work with open models in European data centres. Your requests go to no US model provider such as OpenAI, Anthropic or Google.

You need three values:

  • Base URL: https://sovrgpt.com/api/v1
  • API key: format sov_…, created under Settings → API keys with scope chat. It is sent as Authorization: Bearer sov_….
  • Model ID: qwen3.6-35b-a3b for agentic work, or a model without a cold start from the table below.
Model IDOperationContextCold startWhat for
qwen3.6-35b-a3bself-operated, EU131kmeasured 7–9 minDefault for agents: multi-step tasks, tool chains, changes across several files
stackit-qwen3.8-27bGermany (STACKIT)262knoneinstant answers in the editor; our standard Qwen
tensorx-kimi-k2.7-codeEuropean partner data centre (Ireland/Finland)131knoneheavy agentic runs; always thinks

GET /v1/models lists the models your organisation may use, each with context_window, effort_levels and cold_start_hint.

Use a model with at least 131k context for agents. Cline's system prompt alone takes about 11,700 tokens, and OpenHands requires at least 22,000. Then comes the conversation: from roughly turn 30, each request carries 25,000–35,000 tokens. With 32k context the tool compacts all the time, and the agent seems to lose the thread.

Cold start and timeout

Self-operated models run on rented GPU servers that shut down when idle. The first request after a pause therefore waits several minutes; after that, answers take seconds. Many plugins give up before then, and the error looks like a broken server.

  • Set your plugin's timeout to at least 900 seconds. Most clients abort after 60–120 seconds by default.
  • Or use a model without a cold start: stackit-qwen3.8-27b or tensorx-kimi-k2.7-code.

Setup per tool

Kilo Code

Kilo Code runs in VS Code, JetBrains and on the command line, is MIT licensed and has a German UI. It fetches the model list itself from GET /v1/models, so you never type model IDs by hand.

Settings → Providers → Custom provider at the bottom

FieldValue
Provider IDany, e.g. sovrgpt
Display nameSovrGPT
Provider APIOpenAI Compatible
Base URLhttps://sovrgpt.com/api/v1
API keysov_…
Modelspick from the list, e.g. qwen3.6-35b-a3b

The context window and output limit (limit) go into the file kilo.jsonc. It uses the same format as opencode.json below. Before the first run, turn telemetry off and set permissions.

Cline (VS Code)

API Provider → OpenAI Compatible

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

Set the last two fields by hand: for a custom provider, Cline cannot detect the context window. Too high, and you eventually get max_tokens must be less than: max_context_length - input_tokens. Too low, and the tool compacts for no reason.

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",
          "limit": { "context": 131072, "output": 8192 }
        },
        "stackit-qwen3.8-27b": {
          "name": "SovrGPT · STACKIT (no cold start)",
          "limit": { "context": 262144, "output": 8192 }
        }
      }
    }
  }
}

limit tells the tool how much context is left. For a custom provider it does not know the window otherwise.

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 }
        ]
      }
    }
  }
}

Enter the key in Zed's provider settings, not in settings.json.

Aider

export OPENAI_API_BASE=https://sovrgpt.com/api/v1
export OPENAI_API_KEY=sov_...
aider --model openai/qwen3.6-35b-a3b

Aider needs no tool calling; it works with diff formats. Its own docs warn that most models get distracted "above about 25k tokens" anyway.

Qwen Code (command line)

~/.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

goose lists SovrGPT as a provider of its own once you put the file custom_sovrgpt.json into ~/.config/goose/custom_providers/ (macOS/Linux) or %APPDATA%\Block\goose\config\custom_providers\ (Windows):

{
  "name": "custom_sovrgpt",
  "engine": "openai",
  "display_name": "SovrGPT",
  "api_key_env": "SOVRGPT_API_KEY",
  "base_url": "https://sovrgpt.com/api/v1/chat/completions",
  "models": [
    { "name": "stackit-qwen3.8-27b", "context_limit": 262144 },
    { "name": "tensorx-kimi-k2.7-code", "context_limit": 131072 }
  ],
  "supports_streaming": true,
  "requires_auth": true
}

Here base_url is the full address up to /chat/completions. Set the key as the environment variable SOVRGPT_API_KEY, or enter it for the provider in goose Desktop, which stores it in the keyring.

Without a provider file, use the built-in OpenAI provider:

OPENAI_HOST=https://sovrgpt.com
OPENAI_BASE_PATH=api/v1/chat/completions
OPENAI_API_KEY=sov_...

OPENAI_HOST is the root address only; the path goes into OPENAI_BASE_PATH. A 404 almost always means something is wrong here. goose does not read the key from config.yaml; it belongs in the keyring (goose configure) or in the environment variable. goose runs autonomously by default, see permissions.

Theia

In the settings (settings.json):

{
  "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, API key sov_…. OpenHands needs at least 22,000 tokens of context; all recommended models have at least 131k.

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.

Limitation: tab completion and indexing run over Cursor's own servers, whichever model you pick. Only chat and agent requests reach SovrGPT. Cline, Zed and OpenCode also send chat and agent to the base URL, but open connections of their own as well, see telemetry.

Claude Code and Codex CLI

Neither can be connected today. Claude Code only speaks the Anthropic protocol, and Codex CLI only the Responses API (wire_api = "responses"). SovrGPT offers the OpenAI-compatible Chat Completions interface, but neither an Anthropic-compatible route nor /v1/responses.

Roo Code and Continue (no longer maintained)

Neither tool receives updates any more:

  • Roo Code was shut down on 15 May 2026, and its repository is archived.
  • Continue is "no longer actively maintained" according to its own README, and its repository is read-only.

Use Kilo Code or OpenCode instead. If you come from Roo Code, you will find the same fields in Cline.

Turn telemetry off

Your model requests go to SovrGPT. Several tools also open their own connections to the outside by default:

ToolWhat runs by defaultHow to turn it off
Kilo Codeits own telemetry packageVS Code: telemetry.telemetryLevel set to off; command line: KILO_TELEMETRY_LEVEL=off
Clineusage and error events, even with your own API keyVS Code: Settings → General → clear Allow error and usage reporting; command line: "telemetryOptOut": true in ~/.cline/data/settings/global-settings.json
Zedusage data and crash reports; once signed in, predictions as you type (Zeta) over Zed's servers"telemetry": { "diagnostics": false, "metrics": false } and "edit_predictions": { "provider": "none" } in settings.json
OpenCodesessions can be shared; downloads updates and fetches the model list from models.dev"share": "disabled" and "autoupdate": false in opencode.json, OPENCODE_DISABLE_MODELS_FETCH=true
Forgeevery prompt in plain text, the conversation on errors, plus working directory, command-line arguments and user name go to PostHog (USA); also e-mail addresses from Git, SSH keys and, on macOS, the Apple IDFORGE_TRACKER=false only drops the e-mail addresses; the events themselves cannot be turned off
Prime Agenttelemetrytelemetry.enabled = false
Cursortab completion and indexing over Cursor's own serverscannot be turned off

This list is not complete, and the switch names change between versions. If it matters legally, check your installation's network connections as well as its settings.

Set permissions

Several of the tools above write files and run commands without asking, out of the box:

ToolDefaultTurn on prompts
gooseruns autonomously (GOOSE_MODE: auto)GOOSE_MODE: approve in config.yaml
Qwen Codeapproval mode auto"tools": { "approvalMode": "default" } in ~/.qwen/settings.json
Cline (command line)executes automatically--auto-approve false
OpenCodealmost every tool set to allow, including writing and commandsconfiguration below
Kilo Codereading and writing set to allow; commands ask first, except a list such as cat, ls, grep, cp, mv, mkdir, tarconfiguration below

For OpenCode and Kilo Code, put this into the configuration:

{
  "permission": {
    "*": "ask",
    "read": {
      "*": "allow",
      "*.env": "ask",
      "*.env.*": "ask",
      "*.env.example": "allow"
    },
    "grep": "allow",
    "glob": "allow"
  },
  "share": "disabled"
}

Reading, searching and listing files go through, except for .env files; everything else asks first. A plain "read": "allow" would lift the prompt for .env files, because the last matching rule wins.

In a company, put the same file into the system directory. Users cannot override it there, so the base URL and permissions are enforced.

SystemOpenCodeKilo Code
Windows%ProgramData%\opencode%ProgramData%\kilo
Linux/etc/opencode//etc/kilo/
macOS/Library/Application Support/opencode//Library/Application Support/kilo/

Thinking effort per request (reasoning_effort)

We accept the OpenAI field reasoning_effort (low | medium | high) at the top level; in the Python SDK via extra_body. SovrGPT translates it into the parameter the model expects. Whether a model evaluates it is stated in effort_levels in GET /v1/models. An empty array means we measured no effective graded control for that model.

Modeleffort_levelsEffect
qwen3.6-35b-a3blow, medium, highThinking budget 128 / 512 / unlimited tokens; high thinks about 14 times as much as low
stackit-qwen3.8-27blow, medium, highmeasured on a hard task at 316 / 411 / 757 thinking tokens; thinking can also be switched on or off via chat_template_kwargs.enable_thinking
tensorx-kimi-k2.7-code(empty)Always thinks; cannot be switched off

With high, raise max_tokens too, because the chain of thought counts against the answer budget. With an unlimited thinking budget and max_tokens 2000, qwen3.6-35b-a3b returned an empty answer.

Withdrawn model IDs

qwen3-coder-next-fp8 and deepseek-v4-flash no longer exist. A request with either ID ends with HTTP 404 and the code model_withdrawn (see Chat Completions). Use qwen3.6-35b-a3b instead; DeepSeek V4 Flash is available without a cold start as tensorx-deepseek-v4-flash. The role names coder, coding, qwen-coder and qwen3-coder already point to qwen3.6-35b-a3b.

Code context and memory: prom.codes

Besides the model, what matters is what the agent knows about your repository. prom.codes is a standalone platform from the same house as SovrGPT, hosted in Europe. Over MCP it provides code context (semantic search, symbol graph, references) and a memory in which agents keep facts, decisions and conventions across sessions. Both work on their own as well.

Limits

  • No inline completion: there is no FIM endpoint (fill-in-the-middle), so no "ghost text" in the editor. Chat and agentic work do function.
  • usage.cached_tokens is always 0. That is a gap in the inference software. Tools that derive a cache ratio or cost estimate from it show wrong values there.

We tested the connection (base URL, key, model list), tool calls including streaming, the cold start times and the thinking control. We have not tested a long, multi-step agent run with any of these tools. Problems such as infinite loops, a lost tool result or exhausted context usually appear only from around turn 10. How well an agent works with our models over many steps is therefore still open. For a procurement, we measure your case on request.

Related: Models · API reference · MCP server

AI coding in your IDE: Kilo Code, Cline, OpenCode & more