Ollama mit Ihrem Coding-Agent verbinden
Erfahren Sie, welche Base-URL und welcher Dummy-Key nötig sind, warum die Context Length entscheidend ist und für welche Aufgaben sich lokale Modelle lohnen.
Was Sie verbinden
Sie können Ollama mit Ihrem Coding-Agent verwenden. Die Verbindung ist einfacher, als viele erwarten. Sie ändern eine Base-URL und wählen einen Modellnamen. Das Feld für den API-Key erwartet weiterhin einen Wert. Der lokale Server ignoriert ihn jedoch, daher funktioniert jede Zeichenfolge.
Ollama lauscht auf Port 11434 und verarbeitet gleichzeitig zwei Anfrageformate. /v1/chat/completions ist das OpenAI-kompatible Format. In der Dokumentation von Ollama wird der dortige Key als erforderlich, aber als ignoriert beschrieben. /v1/messages ist das Anthropic-kompatible Format. Dieses verwendet Claude Code. Ihr Agent unterstützt bereits eines der beiden Formate. Daher müssen Sie am Agenten nichts weiter ändern.
Dieser Teil dauert fünf Minuten. Ob das Ergebnis brauchbar ist, hängt von zwei Einstellungen ab, die fast niemand ändert: der Context Length und dem Keep-Alive. Außerdem kommt es darauf an, dem Modell Aufgaben zu geben, für die es geeignet ist. Beide Einstellungen erhalten einen eigenen Abschnitt. Die ehrlichen Grenzen folgen am Ende.
Welche Coding-Agenten eine lokale Base-URL akzeptieren
Der Test besteht aus einer Frage: Bietet das Tool eine Einstellung für die Base-URL? Wenn ja, kann es mit Ihrem Server kommunizieren.
Ollama veröffentlicht Integrationsseiten für Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs und VS Code. Aider dokumentiert seine eigene Ollama-Unterstützung separat. Damit sind die meisten Tools abgedeckt, die im August 2026 als Coding-Agent bezeichnet werden. Sie verwenden jedoch nicht alle dasselbe API-Format. Genau daran scheitern Konfigurationen.
- Die meisten Agenten erwarten einen OpenAI-kompatiblen Endpunkt. Geben Sie ihnen die Base-URL
http://localhost:11434/v1und einen beliebigen nicht leeren API-Key-String. - Claude Code akzeptiert überhaupt keine OpenAI-Base-URL. Es verwendet die Anthropic Messages API und benötigt daher
ANTHROPIC_BASE_URLmit dem Werthttp://localhost:11434. Dort stellt Ollama/v1/messagesbereit. - Codex verwendet die OpenAI Responses API. Ollama stellt auch
/v1/responsesbereit. Diese Unterstützung wurde in Version 0.13.3 hinzugefügt. - Ein Agent ohne Einstellung für die Base-URL kann nicht umgeleitet werden, weil der Endpunkt fest im Client hinterlegt ist. Schalten Sie stattdessen eine Übersetzungsschicht vor, zum Beispiel ein selbst gehostetes LiteLLM-Gateway, und stellen Sie Ihr Modell in dem Format bereit, das der Client benötigt.
Ollama kann diese Konfigurationen für Sie erstellen. ollama launch opencode startet OpenCode mit einer Inline-Konfiguration für das ausgewählte Modell, ollama launch claude macht dasselbe für Claude Code, und ollama launch droid --config schreibt die Konfiguration, ohne das Tool zu starten.
Ollama installieren und ein Modell abrufen, das Tools aufrufen kann
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama lsDas Installationsprogramm fügt eine systemd-Unit hinzu und startet sie. Daher sollte systemctl status ollama active (running) ausgeben. Falls dies nicht der Fall ist, gibt journalctl -e -u ollama den Grund aus.
Das Modell muss Tool-Aufrufe unterstützen, weil ein Agent auf diese Weise arbeitet. Er liest eine Datei, schreibt einen Patch, führt den Test aus, liest anschließend den Fehler und versucht es erneut. Ein Modell, das keinen Tool-Aufruf ausgeben kann, beschreibt die Änderung nur als Text, statt sie auszuführen. Dadurch gerät der Agent in eine Schleife oder beendet sich. Suchen Sie auf der Modellseite auf ollama.com vor dem Abruf nach dem Label tools. qwen3-coder:30b trägt dieses Label. Im August 2026 ist dieses Tag ein 19 GB großer Download mit einem Kontextfenster von 256K. Wenn Ihr Server nur über die CPU arbeitet oder wenig RAM hat, zeigt die Speicherberechnung für das Qwen-27B-Tag auf einem VPS, was in 8 bis 64 GB tatsächlich Platz findet, bevor Sie den Download starten. Nach dem Abruf liegen diese Gigabyte auf der Root-Disk des Servers. Auf einem VPS bietet sie meist den geringsten freien Speicher. Lesen Sie daher wo Ollama seine Modelldateien speichert und wie Sie sie an einen anderen Ort verschieben, bevor der Datenträger voll ist.
Prüfen Sie jetzt, welche Namen der Server tatsächlich bereitstellt:
curl http://localhost:11434/v1/modelsDie Zeichenfolgen in dieser Antwort müssen in Ihrer Agent-Konfiguration Zeichen für Zeichen identisch enthalten sein. Eine vorherige Prüfung behebt die meisten Fehler, bei denen ein Modell nicht gefunden wird. Wenn Ollama noch nicht installiert ist, finden Sie die ausführlichere Anleitung unter ein LLM mit Ollama auf einem VPS selbst hosten.
OpenCode auf Ollama ausrichten
Bearbeiten Sie ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama",
"options": {
"baseURL": "http://localhost:11434/v1"
},
"models": {
"qwen3-coder:30b": {
"name": "qwen3-coder 30b"
}
}
}
}
}Der Schlüssel unter models ist der an Ollama gesendete Modellname. Er muss daher exakt mit ollama ls übereinstimmen. Das Feld name ist nur die Bezeichnung in der Modellauswahl. Starten Sie opencode, wechseln Sie zum Ollama-Provider und überwachen Sie journalctl -e -u ollama, um zu bestätigen, dass die Anfrage auf Ihrem Server und nicht an anderer Stelle eingegangen ist. Die Einrichtung des Agenten selbst wird unter OpenCode auf einem VPS ausführen beschrieben.
Claude Code auf Ollama ausrichten
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_API_KEY=""
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model qwen3-coder:30bANTHROPIC_API_KEY wird absichtlich auf eine leere Zeichenfolge gesetzt. Ein echter Schlüssel in der Umgebung sendet Ihre Anfragen stattdessen an die gehostete API. Dadurch entstehen Kosten, und es findet keine lokale Inferenz statt. ollama launch claude übernimmt diese Konfiguration für Sie.
Beachten Sie, welche Funktionen die Kompatibilitätsschicht nicht unterstützt. Sie implementiert weder tool_choice noch Prompt-Caching. Außerdem bietet sie keinen Endpunkt zur Token-Zählung. Die angezeigten Token-Zahlen sind daher Näherungswerte, die aus dem Tokenizer des Modells stammen. Claude Code übermittelt außerdem einen umfangreichen System-Prompt und stellt eine große Anzahl von Tools bereit. Daher benötigt es mehr Kontext als ein Chat-Client. Die umfassendere Frage, welche Funktionen übernommen werden und welche nicht, wird unter ob Sie Claude selbst hosten können behandelt.
Aider auf Ollama ausrichten
export OLLAMA_API_BASE=http://127.0.0.1:11434
aider --model ollama_chat/qwen3-coder:30bDie Dokumentation von Aider empfiehlt das Präfix ollama_chat/ anstelle von ollama/. In .aider.model.settings.yml können Sie außerdem das Kontextfenster für jedes Modell festlegen. Das ist hilfreich, wenn ein Modell ein anderes Fenster als den Serverstandard benötigt:
- name: ollama_chat/qwen3-coder:30b
extra_params:
num_ctx: 65536Warum ein funktionierendes Setup trotzdem unsinnige Ergebnisse liefert
Dieser Abschnitt ist entscheidend. Ollama wählt anhand des erkannten VRAMs (Videospeicher der GPU) eine Standard-Kontextlänge. Diese Standardwerte sind veröffentlicht:
The data behind this chart
[
{
"label": "Under 24 GiB VRAM",
"default_context_tokens": "4,096"
},
{
"label": "24 to 48 GiB VRAM",
"default_context_tokens": "32,768"
},
{
"label": "48 GiB VRAM or more",
"default_context_tokens": "262,144"
}
]Die meisten VPS-Tarife und jeder Server, der nur die CPU verwendet, landen in der ersten Zeile: 4,096 Tokens. Nur eine große GPU erreicht die 262,144 Tokens aus der letzten Zeile.
Ein Agent verarbeitet 4096 Tokens, bevor er überhaupt mit der Arbeit beginnt. Der System-Prompt, die Tool-Definitionen, die Repository-Auflistung und die erste geöffnete Datei sind bereits größer als dieser Wert. Danach tritt das eigentliche Problem auf: Es wird kein Fehler ausgegeben. Laut der Aider-Dokumentation verwirft Ollama Kontext, der das Fenster überschreitet, stillschweigend. Die ältesten Tokens fallen heraus. Dadurch antwortet das Modell selbstsicher über eine Datei, die es nicht mehr sehen kann, oder vergisst eine Anweisung, die Sie zwei Schritte zuvor gegeben haben. Dieser Mechanismus steckt hinter den meisten Berichten, dass ein lokales Modell zu dumm zum Programmieren sei. Die Wahl des Werts ist eine eigene Entscheidung. Lesen Sie welche Kosten num_ctx bei jeder Größe im KV-Cache-Speicher verursacht, bevor Sie sich festlegen.
In der Ollama-Dokumentation steht, dass Aufgaben wie Agenten und Coding-Tools auf mindestens 64000 Tokens eingestellt werden sollten. Setzen Sie den Wert auf dem Server:
sudo systemctl edit ollama.serviceFügen Sie diese Zeilen in die Override-Datei ein:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"Laden Sie die Konfiguration anschließend neu und starten Sie den Dienst neu:
sudo systemctl daemon-reload
sudo systemctl restart ollama
ollama psollama ps ist die Prüfung. Der Befehl gibt eine Spalte CONTEXT aus. Diese Zahl entspricht dem Kontext, den das Modell tatsächlich erhalten hat. Ihre Werte für ID und SIZE werden abweichen:
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:30b a1b2c3d4e5f6 24 GB 100% GPU 64000 4 minutes from nowSetzen Sie den Wert auf dem Server und nicht im Agenten. Dafür gibt es zwei Gründe. Das OpenAI-Schema für Chat Completions enthält kein Feld für die Kontextlänge. Ein OpenAI-kompatibler Client kann daher keine Kontextlänge anfordern. Außerdem gilt die Einstellung pro Server. Jeder Agent, den Sie auf diesen Server verweisen, übernimmt sie. Für die Ausgabe gibt es eine eigene Obergrenze. Anders als die Kontextlänge wird sie über den Kompatibilitätsendpunkt übertragen. Wenn eine Antwort mitten in einem Patch abbricht, sind daher num_predict und das darauf abgebildete Feld max_tokens die relevanten Einstellungen. Wenn ein Modell ein anderes Kontextfenster benötigt, erstellen Sie mit einer Modelfile eine eigene Kopie:
FROM qwen3-coder:30b
PARAMETER num_ctx 65536ollama create qwen3-coder-64k -f ModelfileKontext ist nicht kostenlos. Ein größeres Fenster benötigt mehr Speicher. Überwachen Sie daher die Spalte PROCESSOR. 100% GPU ist der gewünschte Wert. Sobald ein Teil des Modells auf die CPU ausgelagert wird, sinkt die Token-Rate so stark, dass eine Agentenschleife unbrauchbar wird. Das Messen von Tokens pro Sekunde bei einem lokalen LLM zeigt Ihnen die tatsächliche Obergrenze Ihres Servers. Die Dimensionierung der Maschine vor dem Kauf wird in wie viel RAM und CPU ein Coding-Agent-VPS benötigt behandelt.
Modell zwischen Anfragen geladen halten
Standardmäßig entlädt Ollama ein Modell 5 Minuten nach der letzten Anfrage. Das ist für ein Chatfenster sinnvoll, aber für Agenten ungeeignet. Sie pausieren, um einen Diff zu lesen, der Timer läuft ab, und die nächste Anfrage lädt zunächst mehrere Dutzend Gigabyte an Gewichten von der Festplatte, bevor das erste Token erscheint. Das wirkt wie ein Hänger.
OLLAMA_KEEP_ALIVE akzeptiert eine Dauerangabe wie 10m oder 24h, eine einfache Anzahl von Sekunden, -1, um das Modell dauerhaft geladen zu halten, oder 0, um es sofort zu entladen. Setzen Sie den Wert neben der Kontextlänge:
[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"Das Anfragefeld keep_alive ist nur an Ollamas nativen /api/generate- und /api/chat-Endpunkten verfügbar, nicht an den kompatiblen Endpunkten. Ein Agent kann den Wert daher nicht pro Anfrage setzen. Die Umgebungsvariable ist der einzige verfügbare Steuerungsmechanismus. Wenn Sie den Speicher wieder benötigen, entlädt ollama stop qwen3-coder:30b das Modell, ohne den Server zu stoppen. Wenn die Einstellung einen Reboot überdauern soll oder Sie abwägen möchten, ob die Gewichte den ganzen Tag im Speicher bleiben oder der Speicher wieder freigegeben wird, funktioniert ein in Ollama geladenes Modell im Speicher halten mit beidem.
Ollama auf einem separaten Server ausführen
Ollama bindet an localhost. Damit Sie von einem anderen Rechner darauf zugreifen können, setzen Sie OLLAMA_HOST=0.0.0.0:11434 im selben systemd-Override und starten Sie den Dienst neu.
Tun Sie das nur in einem privaten Netzwerk. Laut der Dokumentation von Ollama ist für die lokale API keine Authentifizierung erforderlich. Ein für das Internet geöffneter Port 11434 bedeutet daher, dass jeder Ihre Hardware verwenden und alles lesen kann, was Ihr Agent sendet. Es gibt zwei sichere Optionen. Lassen Sie die Bindung auf localhost und leiten Sie den Port von Ihrem Laptop aus über SSH weiter:
ssh -N -L 11434:localhost:11434 you@your-vpsIhr Agent verwendet weiterhin http://localhost:11434/v1 und bemerkt keinen Unterschied. Die andere Option ist ein VPN, wobei Ollama an die VPN-Adresse statt an 0.0.0.0 gebunden wird. Wenn mehrere Personen oder mehrere Agenten einen Rechner gemeinsam nutzen, ist Ollamas Scheduler nicht für diese Last ausgelegt. Der Vergleich zwischen Ollama und vLLM zeigt, ab wann sich der Durchsatzunterschied bemerkbar macht.
Wo ein lokales Coding-Modell überzeugt und wo nicht
Ein Agent mit einem von Ihnen gehosteten Modell ersetzt eine Frontier-API nicht bei jeder Aufgabe. Bei vier Arten von Arbeiten ist er klar im Vorteil.
- Umfangreiche mechanische Änderungen, bei denen jede einzelne Änderung klein ist und Sie sie prüfen können. Umbenennungen in einem Repository, das Ergänzen von Type Hints, das Schreiben von Docstrings oder das Übersetzen von Kommentaren. Das Modell läuft stundenlang, ohne dass sich die Kosten erhöhen.
- Arbeiten, die Ihre Hardware nicht verlassen dürfen. Dazu gehören Client-Code unter einer Vertraulichkeitsvereinbarung oder ein internes Repository, das Sie nicht an einen Drittanbieter senden dürfen.
- Offline- und Air-Gap-Systeme, auf denen überhaupt keine gehostete API erreichbar ist.
- Planbare Kosten. Sobald der Server bezahlt ist, verursacht ein Agent, der in einer Schleife Tokens verbraucht, keine zusätzlichen Kosten. Das ist das Gegenteil einer API mit nutzungsabhängiger Abrechnung. Wann ein GPU-VPS gegenüber API-Tokens kostendeckend ist enthält die Berechnung.
Bei langen Aufgaben mit mehreren Schritten ist er im Nachteil. Die Aufgabe „Finden Sie heraus, warum dieser Test fehlschlägt, beheben Sie die Ursache und aktualisieren Sie die Aufrufer“ erfordert viele korrekte Tool-Aufrufe nacheinander. Dabei muss der vollständige Verlauf weiterhin im Kontext vorhanden sein. Ein Modell im Bereich von 8B bis 14B auf einem leistungsschwachen Server erzeugt möglicherweise einen fehlerhaften Tool-Aufruf oder verliert nach einigen Durchläufen den Plan. Dann verbringen Sie mehr Zeit damit, das Modell zu steuern, als die Aufgabe selbst gedauert hätte. Das ist kein Prompt-Problem, das sich durch eine andere Formulierung lösen lässt. Es ist eine Frage der Kapazität.
Auch wenn Fehler teuer sind und Sie nicht jede Zeile lesen werden, ist es im Nachteil. Übertragen Sie dem lokalen Modell eng abgegrenzte Aufgaben und prüfen Sie die Ausgaben. Verwenden Sie für Arbeiten, die Sie nicht Schritt für Schritt kontrollieren würden, weiterhin ein gehostetes Modell.
Fehlerbilder und die angezeigten Zeichenfolgen
curl: (7) Failed to connect to localhost port 11434 after 0 ms: Connection refused. Der Server läuft nicht, oder der Agent ist auf einen anderen Host verwiesen. Führen Sie systemctl status ollama und anschließend journalctl -e -u ollama aus.
Der Agent meldet, dass das Modell nicht existiert. Der Name in Ihrer Konfiguration stimmt nicht mit einem vom Server bereitgestellten Namen überein. Vergleichen Sie ihn mit curl http://localhost:11434/v1/models und übernehmen Sie die Zeichenfolge von dort. Der Tag ist Bestandteil des Namens. Eine Konfiguration mit einem Tag, den Sie nie heruntergeladen haben, schlägt daher fehl, obwohl ein ähnliches Modell installiert ist.
Der Agent antwortet in Prosa und bearbeitet niemals eine Datei. Entweder unterstützt das Modell keine Tools, oder die Anfrage einschließlich der Tool-Definitionen füllt das Kontextfenster bereits aus. Prüfen Sie die Kennzeichnung tools auf der Modellseite. Prüfen Sie anschließend die Spalte CONTEXT in ollama ps.
Vor dem ersten Token herrscht lange Stille, danach ist die Geschwindigkeit normal. Das Keepalive-Intervall ist abgelaufen, und die Gewichte werden erneut von der Festplatte gelesen. Setzen Sie OLLAMA_KEEP_ALIVE.
Das Modell widerspricht einer Datei, die es gerade gelesen hat. Die Ursache ist eine Kontextkürzung. ollama ps zeigt normalerweise einen CONTEXT-Wert, der kleiner ist als erwartet. Die Umgebungsvariable wurde an Ihre Shell statt an die systemd-Unit übergeben.
Alles funktioniert, aber langsam, und PROCESSOR ist nicht 100% GPU. Das Modell passt zusammen mit seinem Kontext nicht in den VRAM. Verringern Sie die Kontextlänge oder verwenden Sie ein kleineres Modell beziehungsweise eine kleinere Quantisierung. Bevor Sie das Modell erneut herunterladen, erklärt was q4_K_M, q8_0 und fp16 jeweils an Speicher benötigen und wo die Qualität tatsächlich abnimmt, wie viel Speicher ein Wechsel auf eine kleinere Variante freigibt und welche Nachteile damit verbunden sind.
FAQ
Kann ich Claude Code auf Ollama verweisen?
Ja, aber nicht mit einer OpenAI-kompatiblen URL. Claude Code verwendet die Anthropic Messages API, und Ollama stellt dieses Format unter /v1/messages am selben Port 11434 bereit. Exportieren Sie ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama und ein leeres ANTHROPIC_API_KEY, und starten Sie es anschließend mit claude --model qwen3-coder:30b. ollama launch claude schreibt diese Einstellungen automatisch für Sie. Die Kompatibilitätsschicht implementiert tool_choice und Prompt-Caching nicht. Außerdem gibt es keinen Endpunkt zur Tokenzählung. Die gemeldeten Tokenzahlen sind daher Näherungswerte.
Warum antwortet mein lokales Modell zu Code, den es nicht sehen kann?
Weil die Anfrage nicht mehr in das Kontextfenster passt und der älteste Teil ohne Fehlermeldung entfernt wurde. Ollama setzt den Standardkontext anhand des erkannten VRAMs. Unter 24 GiB beträgt dieser Standardwert 4,096 Tokens. Der System-Prompt und die Tooldefinitionen eines Agents überschreiten diesen Wert bereits allein. Setzen Sie OLLAMA_CONTEXT_LENGTH=64000 in der systemd-Unit, starten Sie Ollama neu, und prüfen Sie, ob die Spalte CONTEXT in ollama ps den neuen Wert anzeigt.
Welches Modell sollte ich für einen Coding-Agent auf einem VPS ausführen?
Wählen Sie das größte Modell mit dem Label tools, das mit einem 64k-Kontextfenster noch in den Arbeitsspeicher passt. Bevorzugen Sie ein für Code optimiertes Modell. qwen3-coder:30b ist auf einem GPU-Server mit ausreichend VRAM meist die richtige Wahl. Wenn dieses Tag für Ihren Server zu groß ist, sind die RAM-Werte und CPU-only-Geschwindigkeiten für Nemotron 3.5 Lightning ein nützlicher Vergleich, bevor Sie den Download starten. Unter etwa 14B Parametern kann ein Modell weiterhin gut auf Fragen zu Code antworten, aber bei mehrstufigen Änderungen scheitern. Agent-Aufgaben reagieren empfindlich auf kleine Formatierungsfehler in Tool-Aufrufen. Testen Sie das Modell mit einer realen Aufgabe aus Ihrem eigenen Repository statt mit einem Beispiel-Prompt.
Benötige ich eine GPU, um einen Coding-Agent mit meinem eigenen Modell auszuführen?
In der Praxis: ja. CPU-only-Inferenz funktioniert und reicht für einzelne Fragen aus. Ein Agent sendet jedoch pro Aufgabe viele Anfragen, und jede Anfrage liest einen langen Verlauf erneut ein. Eine niedrige Tokenrate verlängert dadurch eine Aufgabe von zwei Minuten auf eine Stunde. Prüfen Sie die Spalte PROCESSOR in ollama ps. Jeder Wert außer 100% GPU bedeutet, dass ein Teil des Modells auf der CPU ausgeführt wird. Die Tokenrate sinkt dadurch deutlich.