SSD Nodes Learn 🎉 VPS ab $4.99/Monat
Anleitungen Matt ConnorVon Matt Connor

Ollama mit Ihrem Coding-Agent verbinden

Verbinden Sie Ihren Coding-Agent mit Ollama: Base-URL, Dummy-Schlüssel, Port 11434, Kontextlänge und Aufgaben, bei denen lokale Modelle überzeugen.

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-Schlüssel erwartet weiterhin einen Wert. Der lokale Server ignoriert ihn jedoch, daher funktioniert jede Zeichenfolge.

Ollama lauscht auf Port 11434 und stellt gleichzeitig zwei Anfrageformate bereit. /v1/chat/completions ist das OpenAI-kompatible Format. In der Dokumentation von Ollama wird der Schlüssel dort als erforderlich, aber ignoriert beschrieben. /v1/messages ist das Anthropic-kompatible Format, das Claude Code verwendet. Ihr Agent unterstützt bereits eines dieser beiden Formate. Daher müssen Sie an ihm nichts weiter ändern.

Dieser Teil dauert fünf Minuten. Ob das Ergebnis nutzbar ist, hängt von zwei Einstellungen ab, die fast niemand ändert: der Kontextlänge 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 realistischen Grenzen folgen am Ende.

Welche Coding-Agenten eine lokale Basis-URL akzeptieren

Der Test besteht aus einer Frage: Bietet das Tool eine Einstellung für die Basis-URL? Wenn ja, kann es mit Ihrem Server kommunizieren.

Ollama stellt Integrationsseiten für Claude Code, OpenCode, Codex, Cline, Roo Code, Zed, JetBrains IDEs und VS Code bereit. Aider dokumentiert seine eigene Ollama-Unterstützung separat. Damit sind die meisten Tools abgedeckt, die im August 2026 mit einem Coding-Agenten gemeint sind. Sie verwenden nicht alle dasselbe Format. Genau an diesem Unterschied scheitern Konfigurationen.

  • Die meisten Agenten benötigen einen OpenAI-kompatiblen Endpunkt. Geben Sie ihnen die Basis-URL http://localhost:11434/v1 und einen beliebigen nicht leeren API-Schlüssel.
  • Claude Code akzeptiert überhaupt keine OpenAI-Basis-URL. Es verwendet die Anthropic Messages API und benötigt daher ANTHROPIC_BASE_URL mit dem Wert http://localhost:11434. Unter dieser Adresse stellt Ollama /v1/messages bereit.
  • Codex verwendet die OpenAI Responses API. Ollama stellt auch /v1/responses bereit. Diese Unterstützung wurde in Version 0.13.3 hinzugefügt.
  • Ein Agent ohne Einstellung für die Basis-URL kann nicht umgeleitet werden, weil der Endpunkt fest im Client hinterlegt ist. Schalten Sie stattdessen eine Übersetzungsschicht davor, beispielsweise ein selbst gehostetes LiteLLM-Gateway, und stellen Sie Ihr Modell in dem Format erneut bereit, das der Client verlangt.

Ollama kann diese Konfigurationen für Sie schreiben. ollama launch opencode startet OpenCode mit einer Inline-Konfiguration für das von Ihnen ausgewählte Modell, ollama launch claude erledigt dasselbe für Claude Code, und ollama launch droid --config schreibt die Konfiguration, ohne das Tool zu starten.

Ollama installieren und ein Modell mit Tool-Aufruffunktion herunterladen

curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollama --no-pager
ollama pull qwen3-coder:30b
ollama ls

Das Installationsprogramm fügt eine systemd-Unit hinzu und startet sie. Daher sollte systemctl status ollama active (running) ausgeben. Falls nicht, 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. Der Agent wiederholt dann den Ablauf oder beendet sich. Suchen Sie auf der Modellseite unter ollama.com nach dem Label tools, bevor Sie das Modell herunterladen. qwen3-coder:30b trägt dieses Label. Im August 2026 ist dieser Download 19 GB groß und unterstützt ein Kontextfenster von 256K.

Prüfen Sie nun, welche Namen der Server tatsächlich bereitstellt:

curl http://localhost:11434/v1/models

Die Zeichenfolgen in dieser Antwort müssen in der Agent-Konfiguration Zeichen für Zeichen übereinstimmen. Eine vorherige Prüfung behebt die meisten Fehler, bei denen ein Modell nicht gefunden wird. Falls Ollama noch nicht installiert ist, finden Sie die ausführlichere Anleitung unter Self-Hosting eines LLM mit Ollama auf einem VPS.

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 Agents 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:30b

ANTHROPIC_API_KEY wird absichtlich auf eine leere Zeichenfolge gesetzt. Wenn ein echter Schlüssel in der Umgebung vorhanden ist, werden Ihre Anfragen stattdessen an die gehostete API gesendet. 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 bereitstellt. Sie implementiert weder tool_choice noch Prompt-Caching und hat keinen Endpunkt zur Token-Zählung. Die angezeigten Tokenzahlen sind daher Näherungswerte, die aus dem Tokenizer des Modells selbst stammen. Claude Code verwendet außerdem einen großen System-Prompt und einen umfangreichen Werkzeugsatz. Deshalb 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:30b

