Harness Engineering: Warum der Rahmen wichtiger ist als das Modell
Ich habe drei Iterationen gebraucht, um ein einfaches Feature in zwei Repos zu implementieren. Nicht weil das Modell schlecht war — dasselbe Modell, dieselbe

In den vorigen Posts dieser Serie haben wir einen Mac Mini M4 mit Ollama hinter einem Headscale-VPN als lokalen LLM-Endpunkt und OpenCode als CLI-Coding-Agent mit verschiedenen Anbietern betrachtet.
In diesem Post fügen wir die Teile zusammen - nicht als Blaupause, sondern als Proof-of-Concept-Evaluierung: Wir haben diese Kombination bei Infralovers aufgebaut und in der Praxis getestet, um herauszufinden, wo die Grenzen liegen und für welche Use Cases sie wirklich taugt. Kurze Antwort vorab: Als Einstieg und für kleine Teams funktioniert es gut - sobald das Team wächst oder Agentic Coding zum täglichen Kern-Workflow wird, stößt man ziemlich schnell an die Grenzen.
Eine zentrale Erkenntnis vorab: Wir lassen nicht alles lokal laufen. OpenCode ist mit zwei Anbietern konfiguriert - dem lokalen Ollama-Endpunkt für den täglichen Einsatz und Anthropics API für Aufgaben, die tieferes Reasoning erfordern. Dieser hybride Ansatz ist der Kern des Setups.
Das haben wir konkret aufgebaut und getestet:
Der Mac Mini dient uns als Test-Gerät für genau diese Frage: Was ist mit einem kleinen, günstigen Apple-Silicon-Rechner möglich - und lohnt sich der Invest überhaupt?

