23 Agustus 2026
9Router dan Standardisasi Endpoint LLM
9Router menyatukan banyak provider LLM di balik satu endpoint OpenAI-compatible: kredensial terpusat, fallback otomatis, dan penghematan token, plus catatan keamanan dan keterbatasannya.
AI client di homelab — Hermes, OpenCode, dan beberapa alat lain — berkomunikasi dengan provider LLM lewat API masing-masing. Masalahnya mulai terasa ketika jumlah provider bertambah: OpenRouter, OpenAI, Anthropic, sampai model lokal. Setiap tool menyimpan kredensial sendiri, tiap provider punya format permintaan yang sedikit berbeda, dan begitu satu akun kena rate limit, pekerjaan berhenti sampai kuota pulih. 9Router adalah lapisan yang memecahkan tiga hal itu sekaligus.
Mengapa endpoint LLM perlu distandarkan
Tanpa gateway, pergantian provider berarti mengubah konfigurasi di setiap client satu per satu. Dengan 9Router, semua client cukup mengarah ke satu endpoint lokal; keputusan provider mana yang dipakai terjadi di satu tempat.
- Kredensial terpusat: API key provider hanya disimpan sekali di 9Router, tidak tersebar di konfigurasi tiap tool.
- Fallback otomatis: urutan provider bisa disusun — misal pakai yang murah atau gratis dulu, lalu lempar ke cadangan saat error atau rate limit.
- Satu format untuk semua: endpoint OpenAI-compatible dipahami oleh hampir semua alat AI CLI maupun web app.
Arsitektur dan cara kerja
Alurnya sederhana: client mengirim permintaan ke http://localhost:20128/v1, 9Router menerjemahkan format, memilih provider sesuai urutan yang dikonfigurasi, lalu meneruskan permintaan ke provider asli.
- Format translation: sisi client selalu memakai format OpenAI; 9Router menerjemahkannya ke format asli provider (OpenAI, Claude, Gemini, Cursor, sampai Ollama). Tool yang hanya paham format OpenAI tetap bisa memakai model Claude atau Gemini.
- RTK token saver: konten hasil tool seperti
git diff,grep, danlsdikompresi sebelum dikirim ke LLM; klaim resminya hemat 20-40% token input per permintaan, dan menyala secara default. - Quota tracking: dashboard menampilkan pemakaian token per provider dan perkiraan biaya. Angka biaya itu hanya perbandingan (savings tracker), bukan tagihan dari 9Router.
- Model ID ber-prefix: model dirujuk sebagai
provider/model, misalnyakr/claude-sonnet-4.5, atau cukup nama combo yang sudah disusun.
Deployment
9Router dipasang sebagai package Node.js global:
npm install --global 9router@latest
Daemon dijalankan dengan DNS IPv4-first di port kustom:
node --dns-result-order=ipv4first ~/.npm-global/bin/9router --skip-update -p 20128
Setelah jalan, buka dashboard di localhost:20128 untuk mendaftarkan API key provider dan menyusun combo model. Endpoint OpenAI-compatible aktif di /v1, dan /api/health bisa dipakai monitoring untuk mengecek liveness daemon.
Alternatif kontainer tersedia lewat image decolua/9router:
docker run -d --name 9router -p 20128:20128 \
-v "$HOME/.9router:/app/data" -e DATA_DIR=/app/data \
decolua/9router:latest
Seluruh state — konfigurasi, database SQLite, rute provider — tersimpan di ~/.9router.
Keamanan dan operasional
Beberapa bawaan yang perlu diperketat sejak awal:
- Password awal: kalau
INITIAL_PASSWORDtidak diatur, password login pertama adalah123456bawaan. Ganti segera. - API key endpoint:
REQUIRE_API_KEYdefaultfalse, jadi/v1/*terbuka tanpa Bearer token. Aktifkan kalau service tidak hanya dibuka dari localhost. - Cookie auth: di belakang reverse proxy HTTPS, set
AUTH_COOKIE_SECURE=trueagar cookie login hanya dikirim lewat koneksi aman. - JWT secret: otomatis dibuat di
~/.9router/jwt-secret; bisa di-override lewat envJWT_SECRETbila perlu konsisten antar instance.
Backup dan recovery
Data 9Router berupa satu file SQLite di ~/.9router/db/data.sqlite — berisi provider, combo, alias, dan riwayat pemakaian. Direktori itu juga menyimpan auto backup ke db/backups/. Mem-backup folder ~/.9router sudah cukup untuk memulihkan seluruh konfigurasi routing di mesin baru.
Kelebihan yang terasa
- Ganti provider tanpa menyentuh client. Cukup ubah combo di dashboard; semua tool yang menunjuk ke
/v1ikut berubah. - Fallback berlapis. Susunan langganan → murah → gratis membuat sesi tidak putus saat kuota satu provider habis.
- Token hemat di workload berat-tool. RTK paling terasa saat banyak
git diffdan log ikut terkirim. - Pilihan provider fleksibel. Ada provider API key (OpenRouter, OpenAI, Anthropic, DeepSeek, GLM, dan puluhan lain), langganan OAuth, tier gratis seperti Kiro dan OpenCode Free, sampai endpoint lokal ala Ollama dan llama-server.
Kontra dan keterbatasan
- Single point of failure. Semua client menunjuk ke satu daemon; kalau berhenti, semua tool kehilangan akses model. Perlu restart policy dan monitoring
/api/health. - Keamanan default longgar. Password awal
123456dan/v1tanpa API key secara default bukan untuk paparan jaringan luar. - Tier gratis bergantung pihak ketiga. Kuota Kiro, daftar model OpenCode Free, dan kredit Vertex bisa berubah; beberapa tier gratis (iFlow, Qwen Code, Gemini CLI) bahkan sudah dihentikan di 2026.
- State harus dijaga. Semua konfigurasi dan kredensial provider ada di satu file SQLite; kehilangan file itu berarti menyusun ulang semuanya dari nol.
- Angka biaya bisa menyesatkan. Dashboard menampilkan estimasi “seandainya bayar API langsung”, bukan tagihan nyata; mudah terbaca sebagai saldo.
Kesimpulan
9Router menyelesaikan masalah nyata: standardisasi endpoint LLM untuk banyak client, kredensial terpusat, dan fallback otomatis. Untuk homelab satu mesin, ia nyaman dipakai selama daemon dijaga hidup, state di-backup, dan pengaturan keamanan bawaan diperketat. Ia tidak menggantikan keputusan soal provider mana yang dipakai, tapi menghilangkan pekerjaan manual memindahkan konfigurasi antar tool.
