KI-Coding-Agenten und Harnesses
Richten Sie Claude Code, Codex CLI, OpenClaw, Cline, Cursor und 25+ weitere Coding-Agenten in denselben drei Schritten auf das Gateway — jeweils mit exaktem Konfigurationsziel und Schlüsselnamen.
Jeder KI-Coding-Agent liest eine Basis-URL und einen API-Schlüssel von irgendwoher — eine Umgebungsvariable, eine Konfigurationsdatei oder ein Einstellungsfeld. Diese Seite listet auf, wo jeder Harness sie liest, welches Protokoll er spricht und den einen Gotcha, über den Menschen tatsächlich stolpern. Vollständige Copy-Paste-Konfigurationen stehen in der Dokumentation.
base_url auf das Gateway richten
Standard ist https://your-gateway.gatellm.io — ob /v1 enthalten ist, hängt vom SDK ab (jedes Beispiel nennt den genauen Wert).
Gateway-Zugriffsschlüssel einsetzen
Kein Upstream-sk-…-Schlüssel — derselbe Zugriffsschlüssel wird in den Header eingetragen, den Ihr SDK erwartet.
Den Gateway-Modellnamen verwenden
Was Sie in der Konsole konfiguriert haben — nicht der offizielle Name des Anbieters.
Authorization: Bearer <key>x-api-key: <key>x-goog-api-key: <key>Harness-Kompatibilitätsmatrix
| Harness | Protokoll | Unterstützung | Konfigurationsziel | Schlüsselnamen / Einstellungen | Dokumentation |
|---|---|---|---|---|---|
| Terminal-Agenten | |||||
| Claude Code | Anthropic | Nativ | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | GitHub-Konfiguration ↗ · Dokumentation |
| Codex CLI | OpenAI Responses | Nativ | ~/.codex/config.toml | base_url, env_key, wire_api | GitHub-Konfiguration ↗ · Dokumentation |
| Gemini CLI | Gemini | Nativ | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | GitHub-Konfiguration ↗ · Dokumentation |
| OpenClaw | OpenAI / Anthropic-compatible | OpenAI-kompatibel | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | Dokumentation |
| opencode | OpenAI-compatible | OpenAI-kompatibel | opencode.json | provider.<id>.options.baseURL | Dokumentation |
| Crush | OpenAI / Anthropic-compatible | OpenAI-kompatibel | crush.json | providers.<id>.base_url, providers.<id>.type | Dokumentation |
| Factory Droid | OpenAI / Anthropic-compatible | OpenAI-kompatibel | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | Dokumentation |
| Goose | OpenAI-compatible | OpenAI-kompatibel | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | Dokumentation |
| Aider | OpenAI-compatible (LiteLLM) | OpenAI-kompatibel | env vars | OPENAI_API_BASE | Dokumentation |
| Qwen Code | OpenAI-compatible | OpenAI-kompatibel | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | Dokumentation |
| OpenHands | OpenAI-compatible (LiteLLM) | OpenAI-kompatibel | ~/.openhands/settings.json | base_url, model openai/ prefix | Dokumentation |
| Kimi Code CLI | OpenAI / Anthropic | OpenAI-kompatibel | config.toml | providers | Dokumentation |
| Plandex | OpenAI-compatible | OpenAI-kompatibel | custom models JSON | baseUrl | Dokumentation |
| SWE-agent | OpenAI-compatible (LiteLLM) | OpenAI-kompatibel | env vars | OPENAI_BASE_URL | Dokumentation |
| Grok Build | OpenAI-compatible | OpenAI-kompatibel | config.toml | custom models | Dokumentation |
| Mistral Vibe | OpenAI-compatible | OpenAI-kompatibel | ~/.vibe/config.toml | providers | Dokumentation |
| MiMo Code | OpenAI-compatible | OpenAI-kompatibel | /connect custom provider | base URL, API key | Dokumentation |
| ForgeCode | OpenAI / Anthropic | OpenAI-kompatibel | setup wizard | base URL | Dokumentation |
| Codebuff | OpenAI-compatible | OpenAI-kompatibel | settings | base URL, API key | Dokumentation |
| IDEs und Erweiterungen | |||||
| Cline | OpenAI-compatible | OpenAI-kompatibel | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Dokumentation |
| Roo Code | OpenAI-compatible | OpenAI-kompatibel | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Dokumentation |
| Kilo Code | OpenAI-compatible | OpenAI-kompatibel | Settings → OpenAI Compatible | Base URL, API Key, Model ID | Dokumentation |
| Continue | OpenAI-compatible | OpenAI-kompatibel | config.yaml | models[].apiBase | Dokumentation |
| Zed | OpenAI-compatible | OpenAI-kompatibel | settings.json | language_models.openai_compatible.<id>.api_url | Dokumentation |
| Cursor | OpenAI | Teilweise | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | Dokumentation |
| Windsurf | OpenAI-compatible | OpenAI-kompatibel | Settings → Models → BYOK / custom | Base URL, API Key | Dokumentation |
| GitHub Copilot (BYOK) | OpenAI-compatible | OpenAI-kompatibel | Manage Models → OpenAI-compatible | Base URL, API Key | Dokumentation |
| Verwaltete Plattformen | |||||
| Warp | OpenAI / Anthropic / Gemini (BYOK) | Teilweise | Settings → BYOK | BYOK API keys | Dokumentation |
| Amazon Q Developer CLI | MCP | Kein benutzerdefinierter Endpunkt | MCP server | — | Dokumentation |
| Devin | — | Kein benutzerdefinierter Endpunkt | — | — | Dokumentation |
Wie das Gateway-Modell heißen sollte
Einige Harnesses pinnen ihre eigene Modell-ID und senden sie wortgetreu. Hat Ihr Gateway-Modell einen anderen Namen, liefert der erste Aufruf 404. Zwei Wege zur Angleichung:
Benennen Sie das Gateway-Modell genau so, wie der Harness es anfragt — ohne zusätzliche Konfiguration.
Oder überschreiben Sie den Harness, sodass er Ihren Gateway-Namen über seine Modell-Umgebungsvariable verwendet (z. B. ANTHROPIC_MODEL).
Gotchas
Claude Code sendet seinen konfigurierten Standard (z. B. claude-opus-5 oder claude-sonnet-5) — nicht Ihren Gateway-Namen. Benennen Sie das Gateway-Modell entweder genau so, wie der Harness es anfragt, oder setzen Sie seine Modell-Umgebungsvariable (z. B. ANTHROPIC_MODEL) auf Ihren Gateway-Namen. Bei Abweichung → 404 model_not_found bei der ersten Nachricht.
Die Basis-URL für Anthropic-artige Clients zeigt auf die Gateway-Wurzel (ohne /v1) — der Client hängt /v1/messages selbst an. Mit /v1 verdoppelt sich hier das Pfadsegment.
Die Codex CLI verlangt wire_api = "responses" für einen benutzerdefinierten [model_providers.*]-Block. Das Gateway implementiert /v1/responses nativ — richten Sie base_url darauf und setzen Sie env_key auf einen Gateway-Zugriffsschlüssel.
Aider, OpenHands und SWE-agent nutzen LiteLLM: Setzen Sie OPENAI_API_BASE auf das Gateway und geben Sie dem Modell ein openai/-Präfix (z. B. openai/gateway-model-name), damit LiteLLM es als OpenAI-kompatiblen Endpunkt routet.
Codex, Gemini CLI und Qwen Code verwenden standardmäßig den OAuth-/Abo-Login des Anbieters. Um über das Gateway zu routen, müssen Sie auf API-Schlüssel-Authentifizierung umstellen (Schlüssel + Basis-URL explizit setzen) — sonst umgeht der Agent das Gateway vollständig.
Cline / Roo / Kilo und andere entscheiden anhand des Modellnamens über Tool-Calling und Vision. Ein benutzerdefinierter Gateway-Name kann Function Calling deaktivieren — wenn Tool-Aufrufe fehlschlagen, prüfen Sie die Capability-Erkennungsregeln des Clients oder benennen Sie das Modell passend zu einer bekannten Familie.
Während langer Upstream-Inferenz gibt das Gateway SSE-Kommentarzeilen :keep-alive aus (harmlos — überspringen Sie Zeilen, die mit : beginnen), und bei einem Abbruch mitten im Stream fügt es ein Feld _gateway_warning ein, statt einen Fehler zu erzeugen, damit Harnesses wie Claude Code nicht die ganze Unterhaltung abbrechen.
Im Auto-Modus wartet Claude Code vor einer potenziell gefährlichen Aktion auf ein serverseitiges Urteil (ein safeguards-Feld in der Anfrage). Ist der Upstream das offizielle Anthropic, entsteht das Urteil innerhalb derselben Anfrage und das Gateway reicht es unverändert durch. Ist der Upstream ein Drittanbieter, der das Feld ignoriert, antwortet stattdessen das Gateway — und der ausgelieferte Standard (allow_all) gibt jede Aktion frei, was permissiver ist, als den Aufruf gar nicht zu beeinflussen. Geben Sie eine Route an ihren Upstream zurück, indem Sie "anthropic_server_safeguards": "upstream" in die extra_config dieses Upstreams schreiben; die Konsoleneinstellung ist nur für Administratoren.
# Every agent is one base_url + one access key away
export ANTHROPIC_BASE_URL="https://your-gateway.gatellm.io" # Anthropic agents: root (no /v1)
export ANTHROPIC_API_KEY="<gateway access key>"
export OPENAI_API_BASE="https://your-gateway.gatellm.io/v1" # OpenAI-compatible agents: /v1
export OPENAI_API_KEY="<gateway access key>"
# Codex CLI (~/.codex/config.toml) speaks the Responses protocol
# [model_providers.gatellm]
# base_url = "https://your-gateway.gatellm.io/v1"
# wire_api = "responses"