Jeder Entwickler kann sein eigenes Client-Tool wählen. OpenCode, VS Code mit Continue, JetBrains mit KI-Plugins oder sogar curl - es spielt keine Rolle. Der Ollama-Endpunkt spricht das OpenAI-API-Format, also kann alles, was mit OpenAI sprechen kann, auch mit unserem Mac Mini sprechen.
Der Mac Mini führt Ollama mit OLLAMA_HOST=0.0.0.0 aus und ist mit unserem Headscale-VPN verbunden. Seine Tailscale-IP ist stabil (z.B. 100.64.0.10), sodass er immer erreichbar ist. Alternativ lässt sich Tailscale DNS nutzen, um einen Hostnamen wie mac-mini.your-tailnet.ts.net, statt einer fixen IP, anzusprechen.
Auf jedem Entwicklerrechner erstellen wir eine Datei namens ~/.config/opencode/opencode.json mit folgendem Inhalt:
1{
2 "$schema": "https://opencode.ai/config.json",
3 "provider": {
4 "company-ollama": {
5 "npm": "@ai-sdk/openai-compatible",
6 "name": "Infralovers LLM",
7 "options": {
8 "baseURL": "http://100.64.0.10:11434/v1"
9 },
10 "models": {
11 "qwen3-coder:30b": {
12 "name": "Qwen3 Coder 30B (Firma)"
13 },
14 "llama3.1:8b": {
15 "name": "Llama 3.1 8B (Firma)"
16 }
17 }
18 },
19 "anthropic": {
20 "name": "Anthropic",
21 "models": {
22 "claude-sonnet-4-5-20250929": {
23 "name": "Claude 4.5 Sonnet"
24 }
25 }
26 }
27 }
28}
Wichtig: Wir definieren zwei Anbieter in derselben Konfiguration. Den Firmen-Ollama-Endpunkt für die tägliche Arbeit und Anthropics API für Fälle, in denen wir Frontier-Modell-Reasoning brauchen. Entwickler wechseln mit /models in OpenCode zwischen ihnen.
Alles, was wir brauchen, um loszulegen, ist eine erfolgreiche Verbindung über deinen Tailscale-Client. Führe tailscale status aus, um die Konnektivität zu überprüfen, und dann können wir OpenCode starten und das Firmenmodell wählen:
1# Sicherstellen, dass man mit dem Tailnet verbunden ist
2tailscale status
3
4# Den Ollama-Endpunkt testen
5curl http://100.64.0.10:11434/v1/models | jq
6
7# OpenCode starten und Firmenmodell wählen
8opencode
9> /models company-ollama/qwen3-coder:30b
10> Hallo, kannst du mein Projekt sehen?
Das war die Ausgangsbasis. Kein komplexes Setup, keine API-Keys für den lokalen Endpunkt, keine Abrechnungskonfiguration. VPN verbinden, loscoden - und schauen, wo es funktioniert und wo die Grenzen auftauchen.
Wir nutzen lokale Modelle nicht für alles - und haben im Test schnell gemerkt, dass das auch nicht sinnvoll wäre. Als grobe Orientierung haben wir unterschieden, wo lokale Inferenz funktioniert und wo sie an ihre Grenzen stößt. Das ist eine Arbeitshypothese, keine gemessene Aufteilung:
Wie sich das in der Praxis verteilt, hängt stark vom Entwickler, der Aufgabe und den genutzten Modellen ab. Wir haben noch keine belastbaren Messungen - das ist der Stand unserer laufenden Evaluation. Was wir aber schon konkret beobachtet haben: Wenn 3+ Entwickler gleichzeitig dasselbe 14B-Modell nutzen, steigen die Antwortzeiten merklich. Mit 32GB RAM ist der Spielraum für parallele Inferenz mit größeren Modellen begrenzt.
Das Schöne an einem OpenAI-kompatiblen Endpunkt ist, dass er nicht auf OpenCode beschränkt ist. Hier sind ein paar Beispiele, was wir noch verbinden können:
Continue ist ein Open-Source KI-Code-Assistent als IDE-Erweiterung. Wir können auch diesen auf den Ollama-Endpunkt zeigen lassen:
1{
2 "models": [{
3 "title": "Firmen-LLM",
4 "provider": "ollama",
5 "model": "qwen3-coder:30b",
6 "apiBase": "http://100.64.0.10:11434"
7 }]
8}
n8n kann den Ollama-Endpunkt für KI-gestützte Workflows nutzen: automatisiertes Code-Review, Dokumentationsgenerierung, Ticket-Zusammenfassung und mehr. Der AI-Agent-Node verbindet sich mit jedem OpenAI-kompatiblen Endpunkt.
Jedes Skript, das das OpenAI Python- oder JavaScript-SDK nutzt, funktioniert durch Ändern der Base-URL:
1from openai import OpenAI
2
3client = OpenAI(
4 base_url="http://100.64.0.10:11434/v1",
5 api_key="not-needed" # Ollama braucht keinen Key
6)
7
8response = client.chat.completions.create(
9 model="qwen3-coder:30b",
10 messages=[{"role": "user", "content": "Prüfe diesen Code: ..."}]
11)
Mit MCP-Unterstützung in sowohl OpenCode als auch anderen Tools kann man die Fähigkeiten der KI mit benutzerdefinierten Tools erweitern - Datenbankzugriff, interne APIs, Dokumentationssuche - alles über den privaten Endpunkt geroutet.
Nach mehreren Monaten mit diesem Setup haben wir Folgendes gelernt:
ollama pull qwen3-coder:14b wöchentlich.Lokale Inferenz hat reale Grenzen. Wir greifen zur Cloud-API wenn:
Die Stärke dieses Setups ist nicht, dass lokal die Cloud ersetzt. Es ist, dass lokal das Volumen bewältigt und die Cloud die Komplexität.
Dieser Stack braucht keinen Serverraum, kein dediziertes Ops-Team und kein sechsstelliges Budget - der Einstieg als Proof of Concept ist niedrigschwellig. Was wir gelernt haben:
Gleichzeitig gilt: Wenn das Team wächst oder Agentic Coding - also längere autonome Abläufe, parallele Agenten, große Kontextaufgaben - zum zentralen Bestandteil des Workflows wird, ist ein einzelner Mac Mini schnell überfordert. Dann stellt sich die Frage nach leistungsfähigerer lokaler Hardware oder Cloud-APIs als primärer Inferenzschicht.
Dieses Setup funktioniert für uns bei Infralovers - aber natürlich evaluieren wir auch frontier Ansätze für uns selbst und unsere Kunden. Claude Code, Codex CLI, Bob, und andere. Nicht weil lokal nicht gut genug wäre, sondern weil jedes Team individuelle Anforderungen und Präferenzen hat. Was beim einen gut funktioniert, kann beim anderen aus verschiedenen Gründen nicht in Frage kommen - eine bereits bestehende Vendor-Beziehung, Compliance-Vorgaben, oder schlicht andere Prioritäten. Diese Vielfalt ist normal, und genau deshalb lohnt es sich, mehrere Optionen zu kennen.
Sie interessieren sich für unsere Trainings oder haben einfach eine Frage, die beantwortet werden muss? Sie können uns jederzeit kontaktieren! Wir werden unser Bestes tun, um alle Ihre Fragen zu beantworten.
Hier kontaktieren