Ein Endpoint, jedes Modell: Routing für KI-Code-Agenten über lokalen Proxy
Weaves Open-Source Router wählt ein Modell pro Request mit lokalem Embedder — keine Prompt-Anfrage nötig. Setup, Routing-Histogramm-Hack und Trade-offs für dein Atelier.
Ein Router sitzt zwischen deinem Editor und dem Modell. Er liest die Anfrage, bewertet sie und sendet sie an das Modell, das für diesen Turn wirklich geeignet ist. Der Weave Router — veröffentlicht als workweave/router auf GitHub und diese Woche auf Hacker News — tut genau das für Claude Code, OpenAIs Codex CLI, opencode und (in früher Beta) Cursor. Ein lokaler Endpoint bei localhost:8080, drei Provider-APIs nativ gesprochen (Anthropic Messages, OpenAI Chat Completions, Gemini generateContent), und eine Entscheidung pro Request statt pro Session.
Das Interessante ist nicht der Proxy. Proxies sind alt. Das Interessante ist, wie er entscheidet. Das README legt den Mechanismus offen: ein Cluster Scorer, der einen kleinen On-Box Embedder läuft, abgeleitet aus der Avengers-Pro Arbeit (Zhang, Y. et al., arXiv:2508.12631, 2025, Beyond GPT-5: Making LLMs Cheaper and Better via Performance–Efficiency Optimized Routing). Nicht ein Prompt, der ein grosses Modell fragt, welches kleine Modell zu verwenden ist. Ein Embedding, eine Cluster-Zuweisung, ein Tabellen-Lookup. Das ist eine messbare Aussage — und die einzige, die deinen Nachmittag wert ist.
Warum ein Embedder und kein Prompt
Routing über Prompt kostet eine vollständige Inferenz, um zu entscheiden, wer die Inferenz durchführt. Es erbt auch jeden Fehlermodus des Modells, das das Urteil fällt. Routing über Embedding kostet einen Forward Pass durch ein Modell, das klein genug ist, um auf deinem Laptop zu laufen, und es erzeugt einen Vektor, den du offline, einmal, gegen Benchmark-Performance pro Cluster clustern kannst. Die Entscheidung wird also: In welchen Cluster fällt diese Anfrage, und welches Modell hat in diesem Cluster historisch am besten abgeschnitten und zu welchem Preis.
PAZ’s Konzept-Panel zu Attention beschreibt den zugrunde liegenden Operator — jeder Token sieht jeden anderen Token in einer Matrix-Multiplikation, bei O(n²·d) Kosten, mit den Skalarprodukten skaliert um √d, um die Gradienten wohlverhalten zu halten. Ein Embedder ist diese Maschinerie, einmal gelaufen und auf einen einzelnen Vektor zusammengefasst. Billig, deterministisch, ohne Überzeugungsarbeit. Der POST /v1/route Endpoint des Routers gibt die Entscheidung zurück, ohne den Aufruf zu proxyen, was bedeutet, dass du das Urteil des Classifiers prüfen kannst, bevor du ihm vertraust. Jeder Router, der dir sein Denken nicht zeigt, fordert Vertrauen ein, das dir nicht zu geben ist.
←HEUTE: Dein Atelier zahlt pauschal Frontier-Modell-Raten für Turns, die ein Mid-Tier-Modell identisch beantworten würde.
→3012: Modellwahl wird Infrastruktur — unsichtbar, protokolliert und auditiert wie Stromverbrauch.
Drehpunkt: In dem Moment, in dem Routing eine messbare Entscheidung statt einer Gewohnheit ist, hört der Preis auf, ein Abonnement zu sein, und wird eine Designvariable.
Das Werkzeug: workweave/router ist ein Open-Source-Drop-in-Proxy, gebaut von Weave, einem Engineering-Intelligence-Unternehmen, dessen README Robinhood, PostHog und Reducto unter seinen Nutzern nennt. Er spricht alle drei Provider-Formate mit Streaming, Tools und Vision intakt, und erreicht DeepSeek, Kimi, GLM, Qwen, Llama und Mistral über OpenRouter oder jeden OpenAI-kompatiblen Endpoint. Provider-Keys bleiben auf deinem Rechner, verschlüsselt im Ruhezustand (BYOK standardmässig), und er emittiert OTLP-Traces, die du auf Honeycomb, Datadog, Grafana oder sein eigenes gebündeltes Dashboard richten kannst. Für ein Computational-Design-Atelier, das bereits Claude Code gegen Grasshopper-Definitionen und IFC-Skripte läuft, ist das der Unterschied zwischen einer undurchsichtigen Rechnung und einer transparenten, nachverfolgbaren.
Setup:
# Schnellster Weg: gehosteter Router, kein Clone, kein Docker (Node >= 18, jq für Claude Code)
npx @workweave/router --claude
# Oder selbst-hostiere den ganzen Stack auf deinem Rechner:
git clone https://github.com/workweave/router
cd router
echo "OPENROUTER_API_KEY=sk-or-v1-..." >> .env.local
make full-setup # startet Postgres + Router auf :8080, erzeugt einen rk_ Schlüssel
# Beweise, dass es funktioniert — rufe es genau wie die Anthropic API auf:
curl -sS http://localhost:8080/v1/messages
-H "Authorization: Bearer rk_..."
-d '{"model":"claude-sonnet-4-5","max_tokens":256,
"messages":[{"role":"user","content":"hi"}]}'
Erste Schritte:
- Führe den Install-Befehl für deinen Client aus. Wähle
--scope project, wenn du die Routing-Config pro Repository committed haben möchtest — er schreibtsettings.json,.codex/config.tomloderopencode.jsonneben dem Code statt in dein Home-Verzeichnis. Für ein Atelier mit gemeinsamen Definitionen ist pro-Repository die ehrliche Wahl. - Öffne das Dashboard unter
http://localhost:8080/ui/(Standardpasswortadmin— ändere es, bevor jemand anders im Netz ist). Jede geroutete Anfrage erscheint mit dem gewählten Modell. - Sende fünf echte Anfragen aus deiner Arbeit: eine Grasshopper-Python-Refaktorierung, eine IFC-Property-Set-Abfrage, einen kurzen Docstring, eine lange Architectural-Decision-Frage, einen Regex. Dann lies das Dashboard und sehe, auf welchem Modell jede landete.
- Schalte es aus mit
npx @workweave/router off --claudeund fahre die gleichen fünf erneut direkt gegen den Provider. Vergleiche Output-Qualität und Kosten. Dieser Vergleich ist das ganze Experiment.
Der Trade-off, klar ausgesprochen
Du fügst einen Netzwerk-Hop und einen Classifier eines Dritten in jeden Modell-Aufruf ein, den dein Atelier macht. Wenn der Router ausfällt, fällt dein Agent aus — deshalb trennt das README Liveness (/health) von Dependency-Readiness (/readyz) und einem Key-Check (/validate), und deshalb existiert der off-Befehl als First-Class-Feature statt als Uninstall. Der Cursor-Pfad ist ausdrücklich als frühe Beta mit Performance gekennzeichnet, die “möglicherweise nicht optimal” ist. Und ein Cluster Scorer, trainiert auf öffentlichen Benchmarks, weiss nichts darüber, ob ein Modell speziell bei GDL- oder IFC-Schema-Arbeiten gut ist; er weiss, wie die Benchmark-Cluster aussahen. Marktechposts Vergleich vom 14. Juli 2026 von Mistral Vibe for Code, Claude Code, Cursor und OpenAI Codex — vier Agenten bewertet in einer Scaffold-to-PR-Aufgabe — erinnert daran, dass Agent-Qualität aufgabengeformt ist, und AEC-Aufgaben sind in keiner Benchmark-Suite vorhanden.
Atelier: Ein Büro, das KI-Code-Agenten übernimmt, entdeckt sein Ausgabenproblem normalerweise drei Monate später, wenn jemand die Rechnung liest und niemand sagen kann, welche Arbeit es verursacht hat. Ein Router mit OTLP-Traces macht diese Frage beantwortbar, bevor sie zum Streit wird. Montagsschritt: installiere den Router im --scope project-Modus auf deinem Repo mit dem meisten Agent-Traffic, lass ihn eine Woche laufen ohne Routing-Änderungen, und lies das Dashboard am Freitag — du kaufst zuerst die Messung, dann die Einsparungen.
Hack: Frage den Router, was er tun würde, ohne einen Upstream-Token auszugeben. Der /v1/route Endpoint gibt nur die Entscheidung zurück — kein Proxying, kein Completion, kein Kosten. Pipe einen Batch deiner echten Prompts hindurch und du erhältst ein Routing-Histogramm für deine echte Workload in etwa einer Minute.
for f in prompts/*.txt; do
jq -Rn --rawfile p "$f" '{model:"claude-sonnet-4-5",messages:[{role:"user",content:$p}]}' |
curl -sS http://localhost:8080/v1/route -H "Authorization: Bearer rk_..." -d @-
done | jq -r '.model' | sort | uniq -c | sort -rn
Fahre das über dreissig Prompts aus deinem letzten Sprint. Wenn 80% zu einem Modell routen, verdient der Router seinen Hop nicht für deine Workload und du solltest ihn ausschalten. Wenn sie sich über drei spreiten, hast du echten Spielraum gefunden. In jedem Fall hast du es gratis gelernt.
Provenienz, weil dies eine Routing-Entscheidung ist
Zwei Dinge in diesem Text sind tragend und beide sind überprüfbar: das Avengers-Pro-Papier, von dem der Cluster Scorer abstammt (Zhang et al., arXiv:2508.12631, 2025), und das eigene README des Repositories, von dem alle Befehle oben herstammen. Der HMM-Policy-Sidecar, erwähnt in den Docs, ist Opt-in, läuft als Companion-Container hinter make up-hmm, erfordert einen Google-API-Key und ändert nicht den Standard-In-Process Cluster Scorer — verwechsle die zwei nicht beim Lesen der Architektur-Notizen. Zwei Keys, ebenfalls, tun verschiedene Jobs: sk-or-…/sk-ant-… ist dein Upstream-Provider-Key und lebt in .env.local; rk_… ist der Router-Key, den deine Clients als Bearer-Token senden. Vertrauen in den Mechanismus: hoch, weil er dokumentiert und inspektierbar ist. Vertrauen, dass er deinem Atelier Geld spart: unbekannt, bis du das Histogramm oben laufst. Veröffentliche den Zweifel neben dem Anspruch; ein zuversichtlicher Satz ohne Quelle ist ein zukünftiger Fehler mit Vorsprung.
Nachlesen:
- Repo und komplette Docs: github.com/workweave/router — beginne mit der Konfigurationsreferenz für jede Env-Variable und das BYOK-Verschlüsselungsmodell.
- Die Routing-Forschung: Avengers-Pro — Beyond GPT-5: Making LLMs Cheaper and Better via Performance–Efficiency Optimized Routing.
- Wisse, zwischen welchen Modellen du routest: Claude models overview — die Fähigkeits-/Preistabelle, gegen die du implizit optimierst.
- Agent-Qualitäts-Kontext: Vier Agenten in einer Scaffold-to-PR-Aufgabe bewertet.
- PAZ-Notiz: das Attention-Konzept-Panel in der Kaffipedia erklärt den O(n²·d)-Operator im On-Box Embedder — lies es, bevor du argumentierst, ob Embedding-basiertes Routing “echte” Klassifizierung ist.
Installiere es im Project-Scope auf einem Repository, fahre das /v1/route Histogramm über dreissig Prompts aus deinem letzten Sprint, und entscheide aus deinen eigenen Zahlen — nicht aus diesem Artikel.
QUELLE · ↗
PAZ Kaffi · interdisziplinäre Redaktionsarbeit, geleitet von der PAZ Academy