Die Dokumentation von Aider empfiehlt das Präfix ollama_chat/ anstelle von ollama/. Außerdem können Sie das Kontextfenster für jedes Modell in .aider.model.settings.yml festlegen. Das ist hilfreich, wenn ein Modell ein anderes Fenster als der Serverstandard benötigt:

- name: ollama_chat/qwen3-coder:30b
  extra_params:
    num_ctx: 65536

Warum ein funktionierendes Setup trotzdem unsinnige Ausgaben erzeugt

Dieser Abschnitt ist entscheidend. Ollama wählt anhand des erkannten VRAM (Videospeicher der GPU) eine Standard-Kontextlänge. Diese Standardwerte sind veröffentlicht:

ChartOllama default context length by available VRAM, documented August 2026
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 CPU-only-Server landen in der ersten Zeile: 4,096 Tokens. Nur eine große GPU erreicht die 262,144 Tokens in der letzten Zeile.

Ein Agent verarbeitet 4096 Tokens, bevor er überhaupt arbeitet. 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. In der Dokumentation von Aider steht, dass Ollama Kontext, der das Fenster überschreitet, stillschweigend verwirft. Die ältesten Tokens fallen heraus. Dadurch antwortet das Modell selbstsicher zu einer Datei, die es nicht mehr sehen kann, oder vergisst eine Anweisung, die Sie zwei Schritte zuvor gegeben haben. Dieser Mechanismus ist die Ursache für die meisten Berichte, dass ein lokales Modell zu wenig leistet, um Code zu schreiben.

Die Dokumentation von Ollama empfiehlt für Aufgaben wie Agents und Coding-Tools mindestens 64000 Tokens. Setzen Sie den Wert auf dem Server:

sudo systemctl edit ollama.service

Fü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 ps

ollama ps ist die Kontrolle. Der Befehl gibt eine Spalte CONTEXT aus. Dieser Wert zeigt, wie viele Tokens 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 now

Setzen Sie den Wert auf dem Server und nicht im Agent. 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. Wenn ein Modell ein anderes Kontextfenster benötigt, hinterlegen Sie den Wert in einer Kopie mit einer Modelfile:

FROM qwen3-coder:30b
PARAMETER num_ctx 65536
ollama create qwen3-coder-64k -f Modelfile

Kontext ist nicht kostenlos. Ein längeres Fenster benötigt mehr Arbeitsspeicher. Überwachen Sie daher die Spalte PROCESSOR. 100% GPU ist der gewünschte Zustand. Sobald ein Teil des Modells auf die CPU ausgelagert wird, sinkt die Token-Rate so stark, dass eine Agent-Schleife unbrauchbar wird. Mit Tokens pro Sekunde bei einem lokalen LLM messen ermitteln Sie die tatsächliche Grenze Ihres Servers. Die Dimensionierung des Servers vor dem Kauf wird unter 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. Für ein Chatfenster ist das sinnvoll, für Agentenarbeit jedoch nicht. 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 Zeitdauer wie 10m oder 24h, eine einfache Anzahl von Sekunden, -1, um das Modell unbegrenzt geladen zu halten, oder 0, um es sofort zu entladen. Setzen Sie die Variable zusammen mit der Kontextlänge:

[Service]
Environment="OLLAMA_CONTEXT_LENGTH=64000"
Environment="OLLAMA_KEEP_ALIVE=-1"

Das Anforderungsfeld keep_alive ist nur bei Ollamas nativen Endpunkten /api/generate und /api/chat vorhanden, nicht bei den kompatiblen Endpunkten. Ein Agent kann den Wert daher nicht pro Anfrage setzen. Die Umgebungsvariable ist die einzige verfügbare Möglichkeit. Wenn Sie den Speicher wieder freigeben müssen, entlädt ollama stop qwen3-coder:30b das Modell, ohne den Server zu stoppen.

Ollama auf einem separaten Server ausführen

Ollama bindet an localhost. Damit Sie den Dienst von einem anderen Rechner aus erreichen, setzen Sie OLLAMA_HOST=0.0.0.0:11434 in derselben systemd-Override-Konfiguration und starten Sie den Dienst neu.

Tun Sie das nur in einem privaten Netzwerk. Laut Dokumentation von Ollama ist für die lokale API keine Authentifizierung erforderlich. Ein für das Internet geöffneter Port 11434 ermöglicht daher jedem, Ihre Hardware zu verwenden und alles mitzulesen, 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-vps

Ihr Agent verwendet weiterhin http://localhost:11434/v1 und bemerkt keinen Unterschied. Die andere Option ist ein VPN. Dabei binden Sie Ollama an die VPN-Adresse statt an 0.0.0.0. Wenn mehrere Personen oder mehrere Agents einen Rechner gemeinsam nutzen, ist der Scheduler von Ollama für diese Last nicht ausgelegt. Der Vergleich zwischen Ollama und vLLM zeigt, ab wann der Durchsatzunterschied problematisch wird.

