## 💰 ~1.62B Token / Bulan di Seluruh Tier Gratis Pihak Ketiga
> **Bawa akun penyedia Anda sendiri.** Ini adalah perkiraan agregat dari tier gratis pihak ketiga yang memenuhi syarat secara terpisah, bukan hibah token dari OmniRoute. Daftar, dapatkan kredensial jika diperlukan, dan hubungkan penyedia yang dapat Anda gunakan; setiap penyedia mengendalikan batas, ketersediaan, dan ketentuannya.
>
> Menumpuk tier gratis secara manual itu menyakitkan — puluhan SDK, puluhan batas laju, dan tidak tahu berapa banyak yang sebenarnya Anda miliki. OmniRoute mengatalogkan **467 entri tier gratis di 34 kunci pool berulang** dan menghitung angka utama token dari **17 pool dengan anggaran bulanan positif yang dipublikasikan ditambah lima batas per-model Groq**, dideduplikasi berdasarkan pool bersama. Kuota yang hanya terbuka setelah pemeriksaan identitas regional (saat ini: ModelScope) ditampilkan terpisah, +~6M di balik verifikasi identitas regional, dan tidak pernah dijumlahkan ke angka utama. Hasilnya tetap terlihat di dasbor (`/dashboard/free-tiers`).
> Ringkasan animasi halaman `/dashboard/free-tiers` langsung. Metodologi lengkap (dedupe pool, tier kredit, ketentuan penyedia): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Angka-angka ini diaudit ulang setiap dua minggu terhadap katalog langsung dan **bergerak ke dua arah** — penyedia mengakhiri tier gratis dan angkanya turun; penyedia baru muncul dan angkanya naik. Kami menerbitkan apa yang benar-benar dihitung katalog, bukan skenario terbaik yang dibulatkan ke atas.
⭐ Beri bintang pada repo jika OMNIROUTE membantu Anda menghemat uang dan mempermudah pekerjaan.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Bergabunglah dengan komunitas
**👋 Ikuti maintainer — dapatkan penyedia baru, rilis & tips lebih dulu:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**Pertanyaan, tips penyedia, roadmap & dukungan → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Gateway Terus Berkembang
## 🆓 Instal, hubungkan penyedia, lalu rutekan melalui satu endpoint
```bash
# Setelah menghubungkan penyedia, salin kunci OmniRoute Anda dari Dashboard → Endpoints:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` memerlukan rute yang memenuhi syarat. Instalasi baru bisa saja tidak memiliki target tanpa kunci yang memenuhi syarat, dan penyedia tanpa kunci mungkin menolak klien pihak ketiga. Penyedia yang ditandai `tos: avoid`, termasuk Kiro, dikecualikan dari perutean otomatis secara default; menghubungkan akun tidak menimpa pengaturan tersebut. Lihat [Panduan Tingkat Gratis](docs/getting-started/FREE-TIERS-GUIDE.md) sebelum memilih penyedia.📦 Skrip mulai cepat siap salin-tempel untuk **Python, Node.js, PHP, dan cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 Janji
# 🤔 Mengapa OmniRoute?
## 🤝 Didukung oleh Teman-teman Sumber Terbuka Kami
> **Ingin bergabung sebagai Teman Sumber Terbuka?** Ini adalah perusahaan-perusahaan yang mendukung sumber terbuka dan membantu OmniRoute terus bergerak — dan kami menyatakan secara publik ke mana setiap token yang mereka berikan kepada kami. Hubungi: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Terima kasih kepada Kimi (Moonshot AI), Teman Sumber Terbuka pendiri kami, karena mendukung proyek ini! Kimi adalah lab AI di balik keluarga model K2 dan K3 dengan bobot terbuka — Kimi K3 menghadirkan jendela konteks 1M-token, visi asli, dan pengkodean tingkat perbatasan dengan harga yang lebih murah dari model tertutup, dan berfungsi langsung dengan Claude Code, Codex, dan setiap alat pengkodean yang dilayani OmniRoute.
Apa yang didukung oleh dukungan Kimi: Kredit API Kimi mendukung pipeline rilis yang divalidasi AI OmniRoute — tahap validasi gabungan yang didukung oleh Kimi K3 yang meninjau setiap permintaan tarik sebelum dikirim — ditambah pengembangan fitur sehari-hari. Dukungan Kimi kelas satu dikirimkan pada kedua jalur: API Kimi langsung (kimi-k3) dan paket pengkodean Kimi Code (OAuth dan kunci API). OmniRoute juga merupakan proyek sumber terbuka Brasil pertama dalam program dukungan Kimi. Dapatkan kunci API Kimi dengan tambahan 15% kredit →
Cheaper Inference cheaperinference.com
Terima kasih kepada Cheaper Inference, Teman Sumber Terbuka OmniRoute, karena mendukung proyek ini! Cheaper Inference adalah gateway berperingkat biaya yang menjual kembali 42 model perbatasan — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok, dan MiniMax — di balik satu titik akhir yang kompatibel dengan OpenAI, merutekan setiap permintaan ke penyedia yang memenuhi syarat termurah tanpa pernah mengenakan biaya di atas harga daftar pembuat model.
Dukungan kelas satu di OmniRoute: Chat Completions, titik akhir /v1/responses asli, visi, panggilan alat, dan 3 model gambar (grok-imagine, nano-banana-pro, nano-banana-2, dapat dijangkau sebagai cheaperinference/<model>). Dapatkan kunci API →
Tautan yang ditandai aff=omniroute adalah tautan mitra. Mereka mendanai proyek tanpa biaya tambahan untuk Anda. 🎟️ Promo Afiliasi — kupon pendaftaran gratis dari penyedia yang tidak kami sponsori (klik untuk memperluas)Bagian ini hanya untuk kode rujukan/kupon. Kemitraan yang disponsori ada di 🤝 Didukung oleh Teman-teman Sumber Terbuka Kami di atas. OmniRoute tidak memiliki sponsor atau kemitraan dengan penyedia yang tercantum di sini — ini adalah kupon publik yang dapat digunakan siapa saja.
AgentRouter agentrouter.org
AgentRouter — pendaftaran afiliasi · $100 kredit gratis saat mendaftar (server gratis, harapkan latensi lebih tinggi — terbaik untuk pengujian, bukan produksi). Dukungan kelas satu di OmniRoute sejak v3.8.50: Chat Completions, format kabel yang kompatibel dengan Anthropic, dan jalur yang kompatibel dengan OpenAI. Model yang tersedia termasuk claude-opus-4-8, claude-opus-5, gpt-5.6-sol, dan lainnya. Ambil $100 Anda →
⚠️ Tautan afiliasi — OmniRoute tidak memiliki sponsor atau kemitraan dengan penyedia ini.
Tahu penyedia lain dengan kupon pendaftaran gratis yang murah hati yang menguntungkan pengguna OmniRoute? Buka masalah dan kami akan menambahkannya di sini.
## 🎯 Combo — Fitur Unggulan
> **Combo** adalah rangkaian model yang dirutekan OmniRoute secara **otomatis**. Jika kuota habis, penyedia gagal, atau biaya melonjak, combo dapat berpindah ke model sehat berikutnya yang memenuhi syarat. 🛡️
### ⚡ Tanpa konfigurasi — cukup gunakan `auto`
Tidak perlu membuat combo. Atur model Anda ke `auto` (atau salah satu variannya), lalu OmniRoute akan membuat combo virtual dari penyedia yang Anda hubungkan, dengan penilaian langsung:
ID Model
Hal yang dioptimalkan
auto
🎯 Default seimbang (LKGP — tetap menggunakan penyedia terakhir Anda yang berfungsi baik)
auto/coding
🧑💻 Bobot yang mengutamakan kualitas untuk pembuatan kode
auto/fast
⚡ Latensi terendah terlebih dahulu
auto/cheap
💰 Biaya termurah per token terlebih dahulu
auto/subscription
🎟️ Hanya kuota langganan yang sudah Anda bayar — gagal secara tertutup, tanpa pernah beralih ke opsi cadangan berbayar (panduan)
auto/thrifty
🪜 Kuota paket terlebih dahulu, lalu naik satu tingkat demi satu tingkat ke opsi berbayar termurah — kembali ke paket setelah kuotanya direset (panduan)
auto/offline
🔋 Ruang tersisa kuota / batas laju terbanyak terlebih dahulu
auto/smart
🔭 Mengutamakan kualitas + eksplorasi 10% untuk menemukan model yang lebih baik
auto/lkgp
📌 Afinitas eksplisit ke penyedia terakhir yang diketahui berfungsi baik
auto/chaos
🧪 Penyebaran paralel ke panel model (satu per penyedia, 5 secara default), menghasilkan satu jawaban; satu panggilan upstream per model panel, bukan injeksi kegagalan
##
### 🔀 Atau buat sendiri — 20 strategi perutean
Seluruh **20** strategi — padukan sesuai kebutuhan pada setiap langkah combo:
#
Strategi
Fungsinya
1
priority
Daftar berurutan yang mengutamakan target pertama — habiskan setiap target sebelum beralih ke berikutnya 🥇
2
fill-first
Gunakan kuota setiap target sepenuhnya sebelum beralih
3
weighted
Pemilihan acak berbobot berdasarkan bobot tiap target
4
round-robin
Gilir target secara berurutan
5
p2c
Penyeimbangan beban acak dengan metode pilihan dua opsi
6
least-used
Pilih target dengan beban saat ini yang paling rendah
7
random
Pemilihan acak seragam (dengan penghapusan duplikat)
8
strict-random
Pemilihan acak tanpa menghapus pengulangan 🎲
9
cost-optimized
Minimalkan biaya $ per permintaan berdasarkan harga katalog langsung 💸
10
headroom
Pilih target dengan sisa kuota terbanyak
11
quota-weighted
Lewati akun yang kuotanya habis, lalu pilih secara proporsional berdasarkan sisa kuota ÷ beban yang sedang diproses — percakapan yang sudah ada tetap ditetapkan ke targetnya ⚖️
12
reset-window
Utamakan target dengan periode kuota yang paling cepat direset
13
reset-aware
Urutkan berdasarkan waktu reset kuota — periode pendek terlebih dahulu 📊
14
context-relay
Alihkan konteks antar-target untuk percakapan panjang 🧠
15
context-optimized
Pilih target yang paling sesuai dengan ukuran konteks saat ini
16
cache-optimized
Tetapkan setiap prefiks prompt yang dapat digunakan kembali ke akun yang sama — maksimalkan hit cache prompt 🎯
17
lkgp
Jalur Terakhir yang Diketahui Berfungsi Baik — tetap menggunakan penyedia terakhir yang berhasil, lalu beralih ke aturan cadangan
18
auto
Penilaian langsung dengan 16 faktor di seluruh koneksi 🤖
19
fusion
Sebarkan permintaan ke panel model + satu penilai menyintesis satu jawaban 🧬
20
pipeline
Rangkaikan langkah — output setiap target menjadi input bagi target berikutnya 🔗
Mesin Auto-Combo menilai setiap kandidat berdasarkan **16 faktor** (kesehatan, kuota, biaya, latensi, kecocokan tugas, kualitas, ketersediaan sesi…) — lihat [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Ketahanan sudah terintegrasi (3 lapisan independen)
📖 [Mesin Auto-Combo](docs/routing/AUTO-COMBO.md) · [Panduan Ketahanan](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Hal yang Membedakan OmniRoute
📊 Metodologi lengkap & detail per fitur dibandingkan dengan 9router, OpenRouter, CLIProxyAPI & LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Dukung OmniRoute
OmniRoute berlisensi MIT dan dipelihara secara terbuka. Jika proyek ini menghemat waktu atau uang Anda, berikut cara untuk menjaganya tetap independen — pilih apa pun yang sesuai bagi Anda. Sponsor tidak pernah memengaruhi prioritas perutean; sponsor memberikan visibilitas, bukan peringkat.
**🇧🇷 PIX** — instan, tanpa biaya (Brasil)
Kunci (acak): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix salin-tempel:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Kripto — BTC · ETH · USDT-TRC20 · USDC-Solana (klik untuk memperluas)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Kirim setiap koin hanya melalui jaringan yang ditampilkan — pengiriman melalui jaringan yang salah dapat menyebabkan dana hilang.
🐛 Menemukan bug atau memiliki masukan? Buka [Diskusi](https://github.com/diegosouzapw/OmniRoute/discussions).
Catatan pengembang: Proyek ini dapat menghasilkan file .env lokal selama npm install/postinstall untuk memudahkan pengembang. File ini sengaja diabaikan melalui .gitignore (lihat .gitignore) dan tidak boleh pernah di-commit — jika tidak sengaja di-commit, rotasi semua rahasia yang terekspos dan hapus file tersebut dari riwayat. Lihat docs/DEVELOPER-ENVIRONMENT.md untuk panduan tentang pengelolaan file lingkungan lokal dan rahasia.
## 📡 Radar OmniRoute
Sorotan utama tingkat gratis tetap **~1,62 miliar token/bulan** dari katalog yang terdokumentasi dan telah dideduplikasi berdasarkan kumpulan di atas. Kredit pendaftaran penyedia yang bersifat sementara dapat secara terpisah meningkatkan jumlah pada bulan pertama menjadi **~2,22 miliar**. Radar adalah overlay katalog bertanda tangan yang bersifat opsional bagi pengguna yang menginginkan informasi ketersediaan model gratis yang lebih mutakhir di antara rilis OmniRoute; katalog komunitas dan setiap fitur gratis yang sudah ada tetap gratis.
Pendukung dapat menerima katalog langsung dan peluang tambahan dari penyedia. Batas atasnya yang terpisah dan dapat berubah adalah **maksimal sekitar 3 miliar token/bulan**, bergantung pada ketersediaan penyedia. Batas atas tersebut bukan jaminan: penyedia dapat mengubah kuota, kelayakan, model, atau wilayah kapan saja.
Radar bersifat pilihan dan hanya menggunakan GET. Klien OmniRoute tidak mengunggah prompt, lalu lintas, konfigurasi penyedia, telemetri penggunaan, atau status lokal penutupan pengumuman. Pelajari kelayakan dan katalog terkini di **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Yang Baru
> Sorotan terbaru dari **v3.8.20 → v3.8.53**. Riwayat lengkap tersedia di [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Perutean `quota-weighted`** — strategi kombo ke-20 melewati akun yang kuotanya telah habis, lalu memilih di antara akun lainnya secara proporsional berdasarkan sisa kuota ÷ beban yang sedang berjalan, sembari mempertahankan percakapan yang ada agar tetap disematkan. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Mode headless** — `omniroute serve --headless` (atau `OMNIROUTE_HEADLESS=1`) hanya menjalankan mesin proksi `/v1/*`, dengan dasbor dan subsistem khusus dasbor dinonaktifkan. → [Mode Headless](docs/guides/HEADLESS.md)
- **🔎 Penemuan model** — `/v1/models` memfilter berdasarkan kapabilitas, konteks, jenis, dan teks, sementara `POST /v1/models/query` mengembalikan daftar pendek deterministik dengan visibilitas per kunci yang sama. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🔑 Kontrol perutean per kunci** — sematkan kunci API ke satu model atau kombo dengan `forcedModel`, serta tambahkan atau hapus model dan kombo milik suatu kunci secara atomik (`/api/keys/{id}/access`). → [Referensi API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Kontrol PII yang lebih terperinci** — pemilihan per jenis, hingga 20 pola penyamaran khusus yang tervalidasi, serta penghitung deteksi per jenis; penyamaran itu sendiri tetap bersifat opsional. → [Pagar Pengaman](docs/security/GUARDRAILS.md)
- **🌍 67 bahasa** — dasbor, mirror dokumentasi, dan CLI, dengan `npm run i18n:add-locale` untuk menambahkan bahasa di seluruh bagian hanya dengan satu perintah. → [Panduan i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — delegasi A2A masuk ke armada agen Anda, keterampilan Conductor pada Kartu Agen, serta panel dasbor dengan obrolan suara tekan-untuk-bicara Faro. → [Server A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Penerimaan adaptif & perlindungan beban berlebih** — permintaan obrolan berat masuk antrean alih-alih menghasilkan 503, dengan sewa bergulir RPM atomik per koneksi. → [Panduan Ketahanan](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Pengurutan `/v1/models` kanonis** — satu blok berurutan yang dikelompokkan berdasarkan penyedia untuk setiap penyedia (kombo disematkan terlebih dahulu), stabil di semua sumber katalog. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🗜️ Penguatan kompresi** — perlindungan inflasi yang aktif secara default, paket Caveman untuk DE / FR / JA + bahasa Tionghoa (wényán), filter RTK untuk Gradle & .NET. → [Kompresi](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Biaya tarif tetap yang transparan** — penyedia berbasis langganan / paket coding menampilkan biaya **$0** dalam analitik biaya; anggaran, kuota & perutean tetap melakukan estimasi. → [Referensi API](docs/reference/API_REFERENCE.md)
- **⚖️ Perutean Quota-Share** — membagi kuota akun bersama secara adil di antara kunci yang dihimpun, dengan sifat work-conserving sehingga bagian yang menganggur dipinjamkan. → [Panduan Ketahanan](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Penyiapan CLI/agen dengan satu perintah** — 15 perintah `setup-*` terdaftar; `omniroute run` meluncurkan 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` mendukung 11 target dengan pemilih penyedia+model interaktif dan favorit per konteks. → [Integrasi CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Mode jarak jauh** — kendalikan OmniRoute jarak jauh dengan token bercakupan (`connect` / `contexts` / `tokens`) + pembantu OAuth `antigravity` untuk instalasi VPS. → [Mode Jarak Jauh](docs/guides/REMOTE-MODE.md)
- **🧭 Perutean otomatis yang lebih cerdas** — kombo `auto/:`, **Fusion** (panel model + juri), perutean berbasis tugas, serta penggantian model / mode / anggaran USD per permintaan. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Kompresi yang dapat dipasang** — 12 mesin yang dapat dikomposisikan + Compression Studios: LLMLingua-2, Ultra dua tingkat, omniglyph, gerbang fidelitas per langkah, GCF v3.2, editor pengurutan ulang dengan seret. → [Kompresi](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Dekripsi MITM transparan (TPROXY)** — menangkap CLI yang mengabaikan variabel lingkungan proksi, dengan CA per SNI + penginstal penyimpanan kepercayaan. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Telemetri biaya di mana saja** — header biaya/penggunaan `X-OmniRoute-*` pada setiap endpoint, header penghematan cache-HIT, kuota pengeluaran USD per kunci. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🧠 Memori yang Anda kendalikan** — nonaktif secara default, kuantisasi vektor int8 + peluruhan bertipe yang dapat diaktifkan, serta `x-omniroute-no-memory` per permintaan. → [Memori](docs/frameworks/MEMORY.md)
- **🛡️ Keamanan** — perlindungan injeksi prompt pada setiap rute LLM (rangkaian pengujian red-team), pagar pengaman penyamaran kredensial yang dapat diaktifkan (menyunting kunci API/rahasia yang bocor dalam kedua arah), pencarian web DuckDuckGo gratis sebagai pilihan terakhir, dan gerbang login OIDC opsional untuk dasbor (login dengan kata sandi selalu tetap tersedia). → [Pagar Pengaman](docs/security/GUARDRAILS.md)
- **🖼️ Endpoint baru** — `/v1/ocr` (Mistral OCR) dan `/v1/audio/translations` (bergaya Whisper) melengkapi cakupan media. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🎨 Pembuatan gambar / video / audio** — satu API untuk media: video xAI Grok Imagine & Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind, serta penyedia suara seperti ElevenLabs. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🌍 Deployment & operasi** — `basePath` proksi terbalik, deteksi otomatis bahasa browser, pelacakan perangkat per kunci, kepercayaan MITM tanpa root, lokalisasi zh-TW. → [Lingkungan](docs/reference/ENVIRONMENT.md)
- **🤝 Lebih banyak penyedia & agen** — agen cloud (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) dengan login browser + OAuth, kartu kelas utama Ollama, Claude Opus 5 & Sonnet 5, kemitraan resmi Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… serta **katalog 375 penyedia** yang diperbarui. → [Penyedia](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Transparansi perutean** — setiap respons membawa header `X-OmniRoute-Decision` yang menyebutkan strategi/penyedia/latensi yang melayaninya, strategi kombo `cache-optimized` baru + faktor `cacheAffinity` Auto-Combo mengarahkan permintaan berulang kembali ke koneksi yang menyimpan prefiks dalam cache, dan endpoint baca-saja `/v1/auto-combo/{channel}/candidates` mengekspos kumpulan kandidat aktif kanal `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Performa & infrastruktur lokal** — Redis lokal sekali klik, penerapan relai Cloudflare Workers / Deno Deploy, serta Bifrost & Mux sebagai layanan tertanam yang diawasi. → [Layanan Tertanam](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Juga tersedia** — kerangka kerja plugin + marketplace, kerangka kerja skill Omni/Agent/GitHub, integrasi vault Obsidian (22 alat MCP), API Batch & Files yang kompatibel dengan OpenAI, cache respons semantik, gamifikasi dengan papan peringkat, penemuan agen ACP (15 agen bawaan), ekspor log terjadwal ke BigQuery, fan-out multi-model paralel `auto/chaos`, bridge bot Telegram, pengelola versi dalam aplikasi, dan peringkat penyedia gratis LMArena-ELO. → [Dokumentasi](docs/README.md)
## 🤖 CLI & Agen Pemrograman yang Kompatibel
> Satu konfigurasi — `http://localhost:20128/v1` — dan **setiap** IDE atau CLI AI dapat berjalan dengan model gratis & berbiaya rendah.
+ juga kompatibel dengan · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · semua alat yang kompatibel dengan OpenAI
📖 Penyiapan per alat untuk seluruh 37 alat (27 CLI Code + 10 CLI Agent) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Plugin OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Jalankan CLI apa pun yang didukung melalui OmniRoute dengan satu perintah** — tanpa menulis file konfigurasi,
kredensial disuntikkan per proses, Qwen/Gemini mendapatkan direktori home terisolasi sementara:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Atau pilih penyedia+model secara interaktif dan tulis konfigurasi milik alat tersebut:
omniroute configure codex # juga: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Setiap perintah mengikuti konteks jarak jauh yang aktif (`omniroute connect `), `--dry-run`
menampilkan pratinjau env/argumen yang tepat tanpa mengeksekusinya, dan `--api-key-env NAME` menjaga rahasia agar tidak
masuk ke riwayat shell Anda. → [Integrasi CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 375 Penyedia AI — 153 Ditandai Katalog sebagai Gratis
> **375 penyedia terdaftar** di seluruh koleksi chat, media, pencarian, lokal, agen cloud, dan sistem yang kanonis, termasuk **153 yang membawa metadata penemuan `hasFree: true`**. Registri model chat mencakup **239 penyedia / 3.059 pasangan penyedia-model yang berbeda / 1.475 ID model mentah**; katalog anggaran gratis terpisah memiliki **467 baris per model**, **51 kumpulan berulang** dan **51 penyedia gratis selamanya berulang/tanpa kunci**. Ini adalah penyebut yang berbeda secara desain; definisi dan perhitungan yang dideduplikasi per kumpulan tersedia di [Referensi Penyedia](docs/reference/PROVIDER_REFERENCE.md) dan [Tier Gratis](docs/reference/FREE_TIERS.md).
### 🏢 Setiap lab utama — melalui satu endpoint
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…dan 350+ lainnya — setiap ikon dimuat langsung dari katalog penyedia dasbor. 📖 [Referensi Penyedia](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratis Selamanya — $0, tanpa kartu
OpenCode Zen DeepSeek V4, Nemotron 3 Tanpa batas token
Kilo Code Router otomatis, Tencent Hy3 Gratis selamanya
Requesty GPT-OSS 120B, Nemotron Gratis selamanya
SiliconFlow DeepSeek V3.2 / R1 Tier gratis
Z.AI GLM GLM-4.7 / 4.5-Flash Gratis selamanya
Baidu ERNIE ERNIE 4.0 Gratis selamanya
Qoder AI Qwen3-Max, Kimi-K2 GRATIS tanpa batas
Pollinations GPT, Llama, Claude Tanpa perlu kunci
Cloudflare AI 50+ model 10 ribu neuron/hari
NVIDIA NIM GLM, MiniMax ~40 RPM gratis
Cerebras GLM 4.7, GPT-OSS Kredit $5 satu kali; kartu diperlukan
OpenRouter model :free +$10 → RPM lebih tinggi
📖 Katalog lengkap yang dapat dibaca mesin → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ Di Mana OmniRoute Berjalan — Di Mana Saja
> Aplikasi yang sama, mesin Anda, aturan Anda. Dari instalasi npm global hingga **ponsel Anda** melalui Termux.
Platform
Instalasi
Keunggulan
📦 npm (global)
npm install -g omniroute
Satu perintah, OS apa pun
🐳 Docker
docker run … diegosouzapw/omniroute
Multiarsitektur AMD64 + ARM64
🖥️ Desktop (Electron)
npm run electron:build
Jendela native + baki sistem — Windows / macOS / Linux
🎩 Bilah menu (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Mengawasi & memperbarui server secara otomatis — macOS
💪 ARM
arm64 native
Raspberry Pi, server ARM, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Berjalan di ponsel Anda, 24/7, tanpa root
📲 PWA
"Tambahkan ke Layar Utama"
Layar penuh, offline, dapat diinstal dari browser
🧩 Plugin OpenCode
@omniroute/opencode-provider
Integrasi OpenCode native
🤖 VS Code Copilot Chat
instal ekstensi OmniCopilot
Setiap model OmniRoute di pemilih native Copilot Chat — stabil & Insiders
### 🧩 Baru: OmniRoute di dalam Copilot Chat native VS Code
> Tanpa bilah sisi baru, tanpa UI obrolan baru — setiap model yang disediakan OmniRoute muncul langsung di
> **pemilih model Copilot Chat yang sudah Anda gunakan**. Sejak VS Code 1.122, model penyedia dapat digunakan
> tanpa masuk ke GitHub atau berlangganan Copilot — mode agen, pemanggilan alat, dan visi, secara
> gratis.
Instal ekstensi **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)**, arahkan
ke server OmniRoute Anda (default ke `localhost:20128`), lalu buka Copilot Chat → pemilih model
→ **Kelola Model…** → **OmniRoute**.
Dari dalam editor: buka tampilan **Extensions**, cari **"OmniRoute"**, klik **Instal**
— berfungsi dengan cara yang sama di kedua toko. Kode sumber, masalah, dan panduan penerbitan tersedia di
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [Panduan VS Code Copilot Chat](docs/guides/VSCODE-COPILOT.md) — penyiapan, apa yang ditampilkan pemilih, dasbor dalam tab, pemecahan masalah
### 🎩 Baru: OmniRouteTray — gateway Anda, menetap di bilah menu
> `omniroute serve` bekerja paling baik saat selalu aktif. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> mengubahnya menjadi aplikasi bilah menu macOS yang cukup diatur sekali lalu dibiarkan: aplikasi ini memulai server, menjaganya tetap aktif
> setelah dimulai ulang, memperbaruinya langsung, dan menampilkan anggaran token aktif Anda hanya dengan satu klik — **tanpa
> membiarkan jendela terminal terbuka, tanpa perlu mengawasi `npm install -g omniroute`.**
Dibangun dengan [Tauri v2](https://v2.tauri.app/) (inti Rust yang ukurannya nyaris tak berarti), aplikasi ini menyertakan
runtime Node 24 bertanda tangan miliknya sendiri dan mengelola instalasi OmniRoute milik aplikasi, sehingga tidak pernah berbenturan dengan
`node`/`bun` global Anda. Aplikasi ini **menggunakan bersama konfigurasi dan basis data `~/.omniroute/` Anda yang sudah ada** — jadi ini adalah
OmniRoute yang sama dengan yang sudah Anda jalankan, hanya saja kini memakai topi. 🎩
Fungsinya
Caranya
🟢 Mengawasi server
Menjalankan omniroute serve, mengambil alih instans yang sudah berjalan alih-alih menduplikasinya
📊 Penggunaan aktif dalam sekilas
Bilah kuota penyedia, batas sesi/mingguan Claude beserta hitung mundur pengaturan ulang, perincian biaya 30 hari
🔄 Memperbarui otomatis secara langsung
Instalasi bertahap, pertukaran atomik, pengembalian versi saat gagal — selalu menggunakan rilis terbaru
🚀 Mulai saat masuk
Peluncuran opsional saat masuk; hanya di baki, tanpa ikon dock
🩺 Diagnostik & log
Diagnostik sekali klik dan akses log server
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Lebih suka mengunduh? Ambil .dmg terbaru dari
Rilis. Kode sumber, masalah, dan dokumentasi build
tersedia di zoispag/omniroute-tray.
💛 Proyek komunitas oleh @zoispag — bukan rilis resmi OmniRoute.
> Selain server, OmniRoute adalah **kokpit baris perintah lengkap** dengan **80+ perintah**, serta protokol agen terbuka sehingga agen AI dapat mengoperasikannya **secara mandiri**.
### ⌨️ CLI sesungguhnya (bukan hanya `start`)
```bash
omniroute # menjalankan gateway + dasbor (port 20128)
omniroute chat # klien obrolan TUI interaktif (perintah garis miring: /model /combo /skill /memory)
omniroute setup # panduan terpandu untuk penggunaan pertama
omniroute doctor # mendiagnosis penyedia, port, dependensi native
```
### 🛰️ Mode jarak jauh — jalankan CLI di sini, OmniRoute di VPS
OmniRoute berada di server? Kendalikan dari laptop Anda dengan **CLI yang sama**. Masuk sekali
menggunakan token akses dengan cakupan tertentu; setelah itu, setiap perintah akan menargetkan server jarak jauh.
```bash
omniroute connect 192.168.0.15 # kata sandi → token bercakupan, disimpan sebagai konteks
omniroute models # ← dijalankan terhadap server JARAK JAUH
omniroute configure codex # ← memilih model jarak jauh, menulis profil Codex lokal
omniroute tokens create --name ci --scope read # membuat token dengan cakupan lebih sempit untuk mesin lain
omniroute contexts use default # ← beralih kembali ke server lokal
```
Token memiliki cakupan `read` / `write` / `admin`; rute yang menjalankan proses tetap hanya dapat diakses melalui loopback.
📖 [Mode Jarak Jauh](docs/guides/REMOTE-MODE.md)
### 🤝 Hubungkan agen — dan agen tersebut mengendalikan OmniRoute secara langsung
Ekspos OmniRoute melalui **MCP**, **A2A**, **REST API**, **webhook**, atau **CLI jarak jauh** — agen apa pun yang mumpuni (atau kode Anda sendiri) memperoleh akses untuk mengendalikan seluruh gateway: perutean, penyedia, kombinasi, cache, kompresi, memori — secara mandiri. Endpoint HTTP di bawah ini disajikan melalui `http://localhost:20128`.
Antarmuka
Endpoint / perintah
Kegunaan
🧰 MCP (stdio)
omniroute --mcp
Integrasikan dengan Claude Desktop, Cursor, atau klien MCP apa pun
🌊 MCP (HTTP)
/api/mcp/stream
MCP jarak jauh — 110 alat, 33 cakupan (penegakan bersifat opsional), jejak audit lengkap
📡 MCP (SSE)
/api/mcp/sse
Transportasi MCP streaming
🤝 A2A
/.well-known/agent.json
Antaragen, JSON-RPC 2.0 + SSE, 6 keterampilan
🌐 REST API
/v1/*
Kompatibel dengan OpenAI — obrolan, embedding, gambar, audio, OCR
🔔 Webhook
/api/webhooks
Kirim peristiwa permintaan / kuota ke Slack, Discord, Telegram, atau URL apa pun
🛰️ CLI Jarak Jauh
omniroute connect
Kendalikan instans jarak jauh menggunakan token akses bercakupan
```bash
# Berikan rangkaian alat OmniRoute lengkap kepada Claude Code melalui MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Server MCP](docs/frameworks/MCP-SERVER.md) · [Server A2A](docs/frameworks/A2A-SERVER.md) · [Protokol Agen](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Hemat 15–95% Token — Secara Otomatis
### 📖 Cara kerjanya — pipeline, arsitektur & perhitungan penghematan
Kombinasi bertumpuk default menjalankan `RTK → Caveman`. Saat keduanya bekerja pada payload tool/konteks yang sama, penghematan menjadi berlipat:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Blok kode, URL, JSON, dan data terstruktur **selalu dilindungi** oleh mesin preservasi.
> **Mengapa memakai banyak token jika sedikit token sudah cukup?** Setiap permintaan melewati pipeline kompresi OmniRoute **secara transparan** — tanpa perubahan di klien. Kini ini adalah **tumpukan 12 mesin yang dapat dikomposisikan** yang berjalan berurutan dan dapat dicampur & dipasangkan per kombinasi routing — dibangun di atas ide dari [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua), dan [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 Tumpukan 12 mesin
Mesin berjalan dalam urutan pipeline; masing-masing dapat diaktifkan/nonaktifkan dan dikonfigurasi secara independen per kombinasi:
Mengarsipkan blok besar di balik penanda pengambilan, diambil sesuai permintaan
3
Lite
Pemangkasan whitespace + URL gambar (baseline ringan latensi)
4
RTK
Penyaringan hasil tool yang cerdas, dedup & pemotongan (sadar perintah)
5
Responses Tool Output
JSON yang mengutamakan lossless + kompresi diagnostik terbatas untuk output shell/patch/search/build (Responses API)
6
Headroom
Pemadatan tabular lossless pada array JSON (~30%) melalui codec GCF yang di-vendor
7
Relevance
Penilaian kalimat ekstraktif terhadap kueri pengguna terakhir
8
Caveman
Kompresi prosa berbasis aturan (~65–75% pada output)
9
Aggressive
Ringkasan + penuaan progresif pada giliran lama
10
LLMLingua-2
Pemangkasan semantik ML melalui MobileBERT ONNX — aman untuk kode, asinkron
11
Ultra
Pemangkasan token heuristik dengan tier model kecil (SLM) opsional
12
OmniGlyph
Pengodean konteks-sebagai-gambar eksperimental untuk Claude Fable 5 yang terukur pada jalur langsung Anthropic; transformer GPT 5.6 tetap fail-closed menunggu receipt penyedia. Empat profil kompresi (default agresif, balanced, coding-safe, passthrough) (paling agresif; opt-in)
Blok kode, URL, dan data terstruktur **selalu dipertahankan** persis byte-per-byte. **Preset sekali klik** menggabungkan mesin-mesin tersebut:
Mode
Penghematan
Paling cocok untuk
🪶 Lite
~15%
Default aman yang selalu aktif
🪨 Standard (Caveman)
~30%
Coding harian
⚡ Aggressive
~50%
Sesi panjang yang padat tool
🔥 Ultra
~75%
Penghematan maksimum
🧰 RTK
60–90%
Output shell/test/build/git
🔗 Stacked (RTK → Caveman)
78–95%
Prompt campuran + log tool
**Contoh nyata — mode Standard:**
> **Sebelum (69 token):** _"Alasan komponen React Anda me-render ulang kemungkinan besar adalah karena Anda membuat referensi objek baru pada setiap siklus render. Saat Anda meneruskan objek inline sebagai prop, perbandingan dangkal React melihatnya sebagai objek yang berbeda setiap kali, yang memicu render ulang. Saya sarankan menggunakan useMemo untuk melakukan memoize pada objek tersebut."_
>
> **Sesudah (19 token):** _"Ref objek baru tiap render. Prop objek inline = ref baru = render ulang. Bungkus dengan useMemo."_
>
> **Jawaban yang sama. 72% lebih sedikit token. Tanpa kehilangan akurasi.** ✅
**Contoh PT-BR — mode [Troglodita](https://github.com/leninejunior/troglodita):**
> **Sebelum (42 token):** _"Masalahnya adalah komponen ini melakukan render ulang karena referensi objek baru dibuat pada setiap siklus render. Saya sarankan menggunakan `useMemo`."_
>
> **Sesudah (12 token):** _"Render ulang: ref baru tiap siklus (objek inline dibuat ulang). Gunakan `useMemo`."_
>
> **Jawaban sama. ~70% lebih sedikit token. Presisi teknis utuh.** ✅
### 🎚️ Di luar mesin — gaya output, dial adaptif & kontrol per permintaan
Ke-12 mesin di atas mengecilkan apa yang **masuk**. Tiga lapisan lagi membentuk **bagaimana**, **kapan**, dan apa yang **keluar**:
- **🪄 Output Styles** _(pengarahan sumbu output)_ — menyuntikkan instruksi pembentuk respons yang deterministik dan aman terhadap cache; dapat dikombinasikan, masing-masing pada intensitas `lite` / `full` / `ultra`. Menambahkan gaya cukup satu entri registry satu baris:
- **Terse prose** — buang filler / kata sandang / hedging; pertahankan substansi teknis secara persis.
- **Less code** — "lazy senior dev" YAGNI: perubahan terkecil yang berfungsi, tanpa scaffolding yang tidak diminta.
- **Ponytail (lazy senior dev)** — naiki tangga YAGNI, perbaiki akar masalah, diff terkecil yang berfungsi.
- **I have ADHD (action-first)** — aksi berikutnya di depan, langkah bernomor, satu langkah konkret berikutnya, tanpa basa-basi.
- **Terse CJK (文言)** — gaya ultra-ringkas bahasa Tionghoa klasik (dibatasi locale ke `zh`).
- **🎯 Adaptive context-budget** _(dial)_ — alih-alih satu ambang token on/off, naikkan tingkat mesin termurah dan paling lossless hanya sejauh yang diperlukan agar **muat di context window model**. Policy: `reserve-output` (default, sadar model) · `percentage` · `absolute`. Mode: `floor` (jamin muat) · `replace-autotrigger` (pilihan eksplisit Anda yang menang) · `off` (ambang legacy).
- **🎛️ Di mana kompresi diputuskan** _(prioritas, tinggi → rendah)_ — header `x-omniroute-compression` per permintaan › override routing-combo › profil bernama aktif › adaptive / auto-trigger › default panel › off. Rencana yang diterapkan dikembalikan pada header respons `X-OmniRoute-Compression: ; source=`.
Auto-trigger berdasarkan ambang token, nyalakan dial adaptif, pin profil bernama, atur sekali pakai per permintaan, atau tetapkan pipeline per routing combo — mana pun yang cocok dengan beban kerja. **Eval harness** offline yang bersifat opt-in (`npm run eval:compression`) menilai fidelity vs. penghematan pada korpus yang di-pin sebelum Anda mempromosikan suatu perubahan.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Mulai Cepat
**1) Instal & jalankan**
```bash
npm install -g omniroute
omniroute
```
> 💡 Melihat `npm warn ERESOLVE` atau peringatan peer-dep? [Itu tidak berbahaya](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Menggunakan npm 11 atau lebih baru?** npm dapat memblokir skrip lifecycle paket kecuali diizinkan. `postinstall` OmniRoute (`node scripts/build/postinstall.mjs`) diperlukan untuk menyiapkan berkas runtime native-nya. Izinkan paket-paket yang disebutkan dalam peringatan npm saat menginstal secara global. Untuk kumpulan paket yang dilaporkan oleh OmniRoute 3.8.53:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Untuk memakai ulang allowlist ini pada instalasi global berikutnya, konfigurasikan sekali, lalu instal seperti biasa:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Daftar dependensi dapat berubah antar rilis; jika npm melaporkan daftar yang berbeda, gunakan nama paket dari peringatan tersebut. Mengizinkan suatu paket berarti mengizinkan skrip instalasinya berjalan.
> **Menggunakan Gemini Web atau provider web-cookie lain?** Paket npm menyertakan
> Playwright tetapi bukan biner Chromium-nya. Lihat catatan
> [penyiapan Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> sebelum membuat permintaan web-provider pertama.
Dashboard di `http://localhost:20128` · API di `http://localhost:20128/v1`.
**2) Hubungkan provider yang memenuhi syarat menggunakan akun Anda sendiri**
Dashboard → **Providers** → pilih provider yang syarat dan kuotanya saat ini sesuai dengan kebutuhan Anda → tambahkan API key-nya atau selesaikan alur akunnya. Tier gratis mungkin memerlukan pendaftaran, persetujuan, atau metode pembayaran. Tinjau [Panduan Tier Gratis](docs/getting-started/FREE-TIERS-GUIDE.md); ketersediaan tanpa key tidak dijamin, dan provider yang ditandai `tos: avoid` dikecualikan dari `auto` secara default.
**3) Arahkan tool coding Anda**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Verifikasi bahwa semuanya berjalan**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Anda akan melihat model yang terhubung terdaftar. 🎉 Selesai — mulai coding, dan OmniRoute otomatis merutekan & melakukan fallback untuk Anda.
Jika klien Anda tidak dapat mengirim header kustom, OmniRoute juga menyediakan alias kompatibilitas bertoken:
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Gunakan ini hanya untuk klien yang tidak dapat menyertakan `Authorization: Bearer ...`. Autentikasi via header tetap menjadi mode yang disarankan.
## 📦 Metode instalasi lainnya — Docker, sumber, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` mengikuti versi stabil SemVer **yang telah dipublikasikan** dengan versi tertinggi. Tag ini tidak mengikuti `main` di git. Gunakan tag tetap `:X.Y.Z` untuk GitOps. Lihat [Kanal Rilis Docker](docs/guides/DOCKER_GUIDE.md#release-channels). Image tersebut menetapkan **`OMNIROUTE_MEMORY_MB=1024`**. Kapasitas ini cukup untuk dasbor dan percakapan ringan. **Agen pengodean** (`POST /v1/responses` dari Claude Code, Codex, Grok, …) memerlukan heap V8 yang jauh lebih besar; jika tidak, proses akan mengalami `FATAL ERROR` pada sekitar 12 GiB saat dua konteks panjang saling tumpang tindih. Atur kapasitas kontainer agar lebih besar daripada heap (buffer native berada di luar V8):
| Beban kerja | Heap (`-e OMNIROUTE_MEMORY_MB`) | Kontainer (`--memory`) |
| ------------------------------------ | ------------------------------- | ---------------------- |
| Dasbor / percakapan ringan | `1024` (default image) | ≥2 g |
| Satu agen pengodean | `8192` | ≥10 g |
| Dua `/v1/responses` panjang serentak | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Tabel lengkap: [Panduan Docker — RAM runtime](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Kanal Docker prarilis:** `diegosouzapw/omniroute:next` dan
> `diegosouzapw/omniroute:next-web` mengikuti branch default `release/v*`
> saat ini. Tag yang dapat berubah ini hanya ditujukan untuk menguji perbaikan yang belum dirilis dan
> **tidak didukung untuk produksi**. Lihat
> [Kanal Rilis Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
`bun install` standar dan instalasi global (`bun install -g omniroute`) didukung melalui deteksi runtime Bun:
- **`bun:sqlite` bawaan**: OmniRoute menggunakan driver `bun:sqlite` bawaan Bun ketika berjalan di Bun, dengan fallback ke `better-sqlite3` di Node.js atau `sql.js`.
- **Pemilihan bundler Webpack otomatis dalam pengembangan**: Mode pengembangan (`bun run dev`) secara otomatis mendeteksi Bun dan menonaktifkan Turbopack untuk menggunakan Webpack demi mencegah inkompatibilitas binding native V8. Build produksi (`bun run build`) mengikuti `OMNIROUTE_USE_TURBOPACK` persis seperti di Node: Turbopack secara default, atau `OMNIROUTE_USE_TURBOPACK=0` untuk melakukan build dengan Webpack (`Dockerfile.bun` menyediakannya sebagai `--build-arg`).
- **Dockerfile khusus Bun**: `Dockerfile.bun` multi-tahap untuk deployment produksi Bun native (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Instal dan jalankan dengan Bun
bun install
bun run dev
```
**🛠️ Dari sumber**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# Menggunakan flake Nix
nix develop
npm run dev
# Atau menggunakan devbox
devbox run npm run dev
```
📖 [Panduan Docker](docs/guides/DOCKER_GUIDE.md) — Profil Compose, HTTPS Caddy, tunnel Cloudflare.
**🦭 Podman**
```bash
# 1. Siapkan direktori data yang dipasang melalui bind mount
mkdir -p data
# 2. Hanya untuk Linux + Podman rootless lokal (jangan pernah pada klien Podman Machine jarak jauh):
podman unshare chown 1000:1000 ./data
# 3. Tetapkan petunjuk runtime, build image Compose lokal, lalu mulai
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
Di macOS atau Windows, Podman menggunakan Podman Machine jarak jauh: lewati `podman unshare` dan
ikuti [panduan direktori data khusus topologi](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Panduan Podman](contrib/podman/README.md) — Build Compose, Podman Machine, dan
penyiapan Quadlet Linux/systemd.
**⚡ Instalasi lebih cepat / ringan (lewati build native)**
Mesin SQLite native (`better-sqlite3`) adalah dependensi **opsional**, sehingga instalasi
global tidak akan pernah terhambat oleh kompilasi dari sumber: instalasi menggunakan biner siap pakai jika tersedia
untuk platform/Node Anda, dan jika tidak, akan melakukan fallback secara transparan ke mesin JavaScript murni
(`node:sqlite` pada Node 22+, atau WASM `sql.js` yang disertakan) — tanpa memerlukan alat build.
Untuk sepenuhnya melewati pemanasan native pascainstalasi (CI, tanpa antarmuka grafis, atau mesin lambat):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 juga melewatinya
```
Untuk instalasi tercepat, utamakan **pnpm** (penyimpanan berbasis alamat konten + hard link — lihat di atas).
Untuk runtime tanpa dasbor dan tanpa antarmuka grafis, gunakan profil Docker `base` (di atas) atau
[panduan Termux](docs/guides/TERMUX_GUIDE.md). CLI dan dasbor web dilayani oleh
proses yang sama pada satu port, sehingga saat ini tidak ada paket khusus CLI yang terpisah.
Strategi cakupan pengujian untuk 56.000+ deklarasi pengujian statis di 7.800+ file pengujian yang dilacak
# ⭐ Kontributor Teratas
> OmniRoute dibentuk oleh komunitas open-source yang penuh semangat. Individu-individu ini telah memberikan kontribusi luar biasa yang berdampak langsung pada kualitas, stabilitas, dan jangkauan proyek. **Terima kasih.**
### Kontributor eksternal berdasarkan pull request yang di-merge
Sensus diambil pada 2026-10-18 15:09:09 UTC dengan ujung langsung release/v3.8.52656f01cb43. Sensus GitHub GraphQL terpaginası memuat 9.191 PR yang di-merge: 3.834 oleh pemilik repositori, 229 oleh Dependabot, 6 oleh bot/aplikasi lain, dan 5.122 PR eksternal dari 835 kontributor berbeda. “Baris berubah” adalah penambahan + penghapusan GitHub dan mencakup file yang dihasilkan, lockfile, katalog, terjemahan, dan dokumentasi; itu adalah churn, bukan LOC yang ditulis. 49 PR melaporkan diff GitHub di atas 500.000 baris (misalnya #13399, penambahan satu penyedia, mencantumkan 2.347 file yang berubah), yang menggelembungkan beberapa total di atas. Peringkat yang sama digabungkan.
### Commit yang diatribusikan ke GitHub
Dizzle 🥇 367 commit yang diatribusikan oleh GitHub
Bob.Hou 🥈 269 commit yang diatribusikan oleh GitHub
Diperiksa ulang pada 2026-10-18 14:44:45 UTC: commit yang diatribusikan oleh GitHub yang dilaporkan oleh API Contributors repositori untuk branch default release/v3.8.52. API tersebut mengembalikan 849 identitas (429 pengguna, 2 bot, 418 anonim); tabel ini mengecualikan pemelihara, bot, dan identitas anonim serta tetap mempertahankan posisi seri dalam kompetisi. Ini berbeda dari peringkat PR yang telah di-merge di atas maupun sensus metadata Git di bawah.
> 🙏 Fitur, perbaikan bug, dan peningkatan infrastruktur dari para kontributor ini adalah **bagian inti** dari hal yang membuat OmniRoute andal dan kaya fitur. Setiap pull request, setiap kasus uji, dan setiap file terjemahan i18n sangat berarti. Open source dibangun oleh orang-orang seperti mereka.
---
## 💖 Sponsor
Terima kasih yang tulus kepada orang-orang yang mendanai OmniRoute dari kantong mereka sendiri — setiap kontribusi menjaga proyek ini tetap gratis, independen, dan terus berkembang.
… dan lainnya yang memilih untuk tetap anonim 💛GitHub Sponsors publik divalidasi ulang pada 2026-10-18 melalui GitHub Sponsors GraphQL API: 11 sponsor publik (6 aktif, 5 terdahulu) dari total 14. Status isActive GitHub menentukan label aktif di atas; pendukung publik satu kali terdahulu tetap diberi ucapan terima kasih, dan sponsor privat tetap anonim. Donasi melalui Ko-fi, Buy Me a Coffee, Liberapay, PIX, dan mata uang kripto tidak dicantumkan karena tidak memiliki catatan sponsor publik.💖 Jadilah sponsor → — setiap dolar menjaga OmniRoute tetap gratis dan independen.
## 👥 900+ Kontributor
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Diaudit pada 2026-10-18 di ujung aktif release/v3.8.52ad160ab2d1 (6.826 commit): 993 identitas Git manusia yang telah dinormalisasi — 707 muncul sebagai penulis commit (termasuk pengelola) dan 286 hanya dalam trailer eksplisit Co-authored-by. Sensus ini menerapkan .mailmap, membandingkan alamat surel tanpa membedakan huruf besar-kecil, menggabungkan alamat noreply GitHub numerik dan biasa hanya ketika keduanya mengodekan handle yang sama, mengecualikan 26 identitas bot/agen/layanan/placeholder, dan tidak menggabungkan alamat surel biasa hanya karena nama tampilannya sama. Audit 2026-08-24 memublikasikan angka 639; metode ini, ketika dijalankan ulang pada basis audit tersebut ac02c5b42f, menghasilkan 619, sehingga peningkatan tersebut berasal dari kontributor baru, bukan dari metode yang lebih longgar.
### Cara Berkontribusi
1. Fork repositori
2. Buat branch dari ujung `release/vX.Y.Z` yang **aktif** (bukan `main`) — lihat [Model Branching & Rilis](docs/ops/BRANCHING_MODEL.md)
3. Buat branch fitur Anda (`git checkout -b feat/amazing-feature`)
4. Commit perubahan Anda (`git commit -m 'feat: add amazing feature'`)
5. Push ke branch tersebut (`git push origin feat/amazing-feature`)
6. Buka Pull Request dengan **base = branch `release/vX.Y.Z` tersebut**
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk panduan terperinci.
### Merilis Versi Baru
```bash
# Buat rilis — npm publish dijalankan secara otomatis
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Bintang
## 🌍 StarMapper
## 🙏 Ucapan Terima Kasih
OmniRoute berdiri di atas fondasi yang dibangun oleh para pendahulu hebat. Proyek ini bermula sebagai fork dari **[9router](https://github.com/decolua/9router)** dan port TypeScript dari proyek Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — dan sejak itu, setiap subsistem di bawah ini terinspirasi oleh proyek sumber terbuka yang lebih dahulu mewujudkannya. Masing-masing membentuk bagian konkret dari OmniRoute. Inilah ungkapan terima kasih kami kepada mereka semua. 🙏
> ⭐ jumlah bintang diverifikasi melalui REST API GitHub pada 18 Oktober 2026 — berikan bintang kepada proyek-proyek ini. Jumlah tersebut merupakan snapshot tepat pada tanggal itu dan secara alami akan berubah.
### 🧬 Asal-usul & gateway
Gateway AI yang set data harga publiknya mendukung sinkronisasi pelacakan biaya kami dan model normalisasi penyedianya menjadi acuan bagi perutean kami.
Sumber berlisensi MIT yang diadaptasi ke dalam bridge ChatGPT Web → Codex Responses yang disertakan sebagai vendor, termasuk adaptor sesi browser, pembingkaian respons, penggunaan, dan pencarian web.
Pola-pola yang di-port ke pemulihan stream, alias tanpa penalaran, pencarian web fallback, batas sliding-window, penyuntingan log, dan alur peluncur yang diperkuat.
Default transformasi yang kompatibel dengan Claude Code dan perilaku header penagihan yang digeneralisasi ke dalam bridge berbasis konfigurasi milik OmniRoute.
Pemetaan model Grok, generator Statsig fake-TypeError, default permintaan dan perangkat, serta pemroses respons NDJSON miliknya diadaptasi secara substansial ke dalam eksekutor Grok Web milik OmniRoute.
Sumber kode transitif utama di balik grok2api-merged; implementasi model, header, payload, Statsig, dan pemrosesnya dipertahankan dalam garis keturunan Grok Web.
Sumber berlisensi MIT yang mendasari payload Grok dan default perangkat, generator Statsig, serta pemroses result.response yang diteruskan melalui TQZHR dan grok2api-merged.
Sumber transitif yang dicantumkan oleh grok2api-merged untuk lapisan proxy-pool miliknya; OmniRoute mempertahankan pemberitahuan garis keturunan tersebut, tetapi tidak mengklaim adanya port proxy-pool dalam eksekutor Grok Web-nya yang dibatasi cakupannya.
Implementasi awal Grok Web mengacu pada desain upstream HTTP/browser miliknya; jalur HTTP langsungnya berasal dari GrokProxy, sehingga tidak ada klaim port kode independen.
Proyek viral "mengapa menggunakan banyak token jika sedikit token sudah cukup" — filosofi bahasa manusia guanya mendukung mode kompresi standar kami serta lebih dari 30 aturan penghapusan kata pengisi/kondensasi.
Kompresi token PT-BR — mendukung paket bahasa pt-BR kami: pengurangan pleonasme dan penghapusan kata pengisi yang disesuaikan untuk tata bahasa Portugis Brasil.
Skill pembuat kode YAGNI "developer senior pemalas" yang viral — menginspirasi Gaya Keluaran less-code kami: pengarahan perubahan terkecil yang berfungsi untuk mengurangi kode yang _dihasilkan_ (pasangan pada sumbu keluaran bagi prosa ringkas Caveman).
Kompresi keluaran berbasis jenis file yang memahami konten, dengan penghentian yang mempertimbangkan kegagalan — memvalidasi pengalihan per jenis dan pelewatan saat perolehan minimum kami tidak tercapai.
JSON kolumnar berbasis Rust + pengambilan berbasis konten + deduplikasi lintas pesan — memvalidasi desain mesin headroom/ccr/session-dedup kami serta invarian yang stabil terhadap cache bahwa "bentuk terkompresi tidak bergantung pada posisi".
Intersepsi/analisis MITM terhadap lalu lintas asisten pengodean ↔ LLM menjadi dasar bagi persyaratan awal Traffic Inspector. Empat modul yang sebelumnya diturunkan — penggabungan SSE, normalisasi percakapan, penyamaran rahasia, dan sanitasi header — telah digantikan oleh implementasi clean-room independen berdasarkan standar protokol publik. Dua permukaan host-passthrough (passthrough.ts dan _internal/bypass.cjs) tetap merupakan implementasi internal OmniRoute yang diklasifikasikan secara independen; keduanya tidak ditulis ulang sebagai bagian dari penggantian tersebut.
Perutean proksi transparan per proses — menginspirasi penghentian MITM yang aman dari crash, batas waktu idle soket, atribusi proses /proc, dan penangkapan TPROXY kami.
Mengidentifikasi permukaan kuota Grok Build; OmniRoute kemudian memverifikasi dan mengoreksi format wire aktif secara independen.
## 📄 Lisensi
Lisensi MIT - lihat [LICENSE](LICENSE) untuk detailnya.
---
**[⬆ Kembali ke atas](#-omniroute)** · Dibuat dengan ❤️ untuk komunitas AI open-source.
OmniRoute v3.8.53 · Node ≥22.22.2 · Lisensi MIT · omniroute.online