Claude Code mit lokalen LLMs und ANTHROPIC_BASE_URL: Ollama, LM Studio, llama.cpp, vLLM
Native Anthropic-Endpoints, Tool-Call-Kompatibilität und Context-Window-Sizing für lokales Claude Code.
Zuletzt getestet: April 2026. Siehe Changelog am Ende.
TL;DR Cheat Sheet
| Ziel | Setup |
|---|---|
| MacBook Air | Gemma 4 26B-A4B Q4, 32K Context, LM Studio oder Ollama |
| MacBook Pro | Gemma 4 26B-A4B Q4 / UD-Q4, 64K Context, llama.cpp oder LM Studio |
| Claude Code Minimum | 32K Context (alles darunter ist eine Chat-Demo) |
| Bestes lokales Backend | LM Studio oder Ollama zuerst; llama.cpp für Fortgeschrittene; vLLM für Server |
| Vermeiden | 8K / 16K Context, dichtes 31B Gemma 4 auf 32-GB-Maschinen, alte llama.cpp-Builds |
Die Faustregel für lokales Claude Code
Drei Faktoren entscheiden, ob eine lokale Claude-Code-Session funktioniert:
- Modellqualität entscheidet, ob die Antwort schlau ist.
- Tool-Call-Formatierung entscheidet, ob Claude Code mit der Antwort handeln kann.
- Context-Länge entscheidet, ob die Session die ersten paar Edits überlebt.
Für lokale Coding-Agents: 32K ist die Untergrenze. 64K ist der Sweet Spot. Alles unter 32K ist eine Chat-Demo, kein Claude Code.
Empfohlenes Setup
Nimm das hier zuerst. Schau dir die Alternativen erst an, wenn du das ausprobiert hast.
- Backend: LM Studio (≥ 0.4.1) oder Ollama (≥ v0.14.0) — beide bieten einen nativen Anthropic-kompatiblen lokalen Endpoint, kein Proxy nötig.
- Modell:
gemma4:26b-a4b(Gemma 4 26B-A4B-it, Q4-Quant). MoE Active-Param ≈ 3,88 B → laptopfreundliche Latenz, Tool-Use ist direkt ins Modell trainiert. - Context: 32K Context auf einem MacBook Air, 64K Context auf einem MacBook Pro M5 Pro/Max mit 48 GB+ RAM.
- Maschine: 32 GB+ RAM dringend empfohlen. 24 GB funktioniert bei 24K–32K mit Vorsicht.
Wenn du keinen Anthropic-kompatiblen Modus hast und nur einen OpenAI-kompatiblen lokalen Endpoint läufst, setz LiteLLM davor (siehe Abschnitt zu LiteLLM).
1. Environment Variables, die Claude Code liest
# Wohin Claude Code Requests POSTet. Default: https://api.anthropic.com
ANTHROPIC_BASE_URL=http://localhost:11434
# Wird als Auth gesendet. Lokale Server akzeptieren meist jeden nicht-leeren Wert.
ANTHROPIC_AUTH_TOKEN=ollama
# Mappe Claude Codes "claude-opus-X-Y" / "claude-sonnet-X-Y" / "claude-haiku-X-Y"
# auf Modellnamen, die dein lokales Backend serviert.
ANTHROPIC_DEFAULT_OPUS_MODEL=gemma4:26b-a4b
ANTHROPIC_DEFAULT_SONNET_MODEL=gemma4:26b-a4b
ANTHROPIC_DEFAULT_HAIKU_MODEL=gpt-oss:20b
claude
Oder pro Aufruf überschreiben:
claude --model gemma4:26b-a4b
Wenn ANTHROPIC_BASE_URL gesetzt ist, die URL aber nicht mit der richtigen Shape antwortet, fällt Claude Code nicht auf die Cloud zurück. Es wirft einen Fehler.
2. Context-Länge: der versteckte Failure-Mode
Claude Code ist kein Chat-Prompt. Vor deinem eigentlichen Request sieht das Backend:
- Claude Codes System-Prompt (~6–10K Token allein)
- Tool-Definitionen für
Read/Edit/Bash/Grep/Glob/TodoWrite - Konversationshistorie
- Datei-Auszüge und vollständige Reads
- Diffs
- Befehlsausgabe
- Retry-/Error-Messages aus fehlgeschlagenen Tool-Calls
Das heißt: 8K- und 16K-Kontexte sind irreführende Tests. Sie können eine Chat-Frage beantworten, sind aber nicht genug für zuverlässiges agentisches Coding. Die Session überlebt eine Handvoll Turns, dann degradiert sie still — Datei-Edits werden abgeschnitten, Tool-Calls verlieren Argumente, der Loop verheddert sich.
Praktische Context-Stufen
| Context | Verdikt | Was passiert |
|---|---|---|
| 8K | Kaputt für Claude Code | System-Prompt + Tools fressen das Window, bevor dein Code ankommt. Nur Chat. |
| 16K | Nur für Demos | Winzige Edits, kurze Sessions. Kein echter Modell-Test. |
| 25K | LM Studios genanntes Minimum | Reicht für kleine Tasks, wenn Tool-Calls zuverlässig sind. |
| 32K | Echtes Minimum (32K Context). | Ollama empfiehlt diese Untergrenze. Default. |
| 64K | Sweet Spot (64K Context). | Beste Balance auf 32-GB+-Maschinen. Schafft mittlere Repos und Multi-File-Edits. |
| 128K+ | Abnehmender Grenznutzen | Prefill-Latenz und KV-Cache-Speicher steigen stark. Lohnt sich nur auf High-Memory-Servern, und nur für repo-weite Reads. |
Apple-Silicon Context-Presets
| Maschine | Empfohlener Context | Hinweise |
|---|---|---|
| MacBook Air M5, 16 GB | 16K–24K | Kleinere Modelle nutzen (≤8B). 26B-A4B ist eng. |
| MacBook Air M5, 24 GB | 24K–32K | 32K ist das Ziel; andere Apps leicht halten. |
| MacBook Air M5, 32 GB | 32K | Bestes Air-Setup. Höher schlägt selten Thermal Throttling. |
| MacBook Pro M5 Pro, 24 GB | 32K | Bessere Sustained-Performance als Air bei gleichem Context. |
| MacBook Pro M5 Pro, 48/64 GB | 64K | Sweet Spot für ernsthaftes lokales Coding. |
| MacBook Pro M5 Max, 64/128 GB | 64K Default, 128K experimentell | 128K für repo-weite Analyse, nicht für jeden Edit-Loop. |
Hinweis: Backend-Docs sind sich nicht einig — LM Studio sagt “ab 25K, höher für bessere Ergebnisse”, Ollama empfiehlt 32K. Nimm 32K als Cross-Backend-Baseline. “25K ist genug” zu lesen, ist der häufigste Fehler.
3. Claude-Code-Setup mit Ollama (nativ, v0.14.0+)
Ollama hat am 2026-01-16 die Anthropic-Messages-API-Kompatibilität angekündigt. Kein Proxy, kein LiteLLM, nichts.
# Context-Länge zuerst setzen — das ist der wichtigste Knopf
export OLLAMA_CONTEXT_LENGTH=32768 # 65536 auf einem Pro
export ANTHROPIC_AUTH_TOKEN=ollama
export ANTHROPIC_BASE_URL=http://localhost:11434
claude --model gemma4:26b-a4b
Cloud-gehostete Ollama-Modelle funktionieren auch:
claude --model glm-4.7:cloud
claude --model minimax-m2.1:cloud
Zwei bekannte Limits des Anthropic-Compat-Layers von Ollama (April 2026):
- Kein Prompt-Caching. Anthropics
cache_controlgreift nicht — jeder Claude-Code-Request verarbeitet System-Prompt und Konversationshistorie von Grund auf neu. - Kein
tool_choice. Claude Code nutzt gelegentlichtool_choice, um einen bestimmten Tool-Call zu erzwingen. Ollamas Compat-Layer ignoriert das. Wenn es darauf ankommt, wählt Claude Code möglicherweise das falsche Tool und steckt im Loop fest.
4. Claude-Code-Setup mit LM Studio (nativ, 0.4.1+)
LM Studio hat den Anthropic-kompatiblen /v1/messages-Endpoint am 2026-01-30 hinzugefügt. Streaming, Tool-Calls und Message-Shape werden alle nativ unterstützt.
# Context auf mindestens 32K im LM Studio UI setzen (oder höher; siehe Abschnitt 2)
lms server start --port 1234
export ANTHROPIC_BASE_URL=http://localhost:1234
export ANTHROPIC_AUTH_TOKEN=lmstudio
claude --model openai/gpt-oss-20b
Für VS Code mit der Claude-Code-Extension (Env-Vars aus deiner Shell werden NICHT von VS Code geerbt):
// .vscode/settings.json
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "http://localhost:1234" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "lmstudio" }
]
Die Docs von LM Studio sagen “mindestens 25K”. Setz 32K. Siehe Abschnitt 2.
5. Claude-Code-Setup mit llama.cpp (Apple-Silicon-Fast-Path für Gemma 4 26B-A4B)
Wenn du auf Apple Silicon bist und absolut minimalen Overhead mit Gemma 4 26B-A4B willst, ist der Server von llama.cpp pro Token schneller als Ollama oder LM Studio. Du brauchst einen aktuellen Build (einer, der -hf für HuggingFace-Pulls und --jinja für Chat-Templates unterstützt).
./build/bin/llama-server \
-hf ggml-org/gemma-4-26B-A4B-it-GGUF:Q4_K_M \
--host 127.0.0.1 \
--port 8080 \
-ngl 99 \
-c 65536 \
--jinja
export ANTHROPIC_BASE_URL=http://localhost:8080
export ANTHROPIC_AUTH_TOKEN=llama-cpp
claude --model gemma-4-26B-A4B
Flags, die zählen:
-c 65536setzt 64K Context (auf engeren Maschinen-c 32768).-ngl 99lagert alle Layer auf Metal/GPU aus.--jinjaist erforderlich, damit das Chat-Template von Gemma 4 korrekt rendert. Ohne das formatieren Tool-Calls nicht und du siehst<unused24>/<unused49>-Token im Output.-hf ggml-org/gemma-4-26B-A4B-it-GGUF:Q4_K_Mzieht das GGUF direkt von HuggingFace.
Caveat: Die Anthropic-Compat von llama.cpp ist partiell. Funktioniert für Chat und einfaches Tool-Calling. Streaming-Shape und einige Anthropic-spezifische Request-Felder sind rauer als bei Ollama oder LM Studio. Wenn etwas seltsam bricht, fall auf Ollama zurück. llama.cpp ist der Speed-Play, nicht der Compatibility-Play.
6. Claude-Code-Setup mit vLLM (nativ + Tool-Parser)
vLLM liefert eine offizielle Claude-Code-Integration. Drei Dinge beim Server-Start: ein Tool-Calling-fähiges Modell, --enable-auto-tool-choice und der richtige --tool-call-parser.
vllm serve openai/gpt-oss-120b \
--served-model-name my-model \
--enable-auto-tool-choice \
--tool-call-parser openai \
--port 8000
export ANTHROPIC_BASE_URL=http://localhost:8000
export ANTHROPIC_API_KEY=dummy
export ANTHROPIC_AUTH_TOKEN=dummy
export ANTHROPIC_DEFAULT_OPUS_MODEL=my-model
export ANTHROPIC_DEFAULT_SONNET_MODEL=my-model
export ANTHROPIC_DEFAULT_HAIKU_MODEL=my-model
claude
Der Wert von --tool-call-parser hängt von der Modellfamilie ab — openai für die gpt-oss-Familie, llama3_json für Llama 3.x, hermes für Hermes. Falscher Parser → Tool-Calls kommen als Plain-Text zurück und Claude Codes edit/grep/bash-Tools machen still einen No-Op.
7. LiteLLM — für Fallbacks, nicht für Übersetzung
Da Ollama, LM Studio, llama.cpp und vLLM jetzt alle nativ Anthropic sprechen, ändert sich die Rolle von LiteLLM. Es ist nicht mehr “der Übersetzer” — es ist der Router für Fallbacks, Request-Logging, Per-Tenant-Keys und Rate-Limits. Auch die richtige Antwort, wenn deine einzige lokale Option ein OpenAI-kompatibler lokaler Endpoint ist.
# litellm-config.yaml
model_list:
- model_name: claude-opus-4-7
litellm_params:
model: openai/my-vllm-model
api_base: http://vllm:8000/v1
- model_name: claude-sonnet-4-6
litellm_params:
model: ollama/gemma4:26b-a4b
api_base: http://ollama:11434
- model_name: claude-haiku-4-5
litellm_params:
model: anthropic/claude-haiku-4-5
api_key: os.environ/ANTHROPIC_API_KEY
router_settings:
fallbacks:
- claude-opus-4-7: ["claude-haiku-4-5"] # local fail → cloud Haiku
Der größte Einzelnutzen: wenn ein lokaler Tool-Call still scheitert, fällt LiteLLM transparent auf Cloud-Haiku zurück. Claude Code läuft weiter.
8. Häufige Fehler (die Error-Strings, nach denen Entwickler googeln)
tool_use parse error / invalid tool call / tool_use is not supported
Drei verschiedene Symptome, eine Ursache: das Modell emittiert keine tool_use-Content-Blöcke im Anthropic-Format.
Das tückischste Symptom ist das stille — Claude Code startet, druckt die Plain-Prosa-Antwort des Modells (“Ich würde die Datei so ändern…”) und nichts passiert. Kein File-Edit, kein Fehler.
Häufige Ursachen (April 2026):
- vLLM:
--enable-auto-tool-choicefehlt oder--tool-call-parserist falsch. - Ollama: Modell wurde nicht für Tool-Calling trainiert (Stock
llama3.xInstruct vermeiden). - llama.cpp:
--jinjafehlt. Das Chat-Template rendert falsch und du siehst literale<unused24>/<unused49>-Token. - LM Studio: Modell-Datei ist okay, aber das geladene Preset nutzt das falsche Template.
context length exceeded / Modell stoppt mitten im Edit
Die Prompts von Claude Code überlaufen das konfigurierte Window. Die Session beendet vielleicht einen Turn, dann wird der nächste File-Edit still abgeschnitten. Fix: Context auf mindestens 32K erhöhen. Wenn du schon bei 32K bist und das immer noch trifft, liest das Modell zu aggressiv — weniger Tools oder kürzere File-Reads.
empty assistant response
Backend hat 200 OK mit leerem Content-Array zurückgegeben. Ursachen:
- Streaming-SSE-Format-Mismatch (meist llama.cpp).
- Tool-Call-Parser hat die Message verschluckt, weil er sie nicht parsen konnte.
- Modell hat nur einen
<unused24>/<unused49>-Token emittiert und der Parser hat den Rest verworfen.
Fix: Backend wechseln (Ollama oder LM Studio, falls du auf llama.cpp warst), oder llama.cpp auf einen Build mit gepatchtem Gemma-4-Chat-Template upgraden.
model not found / 404 the model X does not exist
Claude Code hat nach claude-opus-4-7 gefragt, aber das Backend serviert gpt-oss:20b oder gemma4:26b-a4b. Fixes:
ANTHROPIC_DEFAULT_OPUS_MODEL(plus_SONNET_und_HAIKU_) auf den tatsächlichen Modellnamen des Backends setzen.claude --model <backend-name>pro Aufruf nutzen.- Namen in LiteLLM mappen (das Feld
model_name:ist das, wonach Claude Code fragt;model:ist das, was serviert wird).
messages: Extra inputs are not permitted (HTTP 422)
Manche Backends sind strenger als Anthropics eigenes. Sie lehnen Anthropic-spezifische Felder ab (cache_control, thinking, tools[].input_schema, metadata.user_id). Fix: Backend upgraden, oder eine kleine Middleware-Proxy laufen lassen, die unsupported Felder vor dem Forwarden strippt.
ANTHROPIC_BASE_URL ignoriert / Claude Code ruft immer noch die echte API
- Env-Var wurde in
.zshrcnach dem Shell-Start gesetzt — Terminal neu starten. ~/.config/claude/config.jsonoder ein--api-key-Flag überschreibt die Env-Var.- VS Code: Env-Vars aus deiner Shell werden NICHT geerbt. Nutze
claudeCode.environmentVariablesin Workspace-Settings (Abschnitt 4).
echo $ANTHROPIC_BASE_URL in derselben Shell, die claude startet. Wenn leer, hast du ein Sourcing-Problem.
9. Debug-Flow
Wenn etwas bricht, geh diesen Baum durch, bevor du Backends wechselst:
- Hat das Modell geladen?
- Nein → Quant-Größe vs RAM prüfen. 26B-A4B Q4 braucht ~16 GB frei; größere Quants brauchen mehr.
- Ist der Context mindestens 32K?
- Nein → auf 32K (Air) oder 64K (Pro) erhöhen. Siehe Abschnitt 2.
- Sind Tool-Calls fehlerhaft? (Schau nach
<unused24>,<unused49>, Plain-Prosa wo du einen Edit erwartet hast.)- Ja → in den nativen Anthropic-Modus wechseln (Ollama/LM Studio), oder bei vLLM
--tool-call-parserverifizieren, oder bei llama.cpp--jinjaergänzen.
- Ja → in den nativen Anthropic-Modus wechseln (Ollama/LM Studio), oder bei vLLM
- Stoppt Claude Code mitten im Edit?
- Ja → Context-Erschöpfung. Context-Targets in deinen Tools senken, oder schnellere Quant nutzen, damit das Modell Turns beendet, bevor der Window-Reuse-Cycle einsetzt.
- Halluziniert das Modell Dateien, die nicht existieren?
- Ja → das Modell ruft
Readnicht vorEdit. Eine CLAUDE.md-Regel ergänzen, die Read-vor-Edit verlangt, oder ein tool-genaueres Modell nutzen (Gemma 4 26B-A4B ist hier solide).
- Ja → das Modell ruft
10. Smoke-Test
Verifiziere dein Setup mit einem Prompt. Frag Claude Code:
Erstelle eine kleine FastAPI-App mit einem
/health-Endpoint, füge einen pytest-Test hinzu, lass pytest laufen und behebe Failures.
Besteht, wenn:
- Es Dateien korrekt liest/schreibt (keine halluzinierten Pfade).
- Es den Test-Befehl ausführt (du echte
pytest-Ausgabe siehst). - Es einen Failure patcht (z.B. fehlende Dependency), ohne den Context zu verlieren.
- Es das Tool-Call-Format nicht verliert (kein
<unused24>/<unused49>-Leak). - Es nicht nach dem ersten Edit abschneidet.
Erwartetes Terminal-Feel:
✓ model loaded (gemma4:26b-a4b, Q4_K_M)
✓ context: 32768
✓ tool call parsed (Edit)
✓ edited file (app.py)
✓ tool call parsed (Bash)
✓ tests passed
Wenn du nicht alle fünf siehst, geh den Debug-Flow oben durch.
11. Kompatibilitätsmatrix (April 2026)
| Backend | Native Anthropic-API | Tool-Calls | Context-Untergrenze | Hinweise |
|---|---|---|---|---|
| Ollama (≥ v0.14.0) | Ja | Modellabhängig | 32K Context (Cross-Backend-Baseline) | Einfachstes Setup. Kein Prompt-Caching, kein tool_choice (siehe Abschnitt 3). |
| LM Studio (≥ 0.4.1) | Ja | Ja (out of the box) | Stated 25K, nimm 32K | Streaming + tool_use-Blöcke nativ unterstützt. VS-Code-Extension nimmt Workspace-Env-Vars. |
| llama.cpp Server | Partiell | Ja mit --jinja | 32K, 64K Context auf Pro | Niedrigster Overhead auf Apple Silicon. Rauere Anthropic-Compat. Bester Pfad für Gemma 4 26B-A4B. |
| vLLM | Ja | Ja mit --enable-auto-tool-choice + korrektem Parser | Modellabhängig | Bester Throughput. Erfordert korrekten Parser pro Modellfamilie. |
| LiteLLM | Routet zu jedem Backend | Was das Backend unterstützt | n/a | Für Fallbacks und Logging, oder um einen OpenAI-kompatiblen lokalen Endpoint als Anthropic zu wrappen. |
| Direct Ollama < v0.14.0 | Nein | Nein | n/a | Upgraden. |
12. Hardware × Modell × Context × Backend (die Cheat-Sheet-Tabelle)
Ein Entwickler sollte nicht raten müssen, was zu nutzen ist:
| Maschine | Modell | Context | Backend | Verdikt |
|---|---|---|---|---|
| MacBook Air M5, 16 GB | Gemma 4 E4B | 16K–24K | LM Studio | brauchbar für kleine Tasks |
| MacBook Air M5, 24 GB | Gemma 4 26B-A4B Q4 | 24K–32K | Ollama / LM Studio | gut |
| MacBook Air M5, 32 GB | Gemma 4 26B-A4B Q4 | 32K | Ollama / LM Studio | bestes Air-Setup |
| MacBook Pro M5 Pro, 48 GB | Gemma 4 26B-A4B Q4/UD-Q4 | 64K | llama.cpp / LM Studio | Sweet Spot |
| MacBook Pro M5 Max, 64 GB+ | Gemma 4 26B-A4B oder 31B | 64K–128K | llama.cpp / vLLM | bestes Lokal |
Das ist die meistkopierte Tabelle dieses Guides. Bookmarken.
13. Gemma 4 26B-A4B: der Apple-Silicon-Sweet-Spot
Für lokales Mac-Claude-Code ist die herausragende Gemma-4-Variante 26B-A4B-it, nicht die dichte 31B. Gründe:
- Google hat Tool-Use direkt in Gemma 4 reintrainiert (nicht als Fine-Tune drangeschraubt). Es funktioniert beim ersten Versuch, nicht erst nach drei Retries.
- Die 26B MoE aktiviert nur ~3,88 B Parameter pro Inference, also liegt die Latenz im Bereich eines 4-B-Modells — rund 300 Token/Sek auf M2 Ultra.
- Starkes Tool-Use-Verhalten, gute Coding-Qualität für private/lokale Workflows.
- Passt bei brauchbaren Context-Größen auf High-Memory-MacBooks.
Warum 26B-A4B statt 31B?
- Schnellere Tool-Calls — jeder Claude-Code-Turn hängt an Tool-Call-Latenz, nicht an Single-Shot-Qualität.
- Niedrigerer Active-Parameter-Count hält Prefill billig.
- Besser für Laptops — 31B dichtgepackt braucht mehr RAM und mehr Thermal-Headroom.
- Genug Qualität für iteratives Coding; der Agent-Loop zählt mehr als Peak-IQ.
- 31B kann für Single-Shot-Antworten besser sein — aber Claude Code ist viele kleine Turns, nicht eine große Antwort.
Für lokales Coding mit Gemma 4 speziell: nimm 26B-A4B, außer du bist auf einem 64-GB+-Pro und hast gemessen, dass 31B Q4 auf deiner Hardware tatsächlich Turns schneller beendet.
14. Andere Modell-Picks für Claude Code (April 2026)
Wenn Gemma 4 nicht verfügbar ist oder du vergleichen willst:
gpt-oss:20b— einfacher Einstieg. Tool-Calling zuverlässig, läuft auf einer einzelnen anständigen GPU. In den offiziellen Claude-Code-Blogposts von Ollama und LM Studio empfohlen.gpt-oss:120b— deutlich klüger auf echten Codebases. Die vLLM-Claude-Code-Integration nutzt das als Beispiel. Braucht ernsthaft VRAM.qwen3-coder— gezielt für Coding gebaut. Starke Tool-Call-Performance auf Ollama. In Community-Threads im März/April 2026 häufig als stärkster lokaler Pick für Claude Code genannt.qwen3.5-Familie — die 35B-MoE-Varianten gelten als die stärksten agentischen Coding-Open-Modelle in dieser Größenklasse. Tool-Call-Support pro Quant verifizieren.glm-4.7-flash/glm-4.7:cloud— starker agentischer Coder. Verfügbar als Ollama-Cloud-Modell (keine lokale GPU nötig).minimax-m2.1:cloud— neuere Ollama-Cloud-Option, agentic-tuned.
Was zu vermeiden ist: Stock-llama3.x-Instruct-Modelle ohne Tool-Fine-Tuning. Sie sehen aus, als würden sie funktionieren, scheitern dann still bei File-Edits.
15. Setups, die ich vermeiden würde
- 8K Context. Zu klein für Claude Code. Der System-Prompt frisst es, bevor dein Code ankommt.
- 16K Context. Nur Demos. Beurteile ein Modell nicht nach 16K-Verhalten.
- Alte llama.cpp-Builds mit Gemma 4. Kein
--jinjaoder kein gepatchtes Chat-Template →<unused24>/<unused49>-Token-Leak. - 128K Context auf einem 32-GB-Laptop. KV-Cache + Prefill-Latenz-Steuer > Nutzen.
- Modellqualität beurteilen, bevor Tool-Calls stabil sind. Erst Parser/Template fixen, dann Modell evaluieren.
- Über LiteLLM routen, wenn das Backend bereits nativ Anthropic ist. Hop für nichts — LiteLLM nur für Fallbacks oder zum Wrappen eines OpenAI-kompatiblen lokalen Endpoints nutzen.
16. Wiederverwendbares Startup-Skript
Drop in start-claude-code-local.sh und chmod +x. Default 32K Context, via Env überschreibbar.
#!/usr/bin/env bash
set -euo pipefail
export OLLAMA_CONTEXT_LENGTH="${OLLAMA_CONTEXT_LENGTH:-32768}"
export ANTHROPIC_BASE_URL="${ANTHROPIC_BASE_URL:-http://localhost:11434}"
export ANTHROPIC_AUTH_TOKEN="${ANTHROPIC_AUTH_TOKEN:-ollama}"
export ANTHROPIC_DEFAULT_OPUS_MODEL="${ANTHROPIC_DEFAULT_OPUS_MODEL:-gemma4:26b-a4b}"
export ANTHROPIC_DEFAULT_SONNET_MODEL="${ANTHROPIC_DEFAULT_SONNET_MODEL:-gemma4:26b-a4b}"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="${ANTHROPIC_DEFAULT_HAIKU_MODEL:-gpt-oss:20b}"
echo "Starte Ollama mit context=$OLLAMA_CONTEXT_LENGTH"
ollama serve &
OLLAMA_PID=$!
# Auf Ollama warten
until curl -sf "$ANTHROPIC_BASE_URL/api/version" > /dev/null; do
sleep 0.5
done
echo "Starte Claude Code → $ANTHROPIC_BASE_URL"
echo "Modell: $ANTHROPIC_DEFAULT_OPUS_MODEL"
claude
kill $OLLAMA_PID 2>/dev/null || true
Für LM Studio ollama serve durch lms server start --port 1234 ersetzen und Env-Vars entsprechend anpassen.
Dieses Skript (und Ergänzungen für andere Backends, sobald sie kommen) lebt im Companion-Repo:
github.com/renezander030/local-ai-coding-stack —
git clone,chmod +x scripts/start-claude-code-local.sh, run.
17. Produktionsempfehlung
Für echte Arbeit lass Claude Code nicht direkt mit einem einzelnen lokalen Endpoint reden, ohne Fallback-Pfad:
Claude Code
│ ANTHROPIC_BASE_URL
▼
LiteLLM (Router + Logger)
│ primary
▼
Ollama / LM Studio / llama.cpp / vLLM (lokal)
│ bei Tool-Call-Failure oder 5xx
▼
Cloud Claude Haiku (Fallback)
│
▼
Audit-Log
Modell-Swaps ohne Claude Code neu zu starten; transparenter Fallback, wenn lokales Tool-Calling still scheitert; Request-Logs, die du grepen kannst, wenn etwas schiefgeht. Dasselbe Five-Contract-Pattern wie agent-approval-gate.
18. Wann lokale Modelle die falsche Wahl sind
- Repo-weite Refactors. Multi-Step-Tool-Flows kumulieren stille Tool-Call-Failures. Lokale Fine-Tunes verlieren schnell an Genauigkeit.
- Sicherheitskritische Edits ohne Approval-Gate. Nutze agent-approval-gate und die Lokal-vs-Cloud-Frage wird zweitrangig.
- Tool-lastige Sessions (50+ Tool-Calls). Jeder stille Failure kumuliert.
- Alles, was nach deiner Zeit abgerechnet wird. Ein gescheiterter lokaler Tool-Call kostet deine Zeit; ein erfolgreicher Haiku-Call kostet ungefähr $0,001.
Lokales Claude Code passt für: Chat-only-Assist auf privatem Code, Klassifikations-/Summarization-Sub-Steps, air-gapped Environments.
Quellen
- Ollama — Claude Code with Anthropic API compatibility (2026-01-16)
- LM Studio — Use your LM Studio Models in Claude Code (2026-01-30)
- vLLM — Claude Code integration docs
- Anthropic Claude Code documentation
- Anthropic Messages API reference
- LiteLLM Anthropic-compatible route docs
- Claude Code GitHub issue #7178 — local/self-hosted model support
Changelog
2026-04-29
- Deutsche Übersetzung der englischen Version.
2026-04-28
- TL;DR-Cheat-Sheet, “Empfohlenes Setup”, Smoke-Test, Debug-Flow, wiederverwendbares Startup-Skript, Hardware × Modell × Context × Backend-Tabelle ergänzt.
- Error-String-Sektion um
<unused24>/<unused49>-Template-Leak-Symptome erweitert. - 26B-A4B vs 31B-Vergleich ergänzt.
- “Setups, die ich vermeiden würde” ergänzt.
- Update-Log → Changelog umbenannt.
- Gemma-4-26B-A4B-Context-Empfehlungen ergänzt.
- MacBook Air vs Pro Presets ergänzt.
- 32K / 64K Claude-Code-Guidance ergänzt.
- Backend-Coverage neu geschrieben: Ollama, LM Studio, vLLM alle nativ Anthropic; llama.cpp als Apple-Silicon-Fast-Path ergänzt.
- LiteLLM als Fallback-Router (und OpenAI-Compat-Wrapper) repositioniert, nicht als Übersetzer.
2026-04-22
- Initialer Publish (Englisch).
Ihre Agenten antworten aus dem, was die Suche gerade findet, und oft ist das der Stand vom letzten Quartal. Ich baue die Kontextschicht, aus der sie antworten und handeln: einen temporalen Wissensgraphen, der jeden Fakt mit Quelle und Gültigkeitszeitraum hält, mit den Rechten der jeweiligen Person liest und nichts ohne Freigabe einer Person schreibt. Auf Ihrem eigenen Tenant, nach Stunden abgerechnet, Schritt für Schritt.