Wo ein lokales Coding-Modell überlegen ist und wo nicht

Ein Agent mit einem von Ihnen betriebenen Modell ersetzt eine Frontier-API nicht bei jeder Aufgabe. Bei vier Arten von Arbeit ist er klar überlegen.

  • Massenhafte mechanische Änderungen, bei denen jede Änderung klein ist und Sie das Ergebnis 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 die Rechnung steigt.
  • Arbeit, die Ihre Hardware nicht verlassen darf. Dazu gehören Client-Code unter einer Vertraulichkeitsvereinbarung oder ein internes Repository, das Sie nicht an Dritte übermitteln dürfen.
  • Offline- und Air-Gapped-Rechner, bei 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. Bei einer nutzungsabhängig abgerechneten API ist das genau umgekehrt. Wann ein GPU-VPS gegenüber API-Tokens kostendeckend ist enthält die Berechnung.

Bei langen Aufgaben mit mehreren Schritten ist er unterlegen. Für „Finden Sie heraus, warum dieser Test fehlschlägt, beheben Sie die Ursache und aktualisieren Sie die Aufrufer“ sind viele korrekte Tool-Aufrufe nacheinander erforderlich. Außerdem muss der gesamte bisherige Verlauf weiterhin im Kontext verfügbar sein. Ein Modell im Bereich von 8B bis 14B auf einem leistungsschwachen Server erzeugt möglicherweise einen fehlerhaften Tool-Aufruf oder verliert den Plan nach einigen Durchläufen. Dann verbringen Sie mehr Zeit damit, das Modell zu steuern, als die Aufgabe selbst gedauert hätte. Das ist kein Problem des Prompts, das sich durch eine bessere Formulierung lösen lässt. Es ist eine Frage der Kapazität.

Unterlegen ist das lokale Modell auch dann, wenn Fehler teuer sind und Sie nicht jede Zeile lesen werden. Geben Sie dem lokalen Modell eng begrenzte Aufgaben, deren Ausgabe Sie prüfen, und verwenden Sie für Arbeit, 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 gerichtet. 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 Teil des Namens. Eine Konfiguration mit einem Tag, den Sie nie abgerufen haben, schlägt daher fehl, obwohl ein ähnliches Modell installiert ist.

Der Agent antwortet in Prosa und bearbeitet keine Datei. Entweder unterstützt das Modell keine Werkzeuge, oder die Anfrage einschließlich der Werkzeugdefinitionen belegt bereits das gesamte Kontextfenster. Prüfen Sie die Kennzeichnung tools auf der Modellseite. Prüfen Sie anschließend die Spalte CONTEXT in ollama ps.

Vor dem ersten Token vergeht viel Zeit, danach ist die Geschwindigkeit normal. Die Keep-Alive-Zeit 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. Das Kontextfenster wurde gekürzt. ollama ps zeigt meist einen CONTEXT-Wert, der kleiner ist als erwartet, weil die Umgebungsvariable an Ihre Shell statt an die systemd-Unit übergeben wurde.

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 wechseln Sie zu einem kleineren Modell beziehungsweise einer kleineren Quantisierung.

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 Port 11434 bereit. Exportieren Sie ANTHROPIC_BASE_URL=http://localhost:11434, ANTHROPIC_AUTH_TOKEN=ollama und einen leeren Wert für ANTHROPIC_API_KEY, und starten Sie das Programm 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 über Code, den es nicht sehen kann?

Die Anfrage passt nicht mehr in das Kontextfenster, und der älteste Teil wurde ohne Fehlermeldung verworfen. Ollama legt den Standardkontext anhand des erkannten VRAM fest. Unter 24 GiB beträgt dieser Standardwert 4,096 Token. Die Systemaufforderung und die Tooldefinitionen eines Agenten ü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-Agenten auf einem VPS verwenden?

Wählen Sie das größte Modell mit der Kennzeichnung tools, das mit einem Kontextfenster von 64k in den Speicher passt. Bevorzugen Sie ein für Code optimiertes Modell. qwen3-coder:30b ist auf einem GPU-Server mit ausreichend VRAM die übliche Wahl. Unterhalb von ungefähr 14B Parametern kann ein Modell weiterhin gut Fragen zu Code beantworten, bei mehrstufigen Änderungen jedoch scheitern. Agentenaufgaben reagieren empfindlich auf kleine Formatierungsfehler in Tool-Aufrufen. Testen Sie das Modell mit einer echten Aufgabe aus Ihrem eigenen Repository und nicht mit einer Beispielaufforderung.

Benötige ich eine GPU, um einen Coding-Agenten mit meinem eigenen Modell auszuführen?

In der Praxis ja. Inferenz ausschließlich auf der CPU 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. Bei einer niedrigen Tokenrate wird dadurch aus einer zweiminütigen Aufgabe 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. Dadurch sinkt die Tokenrate deutlich.

#ollama#coding-agent#openai-compatible#local-llm#self-hosted-ai