# 🚀 OmniRoute — Gateway AI Gratis
**Dibuat oleh [Diego Souza](https://github.com/diegosouzapw)**
## 💰 ~1.62B Token / Bulan di Seluruh Tingkat Gratis Pihak Ketiga
> **Gunakan akun provider Anda sendiri.** Ini adalah perkiraan agregat dari tingkat gratis pihak ketiga yang memenuhi syarat secara terpisah, bukan pemberian token dari OmniRoute. Mendaftarlah, dapatkan kredensial jika diperlukan, lalu hubungkan provider yang dapat Anda gunakan; setiap provider mengatur batas, ketersediaan, dan ketentuannya sendiri.
>
> Menggabungkan tingkat gratis secara manual itu merepotkan — puluhan SDK, puluhan batas laju, dan tidak ada cara untuk mengetahui berapa banyak yang sebenarnya Anda miliki. OmniRoute mengatalogkan **465 entri tingkat gratis di 34 kunci pool berulang** dan menghitung angka token dari **17 pool dengan anggaran bulanan positif yang dipublikasikan ditambah lima batas Groq per model**, dengan deduplikasi berdasarkan pool bersama. Kuota yang hanya terbuka setelah pemeriksaan identitas regional (saat ini: ModelScope) ditampilkan secara terpisah, +~6M setelah verifikasi identitas regional, dan tidak pernah dijumlahkan ke dalam angka utama. Hasilnya tetap terlihat di dasbor (`/dashboard/free-tiers`).
> Ringkasan animasi halaman `/dashboard/free-tiers` secara langsung. Metodologi lengkap (deduplikasi pool, tingkatan kredit, ketentuan provider): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Angka-angka ini diaudit ulang setiap dua minggu berdasarkan katalog secara langsung dan **dapat bergerak naik maupun turun** — provider mengakhiri tingkat gratis dan angkanya turun; provider baru hadir dan angkanya naik. Kami menerbitkan hasil yang benar-benar dihitung oleh katalog, bukan skenario terbaik yang dibulatkan ke atas.
⭐ Beri bintang pada repo ini 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)
### 💬 Bergabung dengan komunitas
**👋 Ikuti pengelola — dapatkan provider baru, rilis & tips lebih awal:**
[](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 provider, 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)**
## 📈 Gerbang Terus Berkembang
## 🆓 Instal, hubungkan penyedia, lalu rutekan melalui satu endpoint
```bash
# Setelah menghubungkan penyedia, salin kunci OmniRoute Anda dari Dasbor → 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 mungkin tidak memiliki target tanpa kunci yang memenuhi syarat, dan penyedia tanpa kunci mungkin menolak klien pihak ketiga. Penyedia yang ditandai `tos: avoid`, termasuk Kiro, secara default dikecualikan dari perutean otomatis; menghubungkan akun tidak akan mengesampingkan pengaturan tersebut. Lihat [Panduan Tingkat Gratis](docs/getting-started/FREE-TIERS-GUIDE.md) sebelum memilih penyedia.📦 Skrip quickstart 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)
## 🏆 Keunggulan OmniRoute
📊 Metodologi lengkap & detail per fitur vs 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)**.
## ✨ Apa yang Baru
> Sorotan terbaru dari **v3.8.20 → v3.8.54**. Riwayat lengkap di [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Perutean `quota-weighted`** — strategi combo ke-20 melewati akun yang kuotanya habis, lalu memilih di antara akun lainnya secara proporsional berdasarkan kuota tersisa ÷ beban yang sedang diproses, dengan percakapan yang ada tetap tertaut ke akun semula. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Mode headless** — `omniroute serve --headless` (atau `OMNIROUTE_HEADLESS=1`) hanya menjalankan mesin proxy `/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, sedangkan `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 combo dengan `forcedModel`, serta tambahkan atau hapus model dan combo 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 masking kustom yang tervalidasi, serta penghitung deteksi per jenis; masking itu sendiri tetap bersifat opsional. → [Guardrails](docs/security/GUARDRAILS.md)
- **🌍 67 bahasa** — dasbor, cermin dokumentasi, dan CLI, dengan `npm run i18n:add-locale` yang menambahkan bahasa di semua tempat melalui satu perintah. → [Panduan i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — delegasi A2A masuk ke armada agen Anda, skill Conductor pada Agent Card, dan panel dasbor dengan obrolan suara push-to-talk Faro. → [Server A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Penerimaan adaptif & perlindungan terhadap beban berlebih** — permintaan chat yang berat masuk antrean alih-alih menghasilkan 503, dengan lease bergulir RPM atomik per koneksi. → [Panduan Resiliensi](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Pengurutan `/v1/models` kanonis** — satu blok berkelompok berdasarkan penyedia untuk setiap penyedia (combo disematkan di awal), konsisten di setiap sumber katalog. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🗜️ Penguatan kompresi** — perlindungan inflasi aktif secara default, Caveman packs 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 langganan / coding-plan tercatat dengan biaya **$0** dalam analitik biaya; anggaran, kuota, dan perutean tetap melakukan estimasi. → [Referensi API](docs/reference/API_REFERENCE.md)
- **⚖️ Perutean Quota-Share** — membagi kuota akun bersama secara adil di antara kunci yang dikumpulkan, dengan prinsip work-conserving sehingga bagian yang menganggur dapat dipinjamkan. → [Panduan Resiliensi](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Penyiapan CLI/agen dengan satu perintah** — 15 perintah `setup-*` terdaftar; `omniroute run` menjalankan 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 remote** — kendalikan OmniRoute jarak jauh dengan token berskup (`connect` / `contexts` / `tokens`) + helper OAuth `antigravity` untuk instalasi VPS. → [Mode Remote](docs/guides/REMOTE-MODE.md)
- **🧭 Perutean otomatis yang lebih cerdas** — combo `auto/:`, **Fusion** (panel model + juri), perutean yang memahami 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 seret-dan-lepas untuk pengurutan ulang. → [Kompresi](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Dekripsi MITM transparan (TPROXY)** — CLI penangkap untuk mengabaikan variabel lingkungan proxy, dengan CA per-SNI + penginstal trust store. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Telemetri biaya di semua tempat** — header biaya/penggunaan `X-OmniRoute-*` pada setiap endpoint, header penghematan cache-HIT, serta kuota pengeluaran USD per kunci. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🧠 Memori yang dapat 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 prompt injection pada setiap rute LLM (rangkaian pengujian red team), guardrail masking kredensial opsional (menyunting kunci API/rahasia yang bocor di kedua arah), pencarian web DuckDuckGo gratis sebagai pilihan terakhir, serta gerbang login OIDC opsional untuk dasbor (login kata sandi selalu tetap tersedia). → [Guardrails](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: xAI Grok Imagine & video Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind, dan penyedia ucapan seperti ElevenLabs. → [Referensi API](docs/reference/API_REFERENCE.md)
- **🌍 Deployment & operasi** — `basePath` reverse-proxy, deteksi otomatis bahasa browser, pelacakan perangkat per kunci, trust MITM tanpa hak root, serta lokalisasi zh-TW. → [Lingkungan](docs/reference/ENVIRONMENT.md)
- **🤝 Lebih banyak penyedia & agen** — agen cloud (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) dengan browser + login OAuth, kartu Ollama kelas utama, Claude Opus 5 & Sonnet 5, kemitraan resmi Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… dan **katalog 388 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 combo `cache-optimized` baru + faktor rute `cacheAffinity` Auto-Combo yang mengarahkan permintaan berulang kembali ke koneksi yang menyimpan prefiks dalam cache, serta endpoint hanya-baca `/v1/auto-combo/{channel}/candidates` yang menampilkan kumpulan kandidat aktif dari channel `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Performa & infrastruktur lokal** — Redis lokal sekali klik, deployer relay Cloudflare Workers / Deno Deploy, Bifrost & Mux sebagai layanan tersemat yang diawasi. → [Layanan Tersemat](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Juga tersedia** — framework plugin + marketplace, framework 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 paralel multi-model `auto/chaos`, bridge bot Telegram, pengelola versi dalam aplikasi, dan peringkat penyedia gratis LMArena-ELO. → [Dokumentasi](docs/README.md)
## 🤖 CLI & Agen Koding yang Kompatibel
> Satu konfigurasi — `http://localhost:20128/v1` — dan **setiap** AI IDE atau CLI berjalan pada model gratis & berbiaya rendah.
+ juga bekerja dengan · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · alat apapun yang kompatibel dengan OpenAI
📖 Pengaturan per-alat untuk semua 39 alat (28 CLI Code + 11 CLI Agents) → [`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 dalam satu perintah** — tanpa file konfigurasi yang ditulis,
kredensial disuntikkan per proses, Qwen/Gemini mendapatkan 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 provider+model secara interaktif dan tulis konfigurasi alatnya sendiri:
omniroute configure codex # juga: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Setiap perintah mengikuti konteks remote aktif (`omniroute connect `), `--dry-run`
menampilkan pratinjau env/args persis tanpa mengeksekusi, dan `--api-key-env NAME` menjaga rahasia
tetap aman dari riwayat shell Anda. → [Integrasi CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 388 Penyedia AI — 153 Ditandai Katalog sebagai Gratis
> **388 penyedia terdaftar** di seluruh koleksi kanonis chat, media, pencarian, lokal, agen cloud, dan sistem, termasuk **153 yang memiliki metadata penemuan `hasFree: true`**. Registri model chat mencakup **239 penyedia / 3.059 pasangan penyedia-model berbeda / 1.475 ID model mentah**; katalog anggaran gratis terpisah memiliki **471 baris per-model**, **34 kumpulan berulang**, dan **52 penyedia gratis selamanya yang berulang/tanpa kunci**. Penyebut ini memang berbeda berdasarkan desain; definisi dan perhitungan yang dideduplikasi berdasarkan kumpulan tersedia di [Referensi Penyedia](docs/reference/PROVIDER_REFERENCE.md) dan [Tingkat Gratis](docs/reference/FREE_TIERS.md).
### 🏢 Semua lab besar — 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 diambil secara 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 Tingkat 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 Tidak memerlukan kunci
Cloudflare AI 50+ model 10K 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)
## 🖥️ Dimana OmniRoute Berjalan — Di Mana Saja
> Aplikasi yang sama, mesin Anda, aturan Anda. Dari instalasi npm global hingga** telepon Anda** melalui Termux.
Platform
Instal
Sorotan
📦 npm (global)
npm install -g omniroute
Satu perintah, OS apa saja
⚡ Bun (global)
bun add -g omniroute
Tarball registri yang sama, instalasi lebih cepat
🐳 Docker
docker run … diegosouzapw/omniroute
Multi-arch AMD64 + ARM64
🖥️ Desktop (Electron)
npm run electron:build
Native window + system tray — Windows / macOS / Linux
🎩 Menu-bar (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Mengawasi & memperbarui server secara otomatis — macOS
💪 ARM
asli arm64
Raspberry Pi, server ARM, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Menjalankan di ponsel Anda , 24/7, tanpa root
📲 PWA
"Tambahkan ke Layar Beranda"
Layar penuh, offline, dapat diinstal dari browser
🧩 OpenCode plugin
@omniroute/opencode-provider
Integrasi OpenCode asli
🤖 VS Kode Copilot Obrolan
install OmniCopilot extension
OmniRoute model zqo di Copilot Chat picker asli — stable & Insiders
### 🧩 Baru: OmniRoute di dalam Obrolan Copilot asli Kode VS
> Tidak ada sidebar baru, tidak ada chat baru UI — setiap model yang disajikan OmniRoute muncul langsung di**Copilot Alat pilih model obrolan yang sudah Anda gunakan** . Sejak Kode VS 1.122, model penyedia bekerja tanpa masuk GitHub atau berlangganan Copilot — mode agen, panggilan alat, dan visi, gratis.
Instal** [OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** ekstensi, arahkan ke server OmniRoute Anda (defaultnya adalah `localhost:20128`), lalu buka Copilot Chat → model picker →** Kelola Model…** →**OmniRoute** .
Dari dalam editor: buka** Ekstensi** lihat, cari** "OmniRoute"** , klik** Memasang** — bekerja dengan cara yang sama di kedua toko. Sumber, terbitan, dan runbook penerbitan tersedia langsung di [diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [VS Kode Copilot Panduan obrolan](docs/guides/VSCODE-COPILOT.md) — pengaturan, apa yang ditampilkan pemilih, dasbor-dalam-tab, pemecahan masalah
### 🎩 Baru: OmniRouteTray — gerbang Anda, berada di bilah menu
> `omniroute serve` paling bahagia jika selalu aktif.** [OmniRouteTray](https://github.com/zoispag/omniroute-tray)** mengubahnya menjadi aplikasi bilah menu set-dan-lupakan untuk macOS: ia memulai server, menjaganya tetap hidup saat reboot, memperbaruinya, dan menempatkan anggaran token langsung Anda dengan sekali klik —** tidak ada jendela terminal yang dibiarkan terbuka, tidak ada `npm install -g omniroute` untuk mengasuh.**
Dibangun dengan [Tauri v2](https://v2.tauri.app/) (inti Rust seukuran kesalahan pembulatan), ia mengirimkan runtime Node 24 yang ditandatanganinya sendiri dan mengelola instalasi OmniRoute milik aplikasi, sehingga tidak pernah melawan `node`/`bun` global Anda. Dia** membagikan konfigurasi dan database `~/.omniroute/` Anda yang ada** — jadi sama saja OmniRoute yang sudah Anda jalankan, hanya dengan mengenakan topi. 🎩
Apa fungsinya
Bagaimana
🟢 Mengawasi server
Memunculkan omniroute serve , mengadopsi instance yang sudah berjalan alih-alih menduplikasinya
📊 Sekilas penggunaan langsung
Bilah kuota penyedia, Claude batas session/weekly dengan hitungan mundur reset, rincian biaya 30 hari
🔄 Pembaruan otomatis di tempat
Penginstalan bertahap, pertukaran atom, rollback jika gagal — selalu pada rilis terbaru
🚀 Mulai saat login
Peluncuran opsional saat login; hanya baki, tidak ada ikon dok
🩺 Dokter & logs
Diagnostik sekali klik dan akses log server
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Lebih suka mengunduh? Ambil .dmg terbaru dari
Merilis . Sumber, masalah, dan pembangunan
dokumen ada di zoispag/omniroute-tray.
💛 Proyek komunitas oleh @zoispag — bukan rilis OmniRoute resmi.
> 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 bertingkat default menjalankan `RTK → Caveman`. Saat keduanya bekerja pada payload tool/konteks yang sama, penghematannya terakumulasi:
```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 engine preservasi.
> **Mengapa menggunakan banyak token jika sedikit token sudah cukup?** Setiap permintaan melewati pipeline kompresi OmniRoute **secara transparan** — tanpa perubahan pada klien. Kini pipeline ini merupakan **tumpukan 12 engine yang dapat dikomposisikan** yang berjalan secara berurutan dan dapat dipadupadankan untuk setiap kombinasi routing — dibangun berdasarkan gagasan 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 engine
Engine berjalan sesuai urutan pipeline; masing-masing dapat diaktifkan/nonaktifkan dan dikonfigurasi secara independen untuk setiap kombinasi:
#
Engine
Fungsinya
1
Session-Dedup
Menghapus konten yang diulang di antara giliran (berbasis alamat konten, lintas giliran)
2
CCR
Mengarsipkan blok besar di balik marker pengambilan, yang diambil sesuai permintaan
3
Lite
Pemangkasan whitespace + URL gambar (baseline ringan dengan latensi rendah)
4
RTK
Pemfilteran, deduplikasi, dan pemotongan hasil tool secara cerdas (memahami perintah)
5
Responses Tool Output
JSON yang mengutamakan lossless + kompresi diagnostik terbatas untuk output shell/patch/search/build (Responses API)
6
Headroom
Pemadatan array JSON tabular secara lossless (~30%) melalui codec GCF vendored
7
Relevance
Penilaian kalimat ekstraktif berdasarkan kueri pengguna terakhir
8
Caveman
Kompresi prosa berbasis aturan (~65–75% pada output)
9
Aggressive
Perangkuman + 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 small-model (SLM) opsional
12
OmniGlyph
Encoding konteks-sebagai-gambar eksperimental untuk Claude Fable 5 yang telah diukur pada wire Anthropic langsung; transformer GPT 5.6 tetap fail-closed sambil menunggu tanda terima provider. Empat profil kompresi (default agresif, seimbang, aman untuk coding, passthrough) (paling agresif; opt-in)
Blok kode, URL, dan data terstruktur **selalu dipertahankan** secara byte-perfect. **Preset sekali klik** menggabungkan berbagai engine:
Mode
Penghematan
Terbaik untuk
🪶 Lite
~15%
Default aman yang selalu aktif
🪨 Standard (Caveman)
~30%
Coding sehari-hari
⚡ Aggressive
~50%
Sesi panjang yang banyak menggunakan 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 dirender ulang kemungkinan 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, sehingga memicu render ulang. Saya menyarankan penggunaan useMemo untuk melakukan memoization pada objek tersebut."_
>
> **Sesudah (19 token):** _"Referensi objek baru di setiap render. Prop objek inline = referensi baru = render ulang. Bungkus dengan useMemo."_
>
> **Jawaban sama. 72% lebih sedikit token. Tidak ada kehilangan akurasi.** ✅
**Contoh PT-BR — mode [Troglodita](https://github.com/leninejunior/troglodita):**
> **Sebelum (42 token):** _"Masalahnya adalah komponen melakukan re-render karena referensi objek baru dibuat pada setiap siklus rendering. Saya menyarankan untuk menggunakan useMemo."_
>
> **Sesudah (12 token):** _"Re-render: ref baru setiap siklus (objek inline dibuat ulang). Gunakan `useMemo`."_
>
> **Jawaban sama. ~70% lebih sedikit token. Presisi teknis tetap utuh.** ✅
### 🎚️ Melampaui engine — gaya output, dial adaptif & kontrol per permintaan
Ke-12 engine di atas meringkas apa yang **masuk**. Tiga lapisan tambahan membentuk **bagaimana**, **kapan**, dan apa yang **keluar**:
- **🪄 Gaya Output** _(pengarahan sumbu output)_ — menyuntikkan instruksi pembentukan respons yang deterministik dan aman untuk cache; dapat dikombinasikan, masing-masing dengan intensitas `lite` / `full` / `ultra`. Menambahkan gaya hanya memerlukan satu entri registry:
- **Prosa ringkas** — hilangkan pengisi / artikel / bahasa yang bertele-tele; pertahankan substansi teknis secara tepat.
- **Lebih sedikit kode** — YAGNI ala "senior dev malas": perubahan terkecil yang berfungsi, tanpa scaffolding yang tidak diminta.
- **Ponytail (senior dev malas)** — naikkan tingkat YAGNI, perbaiki akar masalah, gunakan diff terkecil yang berfungsi.
- **Saya memiliki ADHD (utamakan tindakan)** — tindakan berikutnya diutamakan, langkah-langkah diberi nomor, satu langkah berikutnya yang konkret, tanpa pendahuluan.
- **CJK ringkas (文言)** — gaya ultra-ringkas bahasa Tionghoa klasik (dibatasi locale ke `zh`).
- **🎯 Anggaran konteks adaptif** _(dial)_ — alih-alih satu ambang token aktif/nonaktif, tingkatkan engine yang paling murah dan paling minim kehilangan hanya sejauh yang diperlukan untuk **memuat respons ke dalam jendela konteks model**. Kebijakan: `reserve-output` (default, sadar-model) · `percentage` · `absolute`. Mode: `floor` (menjamin muat) · `replace-autotrigger` (pilihan eksplisit Anda menang) · `off` (ambang lama).
- **🎛️ Tempat kompresi ditentukan** _(prioritas, tinggi → rendah)_ — header per permintaan `x-omniroute-compression` › penggantian routing-combo › profil bernama yang aktif › pemicu otomatis / adaptif › default panel › off. Rencana yang diterapkan dikembalikan melalui header respons `X-OmniRoute-Compression: ; source=`.
Aktifkan pemicu otomatis berdasarkan ambang token, nyalakan dial adaptif, tetapkan profil bernama, atur satu kali per permintaan, atau tetapkan pipeline untuk setiap routing combo — mana pun yang sesuai dengan beban kerja. **eval harness** offline opsional (`npm run eval:compression`) menilai fidelitas dibanding penghematan pada korpus yang dipatok sebelum Anda mempromosikan 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? [Peringatan tersebut tidak berbahaya](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Menggunakan npm 11 atau yang lebih baru?** npm mungkin memblokir skrip lifecycle paket kecuali diizinkan. `postinstall` OmniRoute (`node scripts/build/postinstall.mjs`) diperlukan untuk menyiapkan berkas runtime native-nya. Izinkan paket yang disebutkan dalam peringatan npm saat melakukan instalasi secara global. Untuk set paket yang dilaporkan oleh OmniRoute 3.8.54:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Untuk menggunakan kembali daftar izin 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 sebuah paket berarti skrip instalasinya dapat dijalankan.
> **Menggunakan Gemini Web atau penyedia cookie web lainnya?** Paket npm menyertakan
> Playwright, tetapi tidak menyertakan biner Chromium-nya. Lihat catatan
> [penyiapan Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> sebelum membuat permintaan penyedia web pertama.
Dashboard di `http://localhost:20128` · API di `http://localhost:20128/v1`.
**2) Hubungkan penyedia yang memenuhi syarat menggunakan akun Anda sendiri**
Dashboard → **Penyedia** → pilih penyedia yang ketentuan dan kuotanya saat ini sesuai dengan kasus penggunaan Anda → tambahkan kunci API atau selesaikan alur akunnya. Tingkat gratis mungkin memerlukan pendaftaran, persetujuan, atau metode pembayaran. Tinjau [Panduan Tingkat Gratis](docs/getting-started/FREE-TIERS-GUIDE.md); ketersediaan tanpa kunci tidak dijamin, dan penyedia yang ditandai `tos: avoid` secara default dikecualikan dari `auto`.
**3) Arahkan alat 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 berfungsi**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Anda akan melihat model yang terhubung tercantum. 🎉 Selesai — mulai coding, dan OmniRoute akan melakukan routing serta fallback secara otomatis untuk Anda.
Jika klien Anda tidak dapat mengirim header khusus, 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 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 lebih dari 60.000 deklarasi pengujian statis di lebih dari 8.400 file pengujian yang dilacak
# ⭐ Kontributor Teratas
> OmniRoute dibentuk oleh komunitas sumber terbuka yang penuh semangat. Orang-orang ini telah memberikan kontribusi luar biasa yang berdampak langsung pada kualitas, stabilitas, dan jangkauan proyek. **Terima kasih.**
### Kontributor eksternal berdasarkan pull request yang digabungkan
Sensus dilakukan pada 2026-11-03 03:01:19 UTC dengan tip release/v3.8.53 aktif 05bc048d6c. Sensus GitHub GraphQL berpaginasi berisi 9.947 PR yang digabungkan: 4.130 oleh pemilik repositori, 240 oleh Dependabot, 6 oleh bot/aplikasi lain, dan 5.571 PR eksternal dari 883 kontributor berbeda. “Baris yang diubah” adalah penambahan + penghapusan GitHub dan mencakup file yang dihasilkan, lockfile, katalog, terjemahan, serta dokumentasi; ini merupakan churn, bukan LOC yang ditulis. 53 PR melaporkan diff GitHub di atas 500.000 baris (misalnya #13399, satu penambahan provider, mencantumkan 2.347 file yang diubah), yang memperbesar beberapa total di atas. Peringkat yang sama ditempatkan bersama.
### Commit yang diatribusikan ke GitHub
Diperiksa ulang pada 2026-11-03 02:09:16 UTC: commit yang diatribusikan GitHub sebagaimana dilaporkan oleh Contributors API repositori untuk cabang default release/v3.8.53. API mengembalikan 903 identitas (429 pengguna, 2 bot, 472 anonim); tabel ini mengecualikan pemelihara, bot, dan identitas anonim, serta mempertahankan peringkat yang seri. Tabel ini berbeda dari peringkat PR yang digabungkan di atas maupun sensus metadata Git di bawah.
> 🙏 Fitur, perbaikan bug, dan peningkatan infrastruktur dari para kontributor ini adalah **bagian inti** yang membuat OmniRoute andal dan kaya fitur. Setiap pull request, setiap kasus pengujian, dan setiap file terjemahan i18n sangat berarti. Sumber terbuka 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.
## 👥 1.000+ Kontributor
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Diaudit pada 2026-11-02 di tip live release/v3.8.531c7135e0fb (7.972 commit): 1.074 identitas Git manusia yang dinormalisasi — 759 muncul sebagai penulis commit (termasuk pengelola) dan 315 hanya dalam trailer Co-authored-by eksplisit. Sensus ini menerapkan .mailmap, membandingkan alamat surel tanpa membedakan huruf besar-kecil, menggabungkan alamat noreply GitHub numerik dan biasa hanya jika keduanya mengodekan handle yang sama, mengecualikan 29 identitas bot/agen/layanan/pengganti, serta tidak menggabungkan alamat surel biasa hanya karena nama tampilannya sama. Audit 2026-08-24 menerbitkan angka 639; metode ini yang dijalankan ulang pada basis audit tersebut, ac02c5b42f, menghasilkan 619, sehingga peningkatan berasal dari kontributor baru, bukan dari metode yang lebih longgar.
### Cara Berkontribusi
1. Fork repositori
2. Buat branch dari tip `release/vX.Y.Z` **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 berlangsung 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 bahu para raksasa. Proyek ini dimulai 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 saat itu, setiap subsistem di bawah ini terinspirasi oleh proyek sumber terbuka yang telah lebih dahulu mewujudkannya. Masing-masing membentuk bagian konkret dari OmniRoute. Ini adalah ungkapan terima kasih kami kepada semuanya. 🙏
> ⭐ jumlah bintang diverifikasi dari REST API GitHub pada 3 November 2026 — silakan berikan bintang kepada proyek-proyek ini. Jumlah tersebut merupakan snapshot bertanggal yang akurat dan secara alami akan berubah.
### 🧬 Silsilah & gateway
Gateway AI yang dataset harga publiknya menjadi sumber sinkronisasi pelacakan biaya kami dan model normalisasi providernya menjadi acuan bagi routing kami.
Sumber MIT yang diadaptasi ke dalam bridge ChatGPT Web → Codex Responses yang disertakan, termasuk adapter sesi browser, pembingkaian respons, penggunaan, dan pencarian web.
Pola yang di-port ke pemulihan stream, alias no-thinking, pencarian web fallback, batas jendela geser, penyamaran log, dan alur peluncur yang diperkuat.
Pemetaan model Grok, generator Statsig fake-TypeError, default request dan perangkat, serta pemroses respons NDJSON-nya diadaptasi secara substansial ke dalam executor Grok Web OmniRoute.
Sumber kode transitif utama di balik grok2api-merged; implementasi model, header, payload, Statsig, dan processornya dipertahankan dalam silsilah Grok Web.
Sumber MIT yang mendasari default payload dan perangkat Grok, generator Statsig, serta processor result.response yang diteruskan melalui TQZHR dan grok2api-merged.
Sumber transitif yang dikreditkan oleh grok2api-merged untuk lapisan proxy-pool-nya; OmniRoute mempertahankan pemberitahuan silsilah tersebut, tetapi tidak mengklaim port proxy-pool dalam executor Grok Web-nya yang cakupannya dibatasi.
Implementasi Grok Web asli ini menjadi rujukan untuk desain upstream HTTP/browser-nya; jalur HTTP langsungnya berasal dari GrokProxy, sehingga tidak ada port kode independen yang diklaim.
Proyek viral dengan filosofi "mengapa memakai banyak token jika sedikit token sudah cukup" — filosofi gaya bicara manusia gua ini mendukung mode kompresi standar kami serta lebih dari 30 aturan penghapusan/pemadatan pengisi.
Kompresi token PT-BR — mendukung paket bahasa pt-BR kami: pengurangan pleonasme dan penghapusan pengisi yang disesuaikan untuk tata bahasa Portugis-Brasil.
Keterampilan coder YAGNI "senior dev pemalas" yang viral — menginspirasi Output Style less-code kami: pengarahan perubahan terkecil yang tetap berfungsi, yang mengurangi kode _yang dihasilkan_ (sisi keluaran yang menjadi pasangan prosa ringkas milik Caveman).
Kompresi keluaran yang memahami konten dan disesuaikan per jenis file dengan pembatalan yang mempertimbangkan kegagalan — memvalidasi dispatch per jenis dan pengabaian saat keuntungan minimum tidak tercapai.
JSON kolumnar Rust + pengambilan berbasis alamat konten + deduplikasi lintas pesan — memvalidasi desain mesin headroom/ccr/session-dedup kami serta invarian "bentuk terkompresi tidak bergantung pada posisi" yang stabil terhadap cache.
Intersepsi/analisis MITM terhadap lalu lintas coding-assistant ↔ LLM menginformasikan 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 yang didasarkan pada 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 proxy transparan per proses — menginspirasi pembongkaran MITM yang aman saat terjadi crash, batas waktu idle soket, atribusi proses /proc, dan penangkapan TPROXY kami.
Pemetaan ulang model yang mempertimbangkan akun, validasi jalur executable, dan perilaku label paketnya menginformasikan runtime Antigravity OmniRoute.
Mengidentifikasi permukaan kuota Grok Build; OmniRoute kemudian memverifikasi dan mengoreksi format wire live secara independen.
## 📄 Lisensi
Lisensi MIT - lihat [LICENSE](LICENSE) untuk detail.
---
**[⬆ Kembali ke atas](#-omniroute)** · Dibuat dengan ❤️ untuk komunitas AI sumber terbuka.
Dibuat oleh Diego Souza · OmniRoute v3.8.54 · Node ≥22.22.2 · Lisensi MIT · omniroute.online