9Router — de MITM-proxy die je developers al gebruiken
AIAls je developers in je team hebt die met Claude Code, Codex CLI of Cursor werken, is de kans groot dat er al iemand 9Router draait. Niet omdat het goedgekeurd is door IT. Maar omdat het werkt. En omdat het gratis is.
9Router is een lokale AI-router met 15.000 sterren op GitHub. Het is in essentie een MITM-proxy voor AI-agentverkeer: één lokale gateway op poort 20128 die al je coding agents koppelt aan 40+ LLM-providers via een OpenAI-compatible endpoint. Format translation, provider-fallback, tokencompressie — het zit er allemaal in.
De tool is technisch indrukwekkend. Maar hij is ook een governance-nachtmerrie voor organisaties die onder BIO2 of NIS2 vallen. En dat is precies waarom je er nu iets van moet weten.
Wat 9Router doet
De README claimt ondersteuning voor 40+ providers en 100+ modellen. De kernpropositie bestaat uit vier onderdelen:
-
Provider routing: één endpoint (
/v1/chat/completions) die verkeer verdeelt over Claude, Gemini, GLM, Kimi, MiniMax, Vertex, Codex, Copilot, en tientallen andere providers. -
Format translation: dynamische vertaling tussen OpenAI, OpenAI Responses, Claude, Gemini, Kiro, Cursor en andere target formats — met SSE-streaming.
-
Fallback-combo's: model-sequenties zoals "premium → goedkoop → gratis" bij rate limits of fouten.
-
Tokenreductie: RTK-compressie claimt 20-40% input-tokenbesparing en Caveman Mode tot 65% output-tokenbesparing.
Architectonisch is het een Next.js 16, React 19, Node.js 20+ applicatie met OAuth2/PKCE, JWT, API keys, en lokale opslag via SQLite.
De architectuur is het probleem
9Router is gebouwd als developer-tool, niet als governance-object. Dat zie je aan vier dingen.
Eén: het is een MITM-proxy. De src/mitm/server.js onderschept SSL-verkeer van ALLE agent-tools via dynamische certificaatgeneratie per SNI-hostname. Alle prompts, code, diffs, bestandsinhoud, shell output, tokens en credentials van élk AI-agentverkeer passeren door één lokaal proces. De trust boundary tussen jouw code en de externe provider loopt via 9Router.
Twee: credential-lek #965 is nog open. Het /api/cloud/auth endpoint retourneert originele provider API keys wanneer geauthenticeerd met een custom provider key. In een teamcontext betekent dit: elk teamlid met een custom key kan alle onderliggende provider credentials uitlezen.
Issue is sinds 8 mei open, 2 comments, geen patch. Dit is geen edge case — dit is een architectuurfout in de trust boundary tussen cloud sync en lokale authenticatie.
Drie: default security is minimaal. INITIAL_PASSWORD default 123456, AUTH_COOKIE_SECURE default false, REQUIRE_API_KEY default false. De documentatie raadt hardening aan voor internet-exposed deployments, maar de defaults zijn ingesteld op developer convenience.
Vier: operationele instabiliteit. Op 31 mei 2026 staan er honderden open issues en pull requests — van OpenAI key testing bugs tot Next.js request body truncation en MITM-on-Docker problemen. Hoge velocity, maar ook hoge change-risk.
Pasvorm: waar 9Router wél voor werkt
Als developer-tool is 9Router functioneel interessant. De format translation lost een echt probleem op: AI-coding tooling is gefragmenteerd, en elke tool verwacht net andere API-vormen, modelnamen en auth-patronen.
Voor een geïsoleerd dev-station is de Docker-deployment operationeel eenvoudig:
docker run -d --name 9router \
-p 127.0.0.1:20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data \
-e INITIAL_PASSWORD="$(openssl rand -base64 32)" \
-e JWT_SECRET="$(openssl rand -base64 48)" \
-e REQUIRE_API_KEY=true \
-e ENABLE_REQUEST_LOGS=false \
decolua/9router:latest
Cruciaal: bind op 127.0.0.1, niet op 0.0.0.0. Zet cloud sync uit. Zet request logging uit. Genereer sterke secrets.
Wat je níet moet doen
Gebruik 9Router niet voor:
- Klantdata of juridische/privacygevoelige workloads
- Centrale secrets governance — de lokale DB slaat provider keys op, maar zonder enterprise secrets management
- Internet-facing deployment — security maturity is te onzeker
- Productieachtige agent control plane
- Workloads waar provider-ToS of accountcontinuïteit kritiek is (de README waarschuwt zelf dat Gemini CLI met niet-Gemini tools tot account bans kan leiden)
Het governance-frame: adapter, geen control plane
Voor organisaties die al met AI-agents werken, is 9Router een blinde vlek die niemand op de radar heeft. Het wordt door developers geadopteerd als tool — maar in een organisatiecontext is het een governance-object.
De juiste plaatsing van 9Router in een AI-infrastructuurstack:
- LiteLLM of een MCP/LLM policy gateway is de governance-laag — policy, budgetlimieten, provider health checks, routingregels.
- 9Router komt daaronder als adapter en fallback-router, niet als control plane.
- Developer tools (Claude Code, Codex, Cursor, Cline) gebruiken 9Router uitsluitend voor experimentele of niet-kritieke workloads.
- Lokale inference (Ollama) blijft apart, bij voorkeur via eigen endpoints, niet primair via 9Router.
Conclusie
9Router is een agressief pragmatische developer-router met hoge praktische waarde en duidelijke maturity-risico's. Voor een geïsoleerd dev-station: testen. Voor klantwerk, productie of regulated workloads: niet doen.
De vraag is niet of je 9Router moet gebruiken. De vraag is of iemand in je team het al draait zonder dat je het weet — en wat er dan doorheen gaat.
Meer over AI-governance voor developers? Lees ook onze analyses van Supermemory en Hermes WebUI.
AI & Security Intelligence
Wekelijkse nieuwsbrief met AI updates, security alerts en compliance inzichten — direct in uw inbox.
Doorlopend Advies
Wilt u structurele begeleiding op AI, security & compliance?
Met een Advisory Subscription heeft u een externe sparringpartner die meedenkt op strategisch en technisch niveau — zonder de overhead van een fulltime dienstverband. Vanaf €1.500 per maand, maandelijks opzegbaar.
Ontdek Advisory Subscription →