NOIR Research / Router
Produksi · Rilis v0.3.0 Lisensi MIT Uji e2e 50/50 hijau

NoirRouter — satu endpoint untuk semua model AI Anda

Gateway routing AI lokal dengan dashboard. Arahkan tool Anda ke satu endpoint kompatibel-OpenAI; NoirRouter meneruskan ke provider mana pun, berpindah otomatis saat rate-limit, dan menerjemahkan format OpenAI, Claude, Gemini, dan Responses — termasuk streaming dan tool calls.

0Dependensi npm — Node ≥ 22 bawaan saja
44Preset provider sekali klik + provider kustom
4Format API diterjemahkan dua arah
0Telemetri — tidak ada panggilan keluar sendiri

Unduh & instal

Paket produksi resmi disimpan di halaman ini. Satu syarat di semua jalur: Node.js ≥ 22 — atau Docker yang membawa runtime-nya sendiri. Tanpa build step, tanpa rahasia wajib, tanpa konfigurasi awal.

Paket produksi — tarball npm

noir-router-0.3.0.tgz · 33,9 KB · nol dependensi
SHA-256 642785e297da34f4…b4bc53f8

Unduh noir-router-0.3.0.tgz
npm install -g ./noir-router-0.3.0.tgz
noir-router --daemon
noir-router status

Dashboard terbuka di http://127.0.0.1:20129. Gateway key (nr-…) tampil di tab Settings dashboard.

Jalur lain

Docker (GHCR) — image ghcr.io/azhar0407/noir-router (:latest, :0.3.0), saat ini akses terbatas:

docker run -d --name noir-router \
  -p 127.0.0.1:20129:20129 \
  -v noir-router-data:/app/data \
  ghcr.io/azhar0407/noir-router:latest
docker logs noir-router

Docker Compose / dari sumber — docker compose up -d --build, atau tanpa Docker: ./run.sh (Windows: run.bat / npm start).

npm registry — nama paket noir-router sudah terdaftar; publikasi registry menyusul. Jalur produksi saat ini adalah tarball di halaman ini dan Docker.

Data Anda tetap di tempatnya. Satu aturan di semua jalur instalasi: $NOIR_DB bila di-set → ./data.db yang sudah ada → ~/.noir-router/data.db untuk instalasi baru (selamat dari upgrade npm/Docker).

Cara kerja

Tool Anda tidak perlu tahu ada berapa provider di belakangnya. Cukup satu base URL dan satu gateway key.

Tool / klien Anda
  base URL : http://127.0.0.1:20129/v1
  api key  : nr-… (dari dashboard)
  model    : "coding"            ← nama combo, atau…
             "deepseek/deepseek-chat"  ← rute langsung provider/model
        │
        ▼
  NoirRouter ──► coba langkah combo satu per satu
        │        401/403/408/429/5xx → pindah otomatis
        ├──► OpenAI-compatible (OpenRouter, DeepSeek, Groq, GLM, lokal…)
        ├──► Anthropic (Messages API, translasi dua arah + streaming)
        ├──► Google Gemini (translasi dua arah + streaming)
        └──► CLI bridge (Claude Code / Codex / Gemini CLI resmi)

Fallback

Rantai berurutan: langkah berikutnya dicoba otomatis saat rate-limit, kuota habis, server error, atau auth error.

Round-robin

Titik awal combo berputar antar-langkah, dan banyak key per provider juga berputar dengan penghitung kegagalan.

Fusion

Panel model menjawab paralel, lalu satu judge mensintesis jawaban terbaik — meniru desain OpenRouter Fusion.

Fitur produksi

Paritas penuh dengan kekuatan gateway kelas 9Router — dengan perbaikan struktural atas kelemahannya. Peta lengkapnya ada di dokumentasi.

44 preset provider

OpenAI, OpenRouter, DeepSeek, Groq, xAI, GLM, MiniMax, Qwen, server lokal (Ollama, LM Studio, vLLM), spesialis embedding, dan lainnya — plus provider kustom bebas.

Translasi 4 format

OpenAI Chat, Anthropic Messages, Google Gemini, dan OpenAI Responses — dua arah, termasuk SSE streaming, tool calls, dan gambar.

Combo & multi-key

Strategi fallback, round-robin, fusion per combo; banyak API key per provider dengan rotasi dan failover otomatis.

Token Saver

Kompresi hasil tool ala RTK: strip ANSI, dedup baris, minifikasi JSON, truncate cerdas head/tail. Penghematan terukur per request di dashboard.

Dashboard lengkap

Kelola provider & key dengan tombol Test, editor combo, log request, statistik token per model/provider, dan hub integrasi tool.

CLI bridge berlangganan

Model langganan lewat CLI resminya sendiri (claude -p, codex exec, gemini -p, atau perintah kustom) — tanpa ekstraksi token, tanpa spoofing.

EndpointFungsiCatatan
POST /v1/chat/completionsChat (streaming & non-streaming)Endpoint utama kompatibel-OpenAI
POST /v1/responsesOpenAI Responses APIDiterjemahkan ke/dari Chat Completions
POST /v1/embeddingsEmbeddingsRouting passthrough, rotasi key & fallback yang sama
POST /v1/images/generationsGenerasi gambarRouting passthrough ke provider gambar
GET /v1/modelsDaftar model & comboMemerlukan gateway key

Keamanan & privasi — by design

NoirRouter sengaja tidak meniru jalan pintas yang rapuh. Yang tidak ada di sini sama pentingnya dengan yang ada.

Yang dilakukan

Bind localhost secara bawaan · password dashboard opsional dengan layar login sungguhan · cookie sesi HttpOnly kedaluwarsa 24 jam · rate-limit login (5 gagal → kunci 5 menit) · header CSP / nosniff / frame-deny · gateway key ter-generate otomatis · hanya jalur resmi: API key terdokumentasi dan CLI resmi.

Yang sengaja tidak dilakukan

Tidak ada telemetri atau analytics · tidak ada ekstraksi token OAuth · tidak ada spoofing sidik jari klien · tidak ada intersepsi MITM / root CA · tidak ada komponen server tertutup — 100% kode ada di paket yang Anda unduh dan bisa diaudit dalam sekali duduk.

Riwayat rilis

Setiap versi ditandai hanya dari run uji yang sepenuhnya hijau.

Paritas persyaratan instalasi

CLI npm satu perintah dengan preflight Node ≥ 22 dan mode daemon (--daemon / status / stop), image GHCR, kontrak env .env.example (semua opsional), lokasi data terpusat ~/.noir-router. Tarball terverifikasi end-to-end: 33,9 KB, “added 1 package”. Suite e2e genap 50/50.

Auth dashboard yang benar + Docker

Layar login, cookie HttpOnly 24 jam, rate-limit login, header keamanan — 11 uji auth di dalam 40 uji hijau. Dockerfile node:22-alpine tanpa npm install, user non-root, healthcheck; terverifikasi di host Docker nyata termasuk data provider selamat dari restart container.

Paritas fitur & MVP

Audit source-level atas 9Router v0.5.104, lalu implementasi original: 44 preset, translasi 4 format, combo 3 strategi, Token Saver, CLI bridge, endpoint embeddings/images, dashboard nol dependensi di atas node:sqlite + fetch bawaan.

Siap mencoba?

Unduh paket produksinya, jalankan dua perintah, dan arahkan tool pertama Anda. Dokumentasi memandu dari instalasi sampai troubleshooting.