🚀 OmniRoute — The Free AI Gateway (Bahasa Indonesia)
🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr
Never stop coding. Smart routing to FREE & low-cost AI models with automatic fallback.
Proksi API universal Anda — satu titik akhir, 60+ penyedia, tanpa waktu henti. Kini denganServer MCP (25 alat),Protokol A2A,Sistem Memori/Keterampilan&Aplikasi Desktop Elektron.
Penyelesaian Obrolan • Penyematan • Pembuatan Gambar • Video • Musik • Audio • Pemeringkatan Ulang •Penelusuran Web• Server MCP • Protokol A2A • 100% TypeScript---
🌐Tersedia dalam:🇮🇩 Bahasa Inggris | 🇧🇷 Português (Brasil) | 🇪🇪 Bahasa Spanyol | 🇫🇷 Français | 🇮🇹 Italia | 🇷 Русский | CNY 中文 (简体) | 🇩🇪 Jerman | 🇮🇩 हिन्दी | 🇹hon ไทย | 🇮🇩 Українська | Somalia العربية | 🇯PH日本語 | 🇻€ Tiếng Việt | 🇧GET Български | 🇩 Dansk | 🇫🇮 Suomi | 🇮🇱 עברית | ❤ Magyar | 🇮🇩 Bahasa Indonesia | Korea Selatan 한국어 | 🇲🇾 Bahasa Melayu | €🇱 Nederland | €🇴 Norsk | ppa🇹 Portugis (Portugal) | 🇷🇴 Română | 🇱 Polski | 🇲🇾 Slovenčina | 🇲🇾 Svenska | كَوَوَوَوَنَ َبَقَوَوَنَوَنَوَوَوَنَوَوَنَوَوَوَونَونَوَوَونَوَـــــــــــــــــِـــــــــــــــــــــــــــــــَــــــــ](docs/i18n/phi/README.md) | Cheska Čeština---
🖼️ Main Dashboard
📸 Dashboard Preview
🤖 Free AI Provider for your favorite coding agents
Hubungkan alat IDE atau CLI apa pun yang didukung AI melalui OmniRoute — gerbang API gratis untuk pengkodean tanpa batas.
Buka Cakar
⭐ 205K
NanoBot
⭐ 20,9K
PicoClaw
⭐ 14,6K
ZeroClaw
⭐ 9,9K
Cakar Besi
⭐ 2,1K
Kode Terbuka
⭐ 106K
Kodeks CLI
⭐ 60,8K
Kode Claude
⭐ 67,3K
KLI Gemini
⭐ 94,7K
Kode Kilo
⭐ 15,5K
📡 Semua agen terhubung melalui http://localhost:20128/v1 atau http://cloud.omniroute.online/v1 — satu konfigurasi, model dan kuota tak terbatas---
🤔 Why OmniRoute?
Berhenti membuang-buang uang dan mencapai batas:
Kuota berlangganan habis dan tidak terpakai setiap bulan
Batasan kecepatan menghentikan Anda di tengah-tengah coding
API mahal ($20-50/bulan per penyedia)
Peralihan manual antar penyedia
OmniRoute memecahkan masalah ini:
- ✅Maksimalkan langganan- Lacak kuota, gunakan setiap bit sebelum menyetel ulang
- ✅Pengembalian otomatis- Berlangganan → Kunci API → Murah → Gratis, tanpa downtime
- ✅Multi-akun- Round-robin antar akun per penyedia
- ✅Universal- Bekerja dengan Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, alat CLI apa pun---
📧 Support
💬Bergabunglah dengan komunitas kami!Grup WhatsApp — Dapatkan bantuan, berbagi kiat, dan terus dapatkan informasi terbaru.
-Situs Web: omniroute.online -GitHub: github.com/diegosouzapw/OmniRoute -Masalah: github.com/diegosouzapw/OmniRoute/issues -WhatsApp: Grup Komunitas -Berkontribusi: Lihat CONTRIBUTING.md, buka PR, atau pilih terbitan pertama yang bagus -Proyek Asli: 9router oleh decolua### 🐛 Reporting a Bug?
Saat membuka masalah, jalankan perintah info sistem dan lampirkan file yang dihasilkan:```bash npm run system-info
Ini menghasilkan `system-info.txt` dengan versi Node.js, versi OmniRoute, detail OS, alat CLI yang diinstal (qoder, gemini, claude, codex, antigravity, droid, dll.), status Docker/PM2, dan paket sistem — semua yang kami perlukan untuk mereproduksi masalah Anda dengan cepat. Lampirkan file langsung ke masalah GitHub Anda.---
## 🔄 How It Works
┌─────────────┐ │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...) │ Tool │ └──────┬──────┘ │ http://localhost:20128/v1 ↓ ┌─────────────────────────────────────────┐ │ OmniRoute (Smart Router) │ │ • Format translation (OpenAI ↔ Claude) │ │ • Quota tracking + Embeddings + Images │ │ • Auto token refresh │ └──────┬──────────────────────────────────┘ │ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI │ ↓ quota exhausted ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc. │ ↓ budget limit ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M) │ ↓ budget limit └─→ [Tier 4: FREE] Qoder, Qwen, Kiro (unlimited)
Result: Never stop coding, minimal cost
---
## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
>**Setiap pengembang yang menggunakan alat AI menghadapi masalah ini setiap hari.**OmniRoute dibuat untuk menyelesaikan semuanya — mulai dari pembengkakan biaya hingga pemblokiran regional, mulai dari aliran OAuth yang rusak hingga operasi protokol dan kemampuan observasi perusahaan.
<detail>
<summary><b>💸 1. "Saya membayar langganan yang mahal namun tetap terganggu oleh batasan"</b></summary>
Pengembang membayar $20–200/bulan untuk Claude Pro, Codex Pro, atau GitHub Copilot. Bahkan saat membayar, kuota memiliki batas tertinggi — penggunaan 5 jam, batas mingguan, atau batas tarif per menit. Di tengah sesi pengkodean, penyedia berhenti merespons dan pengembang kehilangan aliran dan produktivitas.
**Bagaimana OmniRoute menyelesaikannya:**
-**Smart 4-Tier Fallback**— Jika kuota berlangganan habis, otomatis dialihkan ke Kunci API → Murah → Gratis tanpa intervensi manual
-**Pelacakan Batas Penyedia**— Refresh snapshot kuota yang di-cache pada jadwal sisi server (default `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) dengan refresh manual tersedia di UI
-**Dukungan Multi-Akun**— Beberapa akun per penyedia dengan sistem round-robin otomatis — jika satu akun habis, beralih ke akun berikutnya
-**Kombo Kustom**— Rantai fallback yang dapat disesuaikan dengan 9 strategi penyeimbangan (prioritas, tertimbang, pengisian pertama, round-robin, P2C, acak, paling jarang digunakan, optimalisasi biaya, acak ketat)
-**Codex Business Quotas**— Pemantauan kuota ruang kerja Bisnis/Tim langsung di dasbor</details>
<detail>
<summary><b>🔌 2. "Saya perlu menggunakan beberapa penyedia tetapi masing-masing penyedia memiliki API yang berbeda"</b></summary>
OpenAI menggunakan satu format, Claude (Anthropic) menggunakan format lain, Gemini menggunakan format lain. Jika pengembang ingin menguji model dari penyedia yang berbeda atau melakukan fallback di antara penyedia tersebut, mereka perlu mengonfigurasi ulang SDK, mengubah titik akhir, menangani format yang tidak kompatibel. Penyedia khusus (FriendLI, NIM) memiliki titik akhir model non-standar.
**Bagaimana OmniRoute menyelesaikannya:**
-**Titik Akhir Terpadu**— Satu `http://localhost:20128/v1` berfungsi sebagai proxy untuk 60+ penyedia
-**Terjemahan Format**— Otomatis dan transparan: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-**Sanitasi Respons**— Menghapus kolom non-standar (`x_groq`, `usage_breakdown`, `service_tier`) yang merusak OpenAI SDK v1.83+
-**Normalisasi Peran**— Mengonversi `pengembang` → `sistem` untuk penyedia non-OpenAI; `sistem` → `pengguna` untuk GLM/ERNIE
-**Think Tag Extraction**— Mengekstrak blok `<think>` dari model seperti DeepSeek R1 ke dalam `reasoning_content` standar
-**Output Terstruktur untuk Gemini**— `json_schema` → `responseMimeType`/`responseSchema` konversi otomatis
-**`stream` defaultnya adalah `false`**— Sesuai dengan spesifikasi OpenAI, menghindari SSE yang tidak terduga di SDK Python/Rust/Go</details>
<detail>
<summary><b>🌐 3. "Penyedia AI saya memblokir wilayah/negara saya"</b></summary>
Penyedia seperti OpenAI/Codex memblokir akses dari wilayah geografis tertentu. Pengguna mendapatkan error seperti `unsupported_country_region_territory` selama koneksi OAuth dan API. Hal ini sangat membuat frustasi bagi pengembang dari negara-negara berkembang.
**Bagaimana OmniRoute menyelesaikannya:**
-**Konfigurasi Proksi 3 Tingkat**— Proksi yang dapat dikonfigurasi pada 3 tingkat: global (semua lalu lintas), per penyedia (hanya satu penyedia), dan per koneksi/kunci
-**Lencana Proksi Berkode Warna**— Indikator visual: 🟢 proksi global, 🟡 proksi penyedia, 🔵 proksi koneksi, selalu menampilkan IP
-**OAuth Token Exchange Through Proxy**— Alur OAuth juga melewati proxy, menyelesaikan `unsupported_country_region_territory`
-**Tes Koneksi melalui Proxy**— Tes koneksi menggunakan proxy yang dikonfigurasi (tidak ada lagi bypass langsung)
-**Dukungan SOCKS5**— Dukungan proksi SOCKS5 penuh untuk perutean keluar
-**TLS Fingerprint Spoofing**— Sidik jari TLS mirip browser melalui `wreq-js` untuk melewati deteksi bot
-**🔏 Pencocokan Sidik Jari CLI**— Menyusun ulang header dan kolom isi agar cocok dengan tanda tangan biner CLI asli, sehingga secara drastis mengurangi risiko penandaan akun. IP proxy dipertahankan — Anda mendapatkan**dan**penyembunyian IP secara bersamaan</details>
<detail>
<summary><b>🆓 4. "Saya ingin menggunakan AI untuk coding tapi saya tidak punya uang"</b></summary>
Tidak semua orang mampu membayar $20–200/bulan untuk berlangganan AI. Pelajar, pengembang dari negara-negara berkembang, penghobi, dan pekerja lepas memerlukan akses ke model berkualitas tanpa biaya.
**Bagaimana OmniRoute menyelesaikannya:**
-**Penyedia Tingkat Gratis Bawaan**— Dukungan asli untuk 100% penyedia gratis: Qoder (5 model tak terbatas melalui OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 model tak terbatas: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID gratis), Gemini CLI (gratis 180 ribu token/bulan)
-**Ollama Cloud**— Model Ollama yang dihosting cloud di `api.ollama.com` dengan tingkat "Penggunaan ringan" gratis; gunakan awalan `ollamacloud/<model>`
-**Kombo Khusus Gratis**— Rantai `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/bulan tanpa waktu henti
-**Akses Gratis NVIDIA NIM**— akses gratis dev-selamanya ~40 RPM ke 70+ model di build.nvidia.com (beralih dari kredit ke batas tarif murni)
-**Strategi Pengoptimalan Biaya**— Strategi perutean yang secara otomatis memilih penyedia termurah yang tersedia</details>
<detail>
<summary><b>🔒 5. "Saya perlu melindungi gateway AI saya dari akses tidak sah"</b></summary>
Saat mengekspos gateway AI ke jaringan (LAN, VPS, Docker), siapa pun yang memiliki alamat tersebut dapat menggunakan token/kuota pengembang. Tanpa perlindungan, API rentan terhadap penyalahgunaan, injeksi cepat, dan penyalahgunaan.
**Bagaimana OmniRoute menyelesaikannya:**
-**Manajemen Kunci API**— Pembuatan, rotasi, dan pelingkupan per penyedia dengan halaman `/dashboard/api-manager` khusus
-**Izin Tingkat Model**— Membatasi kunci API untuk model tertentu (`openai/*`, pola karakter pengganti), dengan tombol Izinkan Semua/Batasi
-**API Endpoint Protection**— Memerlukan kunci untuk `/v1/models` dan memblokir penyedia tertentu dari daftar
-**Auth Guard + Perlindungan CSRF**— Semua rute dasbor dilindungi dengan middleware `withAuth` + token CSRF
-**Pembatas Kecepatan**— Pembatasan kecepatan per-IP dengan jendela yang dapat dikonfigurasi
-**Pemfilteran IP**— Daftar yang diizinkan/daftar blokir untuk kontrol akses
-**Prompt Injection Guard**— Sanitasi terhadap pola prompt berbahaya
-**Enkripsi AES-256-GCM**— Kredensial dienkripsi saat disimpan</details>
<detail>
<summary><b>🛑 6. "Penyedia saya down dan saya kehilangan alur coding"</b></summary>
Penyedia AI bisa menjadi tidak stabil, menampilkan kesalahan 5xx, atau mencapai batas kecepatan sementara. Jika pengembang bergantung pada satu penyedia, mereka akan terganggu. Tanpa pemutus sirkuit, percobaan ulang yang berulang-ulang dapat membuat aplikasi crash.
**Bagaimana OmniRoute menyelesaikannya:**
-**Pemutus Sirkuit per model**— Buka/tutup otomatis dengan ambang batas dan cooldown yang dapat dikonfigurasi (Tertutup/Terbuka/Setengah Terbuka), tercakup per model untuk menghindari blok berjenjang
-**Kemunduran Eksponensial**— Penundaan percobaan ulang yang progresif
-**Kawanan Anti-Guntur**— Perlindungan mutex + semaphore terhadap badai percobaan ulang secara bersamaan
-**Combo Fallback Chains**— Jika penyedia utama gagal, otomatis gagal dalam rantai tanpa intervensi
-**Combo Circuit Breaker**— Menonaktifkan secara otomatis penyedia yang gagal dalam rantai kombo
-**Dasbor Kesehatan**— Pemantauan waktu aktif, status pemutus sirkuit, penguncian, statistik cache, latensi p50/p95/p99</details>
<detail>
<summary><b>🔧 7. "Mengonfigurasi setiap alat AI itu membosankan dan berulang-ulang"</b></summary>
Pengembang menggunakan Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Setiap alat memerlukan konfigurasi yang berbeda (titik akhir API, kunci, model). Mengonfigurasi ulang saat berpindah penyedia atau model hanya membuang-buang waktu.
**Bagaimana OmniRoute menyelesaikannya:**
-**Dasbor Alat CLI**— Halaman khusus dengan pengaturan sekali klik untuk Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-**GitHub Copilot Config Generator**— Menghasilkan `chatLanguageModels.json` untuk VS Code dengan pemilihan model massal
-**Onboarding Wizard**— Guided 4-step setup for first-time users
-**Satu titik akhir, semua model**— Konfigurasikan `http://localhost:20128/v1` sekali, akses 60+ penyedia</details>
<detail>
<summary><b>🔑 8. "Mengelola token OAuth dari beberapa penyedia adalah hal yang buruk"</b></summary>
Claude Code, Codex, Gemini CLI, Copilot — semuanya menggunakan OAuth 2.0 dengan token yang kedaluwarsa. Pengembang perlu melakukan autentikasi ulang terus-menerus, menangani `rahasia_klien yang hilang`, `redirect_uri_mismatch`, dan kegagalan pada server jarak jauh. OAuth pada LAN/VPS sangat bermasalah.
**Bagaimana OmniRoute menyelesaikannya:**
-**Penyegaran Token Otomatis**— Penyegaran token OAuth di latar belakang sebelum masa berlakunya habis
-**OAuth 2.0 (PKCE) Bawaan**— Aliran otomatis untuk Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder
-**OAuth Multi-Akun**— Beberapa akun per penyedia melalui ekstraksi token JWT/ID
-**OAuth LAN/Remote Fix**— Deteksi IP pribadi untuk `redirect_uri` + mode URL manual untuk server jarak jauh
-**OAuth Dibalik Nginx**— Menggunakan `window.location.origin` untuk kompatibilitas proxy terbalik
-**Panduan OAuth Jarak Jauh**— Panduan langkah demi langkah untuk kredensial Google Cloud di VPS/Docker</details>
<detail>
<summary><b>📊 9. "Saya tidak tahu berapa banyak yang saya belanjakan atau di mana"</b></summary>
Pengembang menggunakan beberapa penyedia berbayar tetapi tidak memiliki pandangan terpadu mengenai pembelanjaan. Setiap penyedia memiliki dasbor penagihannya sendiri, namun tidak ada tampilan gabungan. Biaya tak terduga bisa menumpuk.
**Bagaimana OmniRoute menyelesaikannya:**
-**Dasbor Analisis Biaya**— Pelacakan biaya per token dan pengelolaan anggaran per penyedia
-**Batas Anggaran per Tingkat**— Batas pembelanjaan per tingkat yang memicu penggantian otomatis
-**Konfigurasi Harga Per Model**— Harga per model yang dapat dikonfigurasi
-**Statistik Penggunaan Per Kunci API**— Jumlah permintaan dan stempel waktu terakhir digunakan per kunci
-**Dasbor Analytics**— Kartu statistik, diagram penggunaan model, tabel penyedia dengan tingkat keberhasilan dan latensi</details>
<detail>
<summary><b>🐛 10. "Saya tidak bisa mendiagnosis kesalahan dan masalah dalam panggilan AI"</b></summary>
Saat panggilan gagal, pengembang tidak mengetahui apakah itu batas kecepatan, token kedaluwarsa, format salah, atau kesalahan penyedia. Log terfragmentasi di terminal yang berbeda. Tanpa observabilitas, debugging adalah trial-and-error.
**Bagaimana OmniRoute menyelesaikannya:**
-**Dasbor Log Terpadu**— 4 tab: Log Permintaan, Log Proksi, Log Audit, Konsol
-**Penampil Log Konsol**— Penampil gaya terminal real-time dengan level kode warna, gulir otomatis, pencarian, filter
-**Log Proxy SQLite**— Log persisten yang bertahan saat server dimulai ulang
-**Translator Playground**— 4 mode debugging: Playground (terjemahan format), Chat Tester (pulang pergi), Test Bench (batch), Live Monitor (real-time)
-**Telemetri Permintaan**— latensi p50/p95/p99 + penelusuran X-Request-Id
-**Logging Berbasis File dengan Rotasi**— Log aplikasi dirotasi berdasarkan ukuran, hari penyimpanan, dan jumlah arsip; artefak log panggilan dirotasi berdasarkan hari retensi dan jumlah file
-**Laporan Info Sistem**— `npm run system-info` menghasilkan `system-info.txt` dengan lingkungan lengkap Anda (Versi Node, versi OmniRoute, OS, alat CLI, status Docker/PM2). Lampirkan saat melaporkan masalah untuk triase instan.</details>
<detail>
<summary><b>🏗️ 11. "Menerapkan dan memelihara gateway itu rumit"</b></summary>
Menginstal, mengonfigurasi, dan memelihara proksi AI di berbagai lingkungan (lokal, VPS, Docker, cloud) membutuhkan banyak tenaga. Masalah seperti jalur hardcode, `EACCES` pada direktori, konflik port, dan pembangunan lintas platform menambah gesekan.
**Bagaimana OmniRoute menyelesaikannya:**
-**npm global install**— `npm install -g omniroute && omniroute` — selesai
-**Docker Multi-Platform**— asli AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi)
-**Docker Compose Profiles**— `base` (tanpa alat CLI) dan `cli` (dengan Claude Code, Codex, OpenClaw)
-**Aplikasi Desktop Electron**— Aplikasi asli untuk Windows/macOS/Linux dengan baki sistem, mulai otomatis, mode offline
-**Mode Port Terpisah**— API dan Dasbor pada port terpisah untuk skenario tingkat lanjut (proksi terbalik, jaringan kontainer)
-**Cloud Sync**— Konfigurasi sinkronisasi antar perangkat melalui Cloudflare Workers
-**DB Backups**— Pencadangan otomatis, pemulihan, ekspor dan impor semua pengaturan, dengan `DISABLE_SQLITE_AUTO_BACKUP` untuk pencadangan yang dikelola secara eksternal</details>
<detail>
<summary><b>🌍 12. "Antarmukanya hanya berbahasa Inggris dan tim saya tidak bisa berbahasa Inggris"</b></summary>
Tim di negara-negara yang tidak berbahasa Inggris, khususnya di Amerika Latin, Asia, dan Eropa, kesulitan dengan antarmuka yang hanya berbahasa Inggris. Hambatan bahasa mengurangi adopsi dan meningkatkan kesalahan konfigurasi.
**Bagaimana OmniRoute menyelesaikannya:**
-**Dasbor i18n — 30 Bahasa**— 500+ tombol diterjemahkan termasuk Arab, Bulgaria, Denmark, Jerman, Spanyol, Finlandia, Prancis, Ibrani, Hindi, Hungaria, Indonesia, Italia, Jepang, Korea, Melayu, Belanda, Norwegia, Polandia, Portugis (PT/BR), Rumania, Rusia, Slovakia, Swedia, Thailand, Ukraina, Vietnam, China, Filipina, Inggris
-**Dukungan RTL**— Dukungan kanan ke kiri untuk bahasa Arab dan Ibrani
-**README Multi-Bahasa**— 30 terjemahan dokumentasi lengkap
-**Pemilih Bahasa**— Ikon bola dunia di header untuk peralihan waktu nyata</details>
<detail>
<summary><b>🔄 13. "Saya memerlukan lebih dari sekedar chat — saya memerlukan embeddings, gambar, audio"</b></summary>
AI bukan hanya penyelesaian obrolan. Pengembang perlu membuat gambar, mentranskripsikan audio, membuat penyematan untuk RAG, mengubah peringkat dokumen, dan memoderasi konten. Setiap API memiliki titik akhir dan format yang berbeda.
**Bagaimana OmniRoute menyelesaikannya:**
-**Embeddings**— `/v1/embeddings` dengan 6 penyedia dan 9+ model
-**Image Generation**— `/v1/images/generasi` dengan 10 penyedia dan 20+ model (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)
-**Teks-ke-Video**— `/v1/videos/generasi` — ComfyUI (AnimateDiff, SVD) dan SD WebUI
-**Teks-ke-Musik**— `/v1/music/generasi` — ComfyUI (Audio Terbuka Stabil, MusicGen)
-**Transkripsi Audio**— `/v1/audio/transkripsi` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-**Text-to-Speech**— `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3,**Inworld**,**Cartesia**,**PlayHT**, + penyedia yang ada
-**Moderasi**— `/v1/moderations` — Pemeriksaan keamanan konten
-**Pemeringkatan ulang**— `/v1/rerank` — Pemeringkatan ulang relevansi dokumen
-**Responses API**— Dukungan penuh `/v1/responses` untuk Codex</details>
<detail>
<summary><b>🧪 14. "Saya tidak punya cara untuk menguji dan membandingkan kualitas antar model"</b></summary>
Pengembang ingin mengetahui model mana yang terbaik untuk kasus penggunaan mereka — kode, terjemahan, penalaran — tetapi membandingkan secara manual itu lambat. Tidak ada alat evaluasi terintegrasi.
**Bagaimana OmniRoute menyelesaikannya:**
-**Evaluasi LLM**— Pengujian set emas dengan 10 kasus yang dimuat sebelumnya yang mencakup salam, matematika, geografi, pembuatan kode, kepatuhan JSON, terjemahan, penurunan harga, penolakan keamanan
-**4 Strategi Pencocokan**— `exact`, `contains`, `regex`, `custom` (fungsi JS)
-**Bangku Tes Taman Bermain Penerjemah**— Pengujian batch dengan banyak masukan dan keluaran yang diharapkan, perbandingan lintas penyedia
-**Penguji Obrolan**— Perjalanan bolak-balik penuh dengan rendering respons visual
-**Monitor Langsung**— Aliran real-time dari semua permintaan yang mengalir melalui proxy</details>
<detail>
<summary><b>📈 15. "Saya perlu melakukan peningkatan tanpa kehilangan performa"</b></summary>
Seiring bertambahnya volume permintaan, tanpa menyimpan pertanyaan yang sama akan menghasilkan biaya duplikat. Tanpa idempotensi, permintaan duplikat akan membuang-buang pemrosesan. Batasan tarif per penyedia harus dipatuhi.
**Bagaimana OmniRoute menyelesaikannya:**
-**Cache Semantik**— Cache dua tingkat (tanda tangan + semantik) mengurangi biaya dan latensi
-**Request Idempoency**— Jendela deduplikasi 5 detik untuk permintaan yang identik
-**Deteksi Batas Tarif**— RPM per penyedia, selisih minimum, dan pelacakan serentak maks
-**Batas Nilai yang Dapat Diedit**— Default yang dapat dikonfigurasi di Pengaturan → Ketahanan dengan persistensi
-**Cache Validasi Kunci API**— cache 3 tingkat untuk kinerja produksi
-**Dasbor Kesehatan dengan Telemetri**— latensi p50/p95/p99, statistik cache, waktu aktif</details>
<detail>
<summary><b>🤖 16. "Saya ingin mengontrol perilaku model secara global"</b></summary>
Pengembang yang menginginkan semua respons dalam bahasa tertentu, dengan nada tertentu, atau ingin membatasi token penalaran. Mengonfigurasi ini di setiap alat/permintaan tidak praktis.
**Bagaimana OmniRoute menyelesaikannya:**
-**Injeksi Perintah Sistem**— Perintah global diterapkan ke semua permintaan
-**Validasi Anggaran Berpikir**— Kontrol alokasi token penalaran per permintaan (passthrough, otomatis, kustom, adaptif)
-**9 Strategi Perutean**— Strategi global yang menentukan cara permintaan didistribusikan
-**Wildcard Router**— Pola `penyedia/*` dirutekan secara dinamis ke penyedia mana pun
-**Combo Aktifkan/Nonaktifkan Toggle**— Beralih kombo langsung dari dasbor
-**Toggle Penyedia**— Mengaktifkan/menonaktifkan semua koneksi untuk penyedia dengan satu klik
-**Penyedia yang Diblokir**— Kecualikan penyedia tertentu dari daftar `/v1/models`</details>
<detail>
<summary><b>🧰 17. "Saya membutuhkan alat MCP sebagai kemampuan produk kelas satu"</b></summary>
Banyak gateway AI yang mengekspos MCP hanya sebagai detail implementasi yang tersembunyi. Tim memerlukan lapisan operasi yang terlihat dan dapat dikelola.
**Bagaimana OmniRoute menyelesaikannya:**
- MCP muncul di navigasi dasbor dan tab protokol titik akhir
- Halaman manajemen MCP khusus dengan proses, alat, cakupan, dan audit
- Mulai cepat bawaan untuk `omniroute --mcp` dan orientasi klien</details>
<detail>
<summary><b>🧠 18. "Saya memerlukan orkestrasi A2A dengan jalur tugas sinkronisasi + streaming"</b></summary>
Alur kerja agen memerlukan balasan langsung dan eksekusi streaming jangka panjang dengan kontrol siklus hidup.
**Bagaimana OmniRoute menyelesaikannya:**
- Titik akhir A2A JSON-RPC (`POST /a2a`) dengan `message/send` dan `message/stream`
- Streaming SSE dengan propagasi status terminal
- API siklus hidup tugas untuk `tasks/get` dan `tasks/cancel`</details>
<detail>
<summary><b>🛰️ 19. "Saya membutuhkan kesehatan proses MCP yang nyata, bukan status yang dapat ditebak"</b></summary>
Tim operasional perlu mengetahui apakah MCP benar-benar aktif, bukan hanya apakah API dapat dijangkau.
**Bagaimana OmniRoute menyelesaikannya:**
- File detak jantung runtime dengan PID, stempel waktu, transportasi, jumlah alat, dan mode cakupan
- API status MCP menggabungkan detak jantung + aktivitas terkini
- Kartu status UI untuk kesegaran proses/waktu aktif/detak jantung</details>
<detail>
<summary><b>📋 20. "Saya memerlukan eksekusi alat MCP yang dapat diaudit"</b></summary>
Saat alat mengubah konfigurasi atau memicu tindakan operasi, tim memerlukan kemampuan penelusuran forensik.
**Bagaimana OmniRoute menyelesaikannya:**
- Pencatatan audit yang didukung SQLite untuk panggilan alat MCP
- Filter berdasarkan alat, keberhasilan/kegagalan, kunci API, dan penomoran halaman
- Tabel audit dasbor + titik akhir statistik untuk otomatisasi</details>
<detail>
<summary><b>🔐 21. "Saya memerlukan izin MCP terbatas untuk setiap integrasi"</b></summary>
Klien yang berbeda harus memiliki akses dengan hak istimewa paling rendah ke kategori alat.
**Bagaimana OmniRoute menyelesaikannya:**
- 10 cakupan MCP granular untuk akses alat terkontrol
- Penegakan cakupan dan visibilitas di UI manajemen MCP
- Postur default yang aman untuk perkakas operasional</details>
<detail>
<summary><b>⚙️ 22. "Saya memerlukan kontrol operasional tanpa melakukan penempatan ulang"</b></summary>
Tim memerlukan perubahan runtime yang cepat selama insiden atau peristiwa biaya.
**Bagaimana OmniRoute menyelesaikannya:**
- Beralih aktivasi kombo langsung dari dasbor MCP
- Menerapkan profil ketahanan dari paket kebijakan yang telah ditentukan sebelumnya
- Reset status pemutus sirkuit dari panel operasi yang sama</details>
<detail>
<summary><b>🔄 23. "Saya memerlukan visibilitas dan pembatalan siklus hidup tugas A2A langsung"</b></summary>
Tanpa visibilitas siklus hidup, insiden tugas menjadi sulit untuk diprioritaskan.
**Bagaimana OmniRoute menyelesaikannya:**
- Daftar tugas/pemfilteran berdasarkan status/keterampilan dengan penomoran halaman
- Telusuri metadata tugas, peristiwa, dan artefak
- Titik akhir pembatalan tugas dan tindakan UI dengan konfirmasi</details>
<detail>
<summary><b>🌊 24. "Saya memerlukan metrik streaming aktif untuk memuat A2A"</b></summary>
Alur kerja streaming memerlukan wawasan operasional tentang konkurensi dan koneksi langsung.
**Bagaimana OmniRoute menyelesaikannya:**
- Penghitung aliran aktif terintegrasi ke dalam status A2A
- Stempel waktu tugas terakhir dan jumlah per negara bagian
- Kartu dasbor A2A untuk pemantauan operasi waktu nyata</details>
<detail>
<summary><b>🪪 25. "Saya memerlukan penemuan agen standar untuk klien"</b></summary>
Klien dan orkestra eksternal memerlukan metadata yang dapat dibaca mesin untuk orientasi.
**Bagaimana OmniRoute menyelesaikannya:**
- Kartu Agen terekspos di `/.well-known/agent.json`
- Kemampuan dan keterampilan yang ditunjukkan dalam manajemen UI
- API status A2A mencakup metadata penemuan untuk otomatisasi</details>
<detail>
<summary><b>🧭 26. "Saya memerlukan kemampuan menemukan protokol di UX produk"</b></summary>
Jika pengguna tidak dapat menemukan permukaan protokol, kualitas adopsi dan dukungan akan menurun.
**Bagaimana OmniRoute menyelesaikannya:**
- Halaman**Endpoint**terkonsolidasi dengan tab untuk Proxy, MCP, A2A, dan API Endpoints
- Pengalih status layanan inline (Online/Offline) untuk MCP dan A2A
- Tautan dari ikhtisar ke tab manajemen khusus</details>
<detail>
<summary><b>🧪 27. "Saya memerlukan validasi protokol end-to-end dengan klien nyata"</b></summary>
Tes tiruan tidak cukup untuk memvalidasi kompatibilitas protokol sebelum rilis.
**Bagaimana OmniRoute menyelesaikannya:**
- Suite E2E yang mem-boot aplikasi dan menggunakan transportasi klien MCP SDK yang sebenarnya
- Klien A2A menguji penemuan, pengiriman, streaming, dapatkan, dan pembatalan aliran
- Periksa silang pernyataan terhadap audit MCP dan API tugas A2A</details>
<detail>
<summary><b>📡 28. "Saya memerlukan kemampuan pengamatan terpadu di semua antarmuka"</b></summary>
Memisahkan observabilitas berdasarkan protokol menciptakan titik buta dan MTTR yang lebih panjang.
**Bagaimana OmniRoute menyelesaikannya:**
- Dasbor/log/analitik terpadu dalam satu produk
- Kesehatan + audit + permintaan telemetri di seluruh lapisan OpenAI, MCP, dan A2A
- API Operasional untuk status dan otomatisasi</details>
<detail>
<summary><b>💼 29. "Saya memerlukan satu runtime untuk proxy + alat + orkestrasi agen"</b></summary>
Menjalankan banyak layanan terpisah akan meningkatkan biaya operasional dan mode kegagalan.
**Bagaimana OmniRoute menyelesaikannya:**
- Proksi yang kompatibel dengan OpenAI, server MCP, dan server A2A dalam satu tumpukan
- Otentikasi bersama, ketahanan, penyimpanan data, dan kemampuan observasi
- Model kebijakan yang konsisten di seluruh platform interaksi</details>
<detail>
<summary><b>🚀 30. "Saya perlu mengirimkan alur kerja agen tanpa penyebaran kode lem"</b></summary>
Tim kehilangan kecepatan saat menggabungkan beberapa layanan dan skrip ad-hoc.
**Bagaimana OmniRoute menyelesaikannya:**
- Strategi titik akhir terpadu untuk klien dan agen
- UI manajemen protokol bawaan dan jalur validasi asap
- Fondasi siap produksi (keamanan, logging, ketahanan, cadangan)</details>
### Example Playbooks (Integrated Use Cases)
**Playbook A: Maksimalkan langganan berbayar + cadangan murah**```txt
Combo: "maximize-claude"
1. cc/claude-opus-4-6
2. glm/glm-4.7
3. if/kimi-k2-thinking
Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
Playbook B: Tumpukan coding tanpa biaya```txt Combo: "free-forever"
- gc/gemini-3-flash
- if/kimi-k2-thinking
- qw/qwen3-coder-plus
Monthly cost: $0 Outcome: stable free coding workflow
**Playbook C: Rantai fallback yang selalu aktif 24/7**```txt
Combo: "always-on"
1. cc/claude-opus-4-6
2. cx/gpt-5.2-codex
3. glm/glm-4.7
4. minimax/MiniMax-M2.1
5. if/kimi-k2-thinking
Outcome: deep fallback depth for deadline-critical workloads
Playbook D: Operasi agen dengan MCP + A2A```txt
- Start MCP transport (
omniroute --mcp) for tool-driven operations - Run A2A tasks via
message/sendandmessage/stream - Observe via /dashboard/endpoint (MCP and A2A tabs)
- Toggle services via inline status controls
---
## 🆓 Start Free — Zero Configuration Cost
> Siapkan pengkodean AI dalam hitungan menit di**$0/bulan**. Hubungkan akun gratis ini dan gunakan kombo**Free Stack**bawaan.
| Langkah | Aksi | Penyedia Tidak Terkunci |
| ---- | --------------------------------------------------- | ------------------------------------------------------------------- |
| 1 | Hubungkan**Kiro**(AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 —**tidak terbatas**|
| 2 | Hubungkan**Qoder**(Google OAuth) | pemikiran kimi-k2, qwen3-coder-plus, deepseek-r1... —**tidak terbatas**|
| 3 | Hubungkan**Qwen**(Kode Perangkat) | qwen3-coder-plus, qwen3-coder-flash... —**tidak terbatas**|
| 4 | Hubungkan**Gemini CLI**(Google OAuth) | gemini-3-flash, gemini-2.5-pro —**180K/bln gratis**|
| 5 | `/dashboard/combos` →**Templat Tumpukan Gratis ($0)**| Round-robin semua penyedia gratis secara otomatis |
**Arahkan IDE/CLI apa pun ke:**`http://localhost:20128/v1` · Kunci API: `any-string` · Selesai.
>**Cakupan ekstra opsional (juga gratis):**Kunci API Groq (gratis 30 RPM), NVIDIA NIM (gratis 40 RPM, 70+ model), Cerebras (1 juta tok/hari), kunci API LongCat (50 juta token/hari!), Cloudflare Workers AI (10 ribu neuron/hari, 50+ model).## Mulai Cepat
### 1) Install and run
```bash
npm install -g omniroute
omniroute
**pengguna pnpm:**Jalankan
pnpm Approve-builds -gsetelah instalasi untuk mengaktifkan skrip build asli yang diperlukan olehbetter-sqlite3dan@swc/core:instalasi pnpm -g omniroute pnpm Approve-builds -g # Pilih semua paket → setujui rute omni
Dasbor terbuka di http://localhost:20128 dan URL dasar API adalah http://localhost:20128/v1.
| Perintah | Deskripsi |
|---|---|
omnirute |
Mulai server (PORT=20128, API dan dasbor pada port yang sama) |
omniroute --port 3000 |
Setel port kanonik/API ke 3000 |
omniroute --mcp |
Mulai server MCP (stdio transport) |
omniroute --tidak terbuka |
Jangan buka otomatis browser |
omniroute --bantuan |
Tampilkan bantuan |
Mode port terpisah opsional:```bash PORT=20128 DASHBOARD_PORT=20129 omniroute
API: http://localhost:20128/v1
Dashboard: http://localhost:20129
### Long-Running Streaming Timeouts
Untuk sebagian besar penerapan, Anda hanya memerlukan:
| Variabel | Bawaan | Tujuan |
| ------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | `600000` | Shared baseline for upstream fetch, hidden Undici timeouts, TLS fingerprint requests, and API bridge request/proxy timeouts |
| `STREAM_IDLE_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` | Kesenjangan maksimum antara potongan streaming sebelum OmniRoute membatalkan aliran SSE |
Kompatibilitas mundur dipertahankan: `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` yang ada, dan var batas waktu per lapisan lainnya masih berfungsi dan menggantikan garis dasar bersama.
Penggantian tingkat lanjut tersedia jika Anda memerlukan kontrol yang lebih baik:| Variabel | Bawaan | Tujuan |
| ---------------------------------------- | ------------------------------------------ | ------------------------------------------------------ |
| `FETCH_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` | Total batas waktu permintaan hulu yang digunakan oleh sinyal pembatalan pengambilan utama |
| `FETCH_HEADERS_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Batas waktu Undici untuk menerima header respons upstream |
| `FETCH_BODY_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Batas waktu yang tidak ditentukan antara potongan badan hulu (`0` menonaktifkannya) |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Batas waktu koneksi TCP Undici habis |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | `4000` | Batas waktu soket tetap hidup yang tidak aktif |
| `TLS_CLIENT_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Batas waktu untuk permintaan sidik jari TLS yang dilakukan melalui `wreq-js` |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` atau `30000` | Batas waktu untuk penerusan proxy `/v1` dari port API ke port dasbor |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `maks(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Batas waktu permintaan masuk di server jembatan API |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Batas waktu header masuk di server jembatan API |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Batas waktu tetap hidup di server jembatan API |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Batas waktu ketidakaktifan soket di server jembatan API (`0` menonaktifkannya) |
Jika Anda menjalankan OmniRoute di belakang Nginx, Caddy, Cloudflare, atau proksi terbalik lainnya, pastikan proksi tersebut
waktu tunggu juga lebih tinggi daripada waktu tunggu aliran/pengambilan OmniRoute Anda.### 2) Connect providers and create your API key
1. Buka Dasbor → `Penyedia` dan sambungkan setidaknya satu penyedia (OAuth atau kunci API).
2. Buka Dasbor → `Titik Akhir` dan buat kunci API.
3. (Opsional) Buka Dasbor → `Kombo` dan atur rantai cadangan Anda.### 3) Point your coding tool to OmniRoute
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Endpoint page]
Model: if/kimi-k2-thinking (or any provider/model prefix)
Bekerja dengan Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode, dan SDK yang kompatibel dengan OpenAI.### 4) Enable and validate protocols (v2.0)
MCP (untuk operasi yang digerakkan oleh alat):```bash omniroute --mcp
Kemudian sambungkan klien MCP Anda melalui `stdio` dan alat uji seperti:
- `omniroute_get_health`
- `omniroute_list_combos`
**A2A (untuk alur kerja agen-ke-agen):**```bash
curl http://localhost:20128/.well-known/agent.json
curl -X POST http://localhost:20128/a2a \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
5) Validate everything end-to-end (recommended)
npm run test:protocols:e2e
Suite ini memvalidasi alur klien MCP dan A2A yang sebenarnya terhadap aplikasi yang sedang berjalan.### Alternative: run from source
cp .env.example .env
npm install
PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
Untuk pengguna Void Linux, Anda dapat membuat paket asli menggunakan xbps-src. Simpan blok ini sebagai srcpkgs/omniroute/template:```bash
Template file for 'omniroute'
pkgname=omniroute version=3.4.1 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit zenobit@disroot.org" license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false
do_build() { # Determine target CPU arch for node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac
# 1) Install all deps – skip scripts (no network in do_build, native modules
# compiled separately below; better-sqlite3 is serverExternalPackage so
# Next.js does not execute it during next build)
NODE_ENV=development npm ci --ignore-scripts
# 2) Build the Next.js standalone bundle
npm run build
# 3) Copy static assets into standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Compile better-sqlite3 native binding for the target architecture.
# Use node-gyp directly so CC/CXX from xbps-src cross-toolchain are used
# without npm altering them.
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")
# 5) Place the compiled binding into the standalone bundle
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"
# 6) Remove arch-specific sharp bundles – upstream sets images.unoptimized=true
# so sharp is not used at runtime; x64 .so files would break aarch64 strip
rm -rf .next/standalone/node_modules/@img
# 7) Copy pino runtime deps omitted by Next.js static analysis:
# pino-abstract-transport – required by pino's worker thread
# split2 – dep of pino-abstract-transport
# process-warning – dep of pino itself
for _mod in pino-abstract-transport split2 process-warning; do
cp -r "node_modules/$_mod" .next/standalone/node_modules/
done
}
do_check() { npm run test:unit }
do_install() { vmkdir usr/lib/omniroute/.next
vcopy .next/standalone/. usr/lib/omniroute/.next/standalone
# Prevent removal of empty Next.js app router dirs by the post-install hook
for _d in \
.next/standalone/.next/server/app/dashboard \
.next/standalone/.next/server/app/dashboard/settings \
.next/standalone/.next/server/app/dashboard/providers; do
touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done
cat > "${WRKDIR}/omniroute" <<'EOF'
#!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export LOG_TO_FILE="${LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" }
post_install() { vlicense LICENSE }
</details>
---
## 🐳 Docker
OmniRoute tersedia sebagai image Docker publik di [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
**Lari cepat:**```bash
docker run -d \
--name omniroute \
--restart unless-stopped \
--stop-timeout 40 \
-p 20128:20128 \
-v omniroute-data:/app/data \
diegosouzapw/omniroute:latest
Dengan file lingkungan:```bash
Copy and edit .env first
cp .env.example .env
docker run -d
--name omniroute
--restart unless-stopped
--stop-timeout 40
--env-file .env
-p 20128:20128
-v omniroute-data:/app/data
diegosouzapw/omniroute:latest
**Menggunakan Docker Tulis:**```bash
# Base profile (no CLI tools)
docker compose --profile base up -d
# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
Dukungan dasbor untuk penerapan Docker kini mencakupCloudflare Quick Tunnelsekali klik di Dashboard → Endpoints. Aktifkan pertama untuk mengunduh cloudflared hanya bila diperlukan, memulai terowongan sementara ke titik akhir /v1 Anda saat ini, dan menampilkan URL https://*.trycloudflare.com/v1 yang dihasilkan langsung di bawah URL publik normal Anda.
Catatan:
- URL Terowongan Cepat bersifat sementara dan berubah setelah setiap restart.
- Terowongan Cepat tidak dipulihkan secara otomatis setelah OmniRoute atau kontainer dimulai ulang. Aktifkan kembali dari dasbor bila diperlukan.
- Penginstalan terkelola saat ini mendukung Linux, macOS, dan Windows di
x64/arm64. - Terkelola Quick Tunnels default ke transportasi HTTP/2 untuk menghindari peringatan buffer UDP QUIC yang berisik di lingkungan kontainer yang terbatas. Setel
CLOUDFLARED_PROTOCOL=quicatauautojika Anda menginginkan transportasi yang berbeda. - Gambar Docker menggabungkan akar CA sistem dan meneruskannya ke
cloudflaredyang dikelola, yang menghindari kegagalan kepercayaan TLS ketika terowongan melakukan bootstrap di dalam wadah. - SQLite berjalan dalam mode WAL.
docker stopharus dibiarkan selesai sehingga OmniRoute dapat memeriksa perubahan terbaru kembali kestorage.sqlite. - File Compose yang dibundel sudah menetapkan masa tenggang penghentian 40 detik. Jika Anda menjalankan image secara langsung, pertahankan
--stop-timeout 40(atau serupa) sehingga penghentian manual tidak menghentikan pembersihan pematian. - Setel
CLOUDFLARED_BIN=/absolute/path/to/cloudflaredjika Anda ingin OmniRoute menggunakan biner yang sudah ada alih-alih mengunduhnya.
Menggunakan Docker Compose dengan Caddy (HTTPS Auto-TLS):
OmniRoute dapat diekspos dengan aman menggunakan penyediaan SSL otomatis Caddy. Pastikan data DNS A domain Anda mengarah ke IP server Anda.```yaml services: omniroute: image: diegosouzapw/omniroute:latest container_name: omniroute restart: unless-stopped volumes: - omniroute-data:/app/data environment: - PORT=20128 - NEXT_PUBLIC_BASE_URL=https://your-domain.com
caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
volumes: omniroute-data:
| Gambar | Tandai | Ukuran | Deskripsi |
| ------------------------ | -------- | ------ | --------------------- |
| `diegosouzapw/omniroute` | `terbaru` | ~250MB | Rilis stabil terbaru |
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versi saat ini |---
## 🖥️ Desktop App — Offline & Always-On
> 🆕**BARU!**OmniRoute kini tersedia sebagai**aplikasi desktop asli**untuk Windows, macOS, dan Linux.
Jalankan OmniRoute sebagai aplikasi desktop mandiri — tanpa terminal, tanpa browser, tanpa internet untuk model lokal. Aplikasi berbasis Electron meliputi:
- 🖥️**Jendela Asli**— Jendela aplikasi khusus dengan integrasi baki sistem
- 🔄**Mulai Otomatis**— Luncurkan OmniRoute saat login sistem
- 🔔**Native Notifications**— Get alerts for quota exhaustion or provider issues
- ⚡**Instal Sekali Klik**— NSIS (Windows), DMG (macOS), AppImage (Linux)
- 🌐**Mode Offline**— Bekerja sepenuhnya offline dengan server yang dibundel### Mulai Cepat
```bash
# Development mode
npm run electron:dev
# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
System Tray
Saat diminimalkan, OmniRoute ada di baki sistem Anda dengan tindakan cepat:
- Buka dasbor
- Ubah port server
- Keluar dari aplikasi
📖 Dokumentasi lengkap: electron/README.md---
💰 Pricing at a Glance
| Tingkat | Penyedia | Biaya | Reset Kuota | Terbaik Untuk | |
|---|---|---|---|---|---|
| 💳 BERLANGGANAN | Kode Claude (Pro) | $20/bln | 5 jam + mingguan | Sudah berlangganan | |
| Kodeks (Plus/Pro) | $20-200/bln | 5 jam + mingguan | Pengguna OpenAI | ||
| CLI Gemini | GRATIS | 180K/bln + 1K/hari | Setiap orang! | ||
| Kopilot GitHub | $10-19/bln | Bulanan | Pengguna GitHub | ||
| 🔑 KUNCI API | NVIDIA NIM | GRATIS(pengembangan selamanya) | ~40 RPM | 70+ model terbuka | |
| Otak | GRATIS(1 juta tok/hari) | 60K TPM / 30 RPM | Tercepat di dunia | ||
| Bagus | GRATIS(30 RPM) | RPD 14,4K | Llama/Gemma ultra-cepat | ||
| DeepSeek V3.2 | $0,27/$1,10 per 1 juta | Tidak ada | Alasan harga/kualitas terbaik | ||
| xAI Grok-4 Cepat | $0,20/$0,50 per 1 juta🆕 | Tidak ada | Panggilan alat + tercepat, sangat rendah | ||
| xAI Grok-4 (standar) | $0,20/$1,50 per 1 juta 🆕 | Tidak ada | Penalaran andalan dari xAI | ||
| Mistral | Uji coba gratis + berbayar | Tarif terbatas | AI Eropa | ||
| BukaRouter | Bayar per penggunaan | Tidak ada | 100+ model agr. | ||
| 💰 MURAH | GLM-5 (melalui Z.AI) 🆕 | $0,5/1 juta | Setiap hari pukul 10 pagi | Output 128K, andalan terbaru | |
| GLM-4.7 | $0,6/1 juta | Setiap hari pukul 10 pagi | Cadangan anggaran | ||
| MiniMax M2.5 🆕 | masukan $0,3/1 juta | 5 jam bergulir | Penalaran + tugas agen | ||
| MiniMax M2.1 | $0,2/1 juta | 5 jam bergulir | Pilihan termurah | ||
| Kimi K2.5 (API Moonshot) 🆕 | Bayar per penggunaan | Tidak ada | Akses langsung Moonshot API | ||
| Kimi K2 | $9/bln tetap | 10 juta token/bln | Biaya yang dapat diprediksi | ||
| 🆓 GRATIS | Qoder | $0 | Tidak terbatas | 5 model tidak terbatas | |
| Qwen | $0 | Tidak terbatas | 4 model tidak terbatas | ||
| Kiro | $0 | Tidak terbatas | Claude Soneta/Haiku (Pembuat AWS) | ||
| LongCat Flash-Lite 🆕 | $0(50 juta tok/hari 🔥) | 1RPS | Kuota gratis terbesar di dunia | ||
| Penyerbukan AI 🆕 | $0(tidak perlu kunci) | 1 permintaan/15 detik | GPT-5, Claude, DeepSeek, Llama 4 | ||
| AI Pekerja Cloudflare 🆕 | $0(10K Neuron/hari) | ~150 repetisi/hari | 50+ model, keunggulan global | ||
| Scaleway AI 🆕 | $0(total 1 juta token) | Tarif terbatas | UE/GDPR, Qwen3 235B, Llama 70B | > 🆕**Model baru ditambahkan (Mar 2026):**Keluarga Grok-4 Fast seharga $0,20/$0,50/M (dibandingkan pada 1143ms — 30% lebih cepat dibandingkan Gemini 2.5 Flash), GLM-5 melalui Z.AI dengan output 128K, penalaran MiniMax M2.5, harga DeepSeek V3.2 yang diperbarui, Kimi K2.5 melalui API langsung Moonshot. |
💡 Tumpukan Kombo $0 — Penyiapan Gratis Lengkap:```
🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED Qoder (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥 Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU) Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
**Tanpa biaya. Jangan pernah berhenti melakukan pengkodean.**Konfigurasikan ini sebagai satu kombo OmniRoute dan semua fallback terjadi secara otomatis — tidak pernah ada peralihan manual.---
---
## 🆓 Free Models — What You Actually Get
> Semua model di bawah**100% gratis tanpa memerlukan kartu kredit**. OmniRoute melakukan rute otomatis di antara keduanya ketika satu kuota habis — gabungkan semuanya untuk kombo $0 yang tidak dapat dipecahkan.### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
| Model | Awalan | Batasi | Batas Tarif |
| ------------------- | ------ | ------------- | --------------------- |
| `claude-soneta-4.5` | `kr/` |**Tidak terbatas**| Tidak ada batas harian yang dilaporkan |
| `claude-haiku-4.5` | `kr/` |**Tidak terbatas**| Tidak ada batas harian yang dilaporkan |
| `claude-opus-4.6` | `kr/` |**Tidak terbatas**| Opus Terbaru melalui Kiro |### 🟢 QODER MODELS (Free PAT via qodercli)
| Model | Awalan | Batasi | Batas Tarif |
| ---- | ------ | ------------- | --------------- |
| `kimi-k2-berpikir` | `jika/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `qwen3-coder-plus` | `jika/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `pencarian mendalam-r1` | `jika/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `minimax-m2.1` | `jika/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `kimi-k2` | `jika/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
> Metode koneksi yang disarankan:**Token Akses Pribadi + `qodercli`**. Peramban OAuth adalah
> eksperimental dan dinonaktifkan secara default kecuali variabel lingkungan `QODER_OAUTH_*` dikonfigurasi.### 🟡 QWEN MODELS (Device Code Auth)
| Model | Awalan | Batasi | Batas Tarif |
| ------------------- | ------ | ------------- | ------------------- |
| `qwen3-coder-plus` | `qw/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `qwen3-coder-flash` | `qw/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `qwen3-coder-berikutnya` | `qw/` |**Tidak terbatas**| Tidak ada batas yang dilaporkan |
| `model visi` | `qw/` |**Tidak terbatas**| Multimodal (gambar) |### 🟣 GEMINI CLI (Google OAuth)
| Model | Awalan | Batasi | Batas Tarif |
| ------------------------ | ------ | --------------------------- | ------------- |
| `tinjauan-gemini-3-flash` | `gc/` |**180rb tok/bulan**+ 1rb/hari | Reset bulanan |
| `gemini-2.5-pro` | `gc/` | 180K/bulan (kolam bersama) | Kualitas tinggi |### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
| Tingkat | Batas Harian | Batas Tarif | Catatan |
| ---------- | ------------ | ----------- | ------------------------------------------------------ |
| Gratis (Pengembangan) | Tidak ada batasan token |**~40 RPM**| 70+ model; transisi ke batas tarif murni pada pertengahan tahun 2025 |
Model gratis populer: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
| Tingkat | Batas Harian | Batas Tarif | Catatan |
| ---- | ----------------- | ---------------- | ------------------------------------------- |
| Gratis |**1 juta token/hari**| 60K TPM / 30 RPM | Inferensi LLM tercepat di dunia; disetel ulang setiap hari |
Tersedia gratis: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`### 🔴 GROQ (Free API Key — console.groq.com)
| Tingkat | Batas Harian | Batas Tarif | Catatan |
| ---- | ------------- | ---------------- | ----------------------------------------- |
| Gratis |**RPD 14,4K**| 30 RPM per model | Tidak ada kartu kredit; 429 pada batas, tidak dikenakan biaya |
Tersedia gratis: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
| Model | Awalan | Kuota Gratis Harian | Catatan |
| ----------------------------- | ------ | ----------------- | ----------------------- |
| `LongCat-Flash-Lite` | `lc/` |**50 juta token**💥 | Kuota gratis terbesar yang pernah ada |
| `Obrolan-Flash-LongCat` | `lc/` | 500 ribu token | Obrolan multi-putaran |
| `Pemikiran-Flash-LongCat` | `lc/` | 500 ribu token | Penalaran / CoT |
| `Pemikiran-Flash-LongCat-2601` | `lc/` | 500 ribu token | Versi Jan 2026 |
| `LongCat-Flash-Omni-2603` | `lc/` | 500 ribu token | Multimoda |
> 100% gratis saat dalam versi beta publik. Daftar di [longcat.chat](https://longcat.chat) dengan email atau telepon. Reset setiap hari pukul 00:00 UTC.### 🟢 POLLINATIONS AI (No API Key Required) 🆕
| Model | Awalan | Batas Tarif | Penyedia Dibalik |
| ---------- | ------ | ---------- | ---- |
| `buka` | `pol/` | 1 permintaan/15 detik | GPT-5 |
| `claude` | `pol/` | 1 permintaan/15 detik | Claude Antropik |
| `gemini` | `pol/` | 1 permintaan/15 detik | Google Gemini |
| `mencari lebih dalam` | `pol/` | 1 permintaan/15 detik | Pencarian Dalam V3 |
| `lama` | `pol/` | 1 permintaan/15 detik | Meta Llama 4 Pramuka |
| `mistral` | `pol/` | 1 permintaan/15 detik | AI Mistral |
> ✨**Tanpa gesekan:**Tanpa pendaftaran, tanpa kunci API. Tambahkan penyedia Penyerbukan dengan bidang kunci kosong dan itu langsung berfungsi.### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
| Tingkat | Neuron Harian | Penggunaan Setara | Catatan |
| ---- | ------------- | --------------------------------------- | ----------------------- |
| Gratis |**10.000**| ~150 respons LLM / audio 500 detik / penyematan 15K | Keunggulan global, 50+ model |
Model gratis populer: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (audio gratis!), `@cf/qwen/qwen2.5-coder-15b-instruct`
> Membutuhkan Token API + ID Akun dari [dash.cloudflare.com](https://dash.cloudflare.com). Simpan ID Akun di pengaturan penyedia.### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
| Tingkat | Kuota Gratis | Lokasi | Catatan |
| ---- | ------------- | ------------ | ----------------------------------- |
| Gratis |**1 juta token**| 🇫🇷 Paris, UE | Tidak diperlukan kartu kredit dalam batasan |
Tersedia gratis: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
> Sesuai dengan UE/GDPR. Dapatkan kunci API di [console.scaleway.com](https://console.scaleway.com).
>**💡 Tumpukan Gratis Terbaik (11 Penyedia, $0 Selamanya):**
>
> ```
> Kiro (kr/) → Claude Soneta/Haiku TANPA BATAS
> Qoder (jika/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 TANPA BATAS
> LongCat Lite (lc/) → LongCat-Flash-Lite — 50 juta token/hari 🔥
> Penyerbukan (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — tidak perlu kunci
> Qwen (qw/) → model qwen3-coder TANPA BATAS
> Gemini (gemini/) → Gemini 2.5 Flash — 1.500 permintaan/hari gratis
> Cloudflare AI (cf/) → 50+ model — 10 ribu Neuron/hari
> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1 juta token gratis (UE)
> Groq (groq/) → Llama/Gemma — 14,4 ribu permintaan/hari sangat cepat
> NVIDIA NIM (nvidia/) → 70+ model terbuka — 40 RPM selamanya
> Otak (otak/) → Llama/Qwen tercepat di dunia — 1 juta tok/hari
> ```## 🎙️ Free Transcription Combo
> Transkripsikan audio/video apa pun seharga**$0**— Deepgram memimpin dengan $200 gratis, penggantian AssemblyAI $50, Groq Whisper sebagai cadangan darurat tanpa batas.
| Penyedia | Kredit Gratis | Model Terbaik | Batas Tarif |
| ----------------- | ---------------------- | -------------------------------------------- | ---------------------------- |
| 🟢**Deepgram**|**$200 gratis**(mendaftar) | `nova-3` — akurasi terbaik, 30+ bahasa | Tidak ada batasan RPM pada kredit gratis |
| 🔵**PerakitanAI**|**$50 gratis**(mendaftar) | `universal-3-pro` — bab, sentimen, PII | Tidak ada batasan RPM pada kredit gratis |
| 🔴**Groq**|**Gratis selamanya**| `bisikan-besar-v3` — Bisikan OpenAI | 30 RPM (tarif terbatas) |
**Kombo yang disarankan di `/dashboard/combos`:**```
Name: free-transcription
Strategy: Priority
Nodes:
[1] deepgram/nova-3 → uses $200 free first
[2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
[3] groq/whisper-large-v3 → free forever, emergency fallback
Kemudian di /dashboard/media → tabTranskripsi: unggah file audio atau video apa pun → pilih titik akhir kombo Anda → dapatkan transkripsi dalam format yang didukung.## 💡 Key Features
OmniRoute v2.0 dibangun sebagai platform operasional, bukan hanya proxy relai.### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
| Fitur | Apa Fungsinya | |
|---|---|---|
| ⚡Keluarga Cepat Grok-4 | model xAI seharga $0,20/$0,50/M — dengan benchmark 1143ms (30% lebih cepat dari Gemini 2.5 Flash) | |
| 🧠GLM-5 melalui Z.AI | Konteks keluaran 128 ribu, $0,5/1 juta — andalan terbaru dari keluarga GLM | |
| 🔮MiniMax M2.5 | Penalaran + tugas agen seharga $0,30/1 juta — peningkatan signifikan dari M2.1 | |
| 🎯alat Memanggil Bendera per Model | toolCalling: true/false per model di registri — AutoCombo melewatkan model yang tidak mendukung alat |
|
| 🌍Deteksi Niat Multibahasa | Kata kunci PT/ZH/ES/AR dalam penilaian AutoCombo — pemilihan model yang lebih baik untuk konten non-Inggris | |
| 📊Fallback Berdasarkan Tolok Ukur | Latensi p95 nyata dari penilaian kombo umpan permintaan langsung — AutoCombo belajar dari data aktual | |
| 🔁Minta Deduplikasi | Jendela dedup berbasis hash konten — aman untuk multi-agen, mencegah biaya duplikat | |
| 🔌Strategi Router Pluggable | Antarmuka RouterStrategy yang dapat diperluas — tambahkan logika perutean khusus sebagai plugin |
### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🎮Model Taman Bermain | Halaman dasbor untuk menguji model apa pun secara langsung — pemilih penyedia/model/titik akhir, Editor Monaco, streaming, batalkan, pengaturan waktu | |
| 🔏Pencocokan Sidik Jari CLI | Pengurutan header/isi per penyedia agar sesuai dengan tanda tangan CLI asli — alihkan per penyedia di Pengaturan > Keamanan.IP proxy Anda dipertahankan | |
| 🤝Dukungan ACP (Protokol Klien Agen) | Penemuan agen CLI (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 lainnya), proses spawner, titik akhir /api/acp/agents |
|
| 🤖Dasbor Agen ACP | Debug › Halaman agen — kisi 14 agen dengan status pemasangan, versi, formulir agen khusus untuk alat CLI apa pun. PenggunaOpenCodemendapatkan tombol "Unduh opencode.json" yang secara otomatis menghasilkan konfigurasi siap pakai dengan semua model yang tersedia. | |
🔧Perutean apiFormat Model Kustom |
Model khusus dengan apiFormat: "responses" sekarang dirutekan dengan benar ke penerjemah Responses API |
|
| 🏢Isolasi Ruang Kerja Codex | Beberapa ruang kerja Codex per email — OAuth memisahkan koneksi dengan benar berdasarkan ID ruang kerja | |
| 🔄Pembaruan Otomatis Elektron | Aplikasi desktop memeriksa pembaruan + instal otomatis saat restart | ### 🤖 Agent & Protocol Operations (v2.0) |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🔧Server MCP (25 alat) | Alat IDE/agen melalui 3 transport: stdio, SSE (/api/mcp/sse), HTTP yang dapat dialirkan (/api/mcp/stream). 18 inti + 3 memori + 4 alat keterampilan |
|
| 🤝Server A2A (JSON-RPC + SSE) | Eksekusi tugas agen-ke-agen dengan aliran sinkronisasi dan streaming | |
| 🧭Halaman Titik Akhir Konsolidasi | Halaman manajemen bertab dengan tab Endpoint Proxy, MCP, A2A, dan API Endpoints | |
| 🎚️Tombol Aktifkan/Nonaktifkan Layanan | Sakelar ON/OFF untuk MCP dan A2A dengan pengaturan persistensi (default: OFF) | |
| 🛰️Detak Jantung Waktu Proses MCP | Status proses nyata (pid, uptime, usia detak jantung, transportasi, mode cakupan) | |
| 📋Jejak Audit MCP | Log audit yang dapat difilter dengan keberhasilan/kegagalan dan atribusi kunci | |
| 🔐Penegakan Lingkup MCP | 10 izin cakupan terperinci untuk akses alat terkontrol | |
| 📡Manajemen Siklus Hidup Tugas A2A | Daftar/filter tugas, periksa peristiwa/artefak, batalkan tugas yang sedang berjalan | |
| 📋Penemuan Kartu Agen | /.well-known/agent.json untuk penemuan otomatis klien |
|
| 🧪Memanfaatkan Uji Protokol E2E | Alur klien MCP SDK + A2A yang sebenarnya di test:protocols:e2e |
|
| ⚙️Kontrol Operasional | Ganti kombo, terapkan profil ketahanan, setel ulang pemutus dari satu permukaan kontrol | ### 🧠 Routing & Intelligence |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🎯Pengembalian 4 Tingkat Cerdas | Rute otomatis: Berlangganan → Kunci API → Murah → Gratis | |
| 📊Pelacakan Kuota Waktu Nyata | Jumlah token langsung + setel ulang hitungan mundur per penyedia | |
| 🔄Terjemahan Format | OpenAI ↔ Claude ↔ Gemini ↔ Respons dengan konversi aman skema | |
| 👥Dukungan Multi-Akun | Banyak akun per penyedia dengan pilihan cerdas | |
| 🔄Penyegaran Token Otomatis | Token OAuth disegarkan secara otomatis dengan coba lagi | |
| 🎨Kombo Khusus | 9 strategi penyeimbangan + kontrol rantai mundur | |
| 🌐Router Wildcard | perutean dinamis penyedia/* |
|
| 🧠Memikirkan Kontrol Anggaran | Batas penalaran passthrough, otomatis, kustom, dan adaptif | |
| 🔀Model Alias | Aliasing model kustom + bawaan dan keamanan migrasi | |
| ⚡Degradasi Latar Belakang | Arahkan tugas latar belakang berprioritas rendah ke model yang lebih murah | |
| 🧪Perutean Cerdas Sadar Tugas | Pilih model secara otomatis berdasarkan jenis konten (pengkodean/visi/analisis/ringkasan) | |
| 🔄Alur Kerja Agen A2A | Orkestra FSM deterministik untuk eksekusi agen multi-langkah stateful | |
| 🔀Perutean Adaptif | Penggantian strategi dinamis berdasarkan volume token dan kompleksitas yang cepat | |
| 🎲Keberagaman Penyedia | Penilaian entropi Shannon menyeimbangkan distribusi lalu lintas kombo otomatis | |
| 💬Injeksi Perintah Sistem | Pengendalian perilaku global diterapkan secara konsisten | |
| 📄Kompatibilitas API Respons | Dukungan penuh /v1/responses untuk Codex dan alur kerja agen tingkat lanjut |
### 🎵 Multi-Modal APIs |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🖼️Pembuatan Gambar | /v1/images/generasi dengan cloud dan backend lokal |
|
| 📐Sematan | /v1/embeddings untuk saluran pencarian dan RAG |
|
| 🎤Transkripsi Audio | /v1/audio/transcriptions — 7 penyedia (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), deteksi bahasa otomatis, dukungan MP4/MP3/WAV |
|
| 🔊Teks-ke-Ucapan | /v1/audio/speech — 10 penyedia (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) dengan pesan kesalahan yang benar |
|
| 🎬Pembuatan Video | /v1/videos/generasi (Alur kerja ComfyUI + SD WebUI) |
|
| 🎵Generasi Musik | /v1/music/generasi (alur kerja ComfyUI) |
|
| 🛡️Moderasi | pemeriksaan keamanan /v1/moderations |
|
| 🔀Pemeringkatan Ulang | /v1/rerank untuk penilaian relevansi |
|
| 🔍Penelusuran Web🆕 | /v1/search — 5 penyedia (Serper, Brave, Perplexity, Exa, Tavily), 6.500+ gratis/bulan, failover otomatis, cache |
### 🛡️ Resilience, Security & Governance |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🔌Pemutus Arus | Perjalanan/pemulihan per model dengan kontrol ambang batas | |
| 🎯Model Sadar Titik Akhir | Model khusus mendeklarasikan titik akhir yang didukung + format API | |
| 🛡️Kawanan Anti Guntur | Perlindungan mutex + semaphore pada acara coba ulang/nilai | |
| 🧠Semantik + Cache Tanda Tangan | Pengurangan biaya/latensi dengan dua lapisan cache | |
| ⚡Minta Idempotensi | Jendela perlindungan duplikat | |
| 🔒Spoofing Sidik Jari TLS | Sidik jari TLS seperti browser —mengurangi deteksi bot dan penandaan akun | |
| 🔏Pencocokan Sidik Jari CLI | Cocok dengan tanda tangan permintaan CLI asli —mengurangi risiko larangan sekaligus mempertahankan IP proxy | |
| 🌐Pemfilteran IP | Kontrol daftar yang diizinkan/daftar blokir untuk penerapan yang terbuka | |
| 📊Batas Tarif yang Dapat Diedit | Batas tingkat global/penyedia yang dapat dikonfigurasi dengan persistensi | |
| 📉Degradasi yang Anggun | Fallback kemampuan multi-lapis yang melindungi operasi gateway inti | |
| 📜Konfigurasi Jejak Audit | Pelacakan perubahan berbasis diff mencegah penyimpangan operasional dengan rollback sederhana | |
| ⏳Sinkronisasi Kesehatan Penyedia | Pemantauan kedaluwarsa token proaktif memicu peringatan sebelum kegagalan otorisasi | |
| 🚪Nonaktifkan Otomatis Akun yang Diblokir | Pemutus sirkuit operasional menyegel akun token yang diblokir secara permanen secara otomatis | |
| 🔑Manajemen Kunci API + Pelingkupan | Mengamankan penerbitan/rotasi kunci dan kontrol model/penyedia | |
| 👁️Pengungkapan Kunci API Tercakup🆕 | Ikut serta dalam pemulihan kunci API melalui ALLOW_API_KEY_REVEAL |
|
🛡️**/model**yang dilindungi |
Gerbang autentikasi opsional dan penyembunyian penyedia untuk katalog model | ### 📊 Observability & Analytics |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 📝Permintaan + Pencatatan Proksi | Permintaan/tanggapan lengkap dan pencatatan proksi | |
| 📉Streaming Log Terperinci🆕 | Merekonstruksi aliran muatan SSE dengan rapi ke dalam UI | |
| 📋Dasbor Log Terpadu | Tampilan permintaan, proksi, audit, dan konsol dalam satu halaman | |
| 🔍Permintaan Telemetri | latensi p50/p95/p99 dan pelacakan permintaan | |
| 🏥Dasbor Kesehatan | Waktu aktif, status pemutus, penguncian, statistik cache | |
| 💰Pelacakan Biaya | Kontrol anggaran dan visibilitas harga per model | |
| 📈Visualisasi Analisis | Wawasan penggunaan model/penyedia dan tampilan tren | |
| 🧪Kerangka Evaluasi | Pengujian set emas dengan strategi pencocokan yang dapat dikonfigurasi | |
| 📡Diagnostik Langsung🆕 | Bypass cache semantik untuk pengujian langsung kombo yang akurat | ### ☁️ Deployment & Platform |
| Fitur | Apa Fungsinya | |
|---|---|---|
| 🌐Terapkan Di Mana Saja | Localhost, VPS, Docker, Lingkungan Cloud | |
| 🚇Terowongan Cloudflare🆕 | Integrasi Quick Tunnel sekali klik dari dasbor | |
| 🔑Pemfilteran Model Kunci API | Respons asli /v1/models difilter melalui peran konteks Pembawa yang ditetapkan | |
| ⚡Melewati Cache Cerdas | Heuristik TTL yang dapat dikonfigurasi dan kontrol pengambilan ulang paksa | |
| 🔄Cadangan/Pemulihan | Arus ekspor/impor dan pemulihan bencana | |
| 🧙Wizard Orientasi | Penyiapan terpandu yang dijalankan pertama kali | |
| 🔧Dasbor Alat CLI | Pengaturan sekali klik untuk alat pengkodean populer | |
| 🎮Model Taman Bermain | Uji penyedia/model/titik akhir apa pun dari dasbor | |
| 🔏Tolak Sidik Jari CLI | Pencocokan sidik jari per penyedia di Pengaturan > Keamanan | |
| 🌐i18n (30 bahasa) | Dasbor lengkap + dukungan bahasa dokumen dengan cakupan RTL | |
| 🧹Hapus Semua Model | Pembersihan daftar model sekali klik di detail penyedia | |
| 👁️Kontrol Bilah Sisi🆕 | Sembunyikan komponen dan integrasi dari Pengaturan Penampilan | |
| 📋Template Masalah | Templat GitHub standar untuk bug dan fitur | |
| 📂Direktori Data Khusus | Penggantian DATA_DIR untuk lokasi penyimpanan |
### Feature Deep Dive |
Smart fallback with practical cost control
Combo: "my-coding-stack"
1. cc/claude-opus-4-6
2. nvidia/llama-3.3-70b
3. glm/glm-4.7
4. if/kimi-k2-thinking
Ketika kuota, tarif, atau kesehatan gagal, OmniRoute secara otomatis berpindah ke kandidat berikutnya tanpa peralihan manual.#### Protocol management that is visible and operable
- MCP + A2A dapat ditemukan di UI dan dokumen (tidak disembunyikan)
- API status protokol mengekspos data operasional langsung (
/api/mcp/*,/api/a2a/*) - Dasbor mencakup tindakan untuk operasi hari ke-2 (pengalihan kombo, pengaturan ulang pemutus, pembatalan tugas)#### Translator + validation workflow
Area Penerjemah meliputi:
-Taman Bermain: meminta pemeriksaan transformasi -Penguji Obrolan: permintaan/respons penuh pulang pergi -Test Bench: beberapa kasus sekaligus -Monitor Langsung: tampilan lalu lintas waktu nyata
Ditambah validasi protokol dengan klien nyata melalui npm run test:protocols:e2e.
📖MCP Server README— Referensi alat, konfigurasi IDE, dan contoh klien
📖A2A Server README— Keterampilan, metode JSON-RPC, streaming, dan siklus hidup tugas## 🧪 Evaluations (Evals)
OmniRoute menyertakan kerangka evaluasi bawaan untuk menguji kualitas respons LLM terhadap rangkaian emas. Akses melaluiAnalytics → Evalsdi dasbor.### Built-in Golden Set
"OmniRoute Golden Set" yang dimuat sebelumnya berisi kasus uji untuk:
- Salam, matematika, geografi, pembuatan kode
- Kepatuhan format JSON, terjemahan, pembuatan penurunan harga
- Penolakan keamanan (konten berbahaya), penghitungan, logika boolean### Evaluation Strategies
| Strategi | Deskripsi | Contoh | |
|---|---|---|---|
tepat |
Output harus sama persis | "4" |
|
berisi |
Output harus berisi substring (tidak peka huruf besar-kecil) | "Paris" |
|
regex |
Output harus sesuai dengan pola regex | "1.*2.*3" |
|
kebiasaan |
Fungsi JS khusus mengembalikan benar/salah | (keluaran) => keluaran.panjang > 10 |
--- |
📖 Setup Guide
Protocol Setup (MCP + A2A)
🧩 Penyiapan MCP (Protokol Konteks Model)Mulai transportasi MCP dalam mode stdio:```bash omniroute --mcp
Alur validasi yang disarankan:
1. Hubungkan klien MCP Anda melalui stdio.
2. Jalankan `omniroute_get_health`.
3. Jalankan `omniroute_list_combos`.
4. Buka `/dashboard/mcp` untuk mengonfirmasi detak jantung, aktivitas, dan audit.
API yang berguna untuk otomatisasi:
- `DAPATKAN /api/mcp/status`
- `DAPATKAN /api/mcp/alat`
- `DAPATKAN /api/mcp/audit`
- `DAPATKAN /api/mcp/audit/statistik`</details>
<detail>
<ringkasan><b>🤝 Penyiapan A2A (Agent2Agent)</b></summary>
Temukan agennya:```bash
curl http://localhost:20128/.well-known/agent.json
Kirim tugas:```bash
curl -X POST http://localhost:20128/a2a
-H 'content-type: application/json'
-d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
Kelola siklus hidup:
- `DAPATKAN /api/a2a/status`
- `DAPATKAN /api/a2a/tugas`
- `DAPATKAN /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/batal`
UI Operasional:
- `/dashboard/a2a` untuk observasi tugas/status/aliran dan tindakan asap</details>
<detail>
<summary><b>🧪 Validasi protokol menyeluruh</b></summary>
Validasi kedua protokol dengan klien nyata:```bash
npm run test:protocols:e2e
Ini memverifikasi:
- Koneksi/daftar/panggilan klien MCP SDK
- Penemuan A2A/kirim/aliran/dapatkan/batalkan
- Periksa silang data dalam audit MCP dan API manajemen tugas A2A
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking
Models:
cc/claude-opus-4-6
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
**Kiat Pro:**Gunakan Opus untuk tugas kompleks, Soneta untuk kecepatan. OmniRoute melacak kuota per model!### OpenAI Codex (Plus/Pro)
Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset
Models:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
Codex Account Limit Management (5h + Weekly)
Setiap akun Codex sekarang memiliki kebijakan yang dapat diubah di Dasbor -> Penyedia:
5h(ON/OFF): menerapkan kebijakan ambang jendela 5 jam.Mingguan(ON/OFF): menerapkan kebijakan ambang jendela mingguan.- Perilaku ambang batas: ketika jendela yang diaktifkan mencapai >=90% penggunaan, akun tersebut dilewati.
- Perilaku rotasi: OmniRoute merutekan ke akun Codex berikutnya yang memenuhi syarat secara otomatis.
- Perilaku reset: ketika waktu
resetAtpenyedia telah berlalu, akun akan memenuhi syarat lagi secara otomatis.
Skenario:
5h ON+Weekly ON: akun dilewati ketika salah satu jendela mencapai ambang batas.5h OFF+Weekly ON: hanya penggunaan mingguan yang dapat memblokir akun.5h ON+Weekly OFF: hanya penggunaan 5 jam yang dapat memblokir akun.resetAtlolos: akun masuk kembali ke rotasi secara otomatis (tidak ada pengaktifan ulang secara manual).### Gemini CLI (FREE 180K/month!)
Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
→ 180K completions/month + 1K/day
Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
**Nilai Terbaik:**Tingkat gratis yang sangat besar! Gunakan ini sebelum tingkatan berbayar.### GitHub Copilot
Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)
Models:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3.1-pro-preview
- Daftar: build.nvidia.com
- Dapatkan kunci API gratis (termasuk 1000 kredit inferensi)
- Dasbor → Tambah Penyedia → NVIDIA NIM:
- Kunci API:
nvapi-kunci-Anda
- Kunci API:
Model:nvidia/llama-3.3-70b-instruct, nvidia/mistral-7b-instruct, dan 50+ lainnya
**Kiat Pro:**API yang kompatibel dengan OpenAI — bekerja secara lancar dengan terjemahan format OmniRoute!### DeepSeek
- Daftar: platform.deepseek.com
- Dapatkan kunci API
- Dasbor → Tambah Penyedia → DeepSeek
Model:deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)
- Daftar: console.groq.com
- Dapatkan kunci API (termasuk tingkat gratis)
- Dasbor → Tambah Penyedia → Groq
Model:groq/llama-3.3-70b, groq/mixtral-8x7b
**Kiat Pro:**Inferensi ultra-cepat — terbaik untuk pengkodean waktu nyata!### OpenRouter (100+ Models)
- Daftar: openrouter.ai
- Dapatkan kunci API
- Dasbor → Tambah Penyedia → OpenRouter
**Model:**Akses 100+ model dari semua penyedia utama melalui satu kunci API.
Perilaku dasbor:Model OpenRouter dikelola dariModel yang Tersedia. Penambahan manual, impor, dan sinkronisasi otomatis semuanya memperbarui daftar yang sama.
- Daftar: Zhipu AI
- Dapatkan kunci API dari Coding Plan
- Dasbor → Tambahkan Kunci API:
- Penyedia:
glm - Kunci API:
kunci Anda
- Penyedia:
Gunakan:glm/glm-4.7
**Tips Pro:**Paket Coding menawarkan 3× kuota dengan biaya 1/7! Reset setiap hari pukul 10.00.### MiniMax M2.1 (5h reset, $0.20/1M)
- Daftar: MiniMax
- Dapatkan kunci API
- Dasbor → Tambahkan Kunci API
Gunakan:minimax/MiniMax-M2.1
**Kiat Pro:**Opsi termurah untuk konteks panjang (1 juta token)!### Kimi K2 ($9/month flat)
- Berlangganan: Moonshot AI
- Dapatkan kunci API
- Dasbor → Tambahkan Kunci API
Gunakan:kimi/kimi-terbaru
**Kiat Pro:**Memperbaiki $9/bulan untuk 10 juta token = biaya efektif $0,90/1 juta!
Dashboard → Connect Qoder
→ Qoder OAuth login
→ Unlimited usage
Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
if/minimax-m2
if/deepseek-r1
Qwen (4 FREE models via Device Code)
Dashboard → Connect Qwen
→ Device code authorization
→ Unlimited usage
Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
Kiro (Claude FREE)
Dashboard → Connect Kiro
→ AWS Builder ID or Google/GitHub
→ Unlimited usage
Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. cc/claude-opus-4-6 (Subscription primary)
2. glm/glm-4.7 (Cheap backup, $0.6/1M)
3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
Use in CLI: premium-coding
Example 2: Free-Only (Zero Cost)
Name: free-combo
Models:
1. gc/gemini-3-flash-preview (180K free/month)
2. if/kimi-k2-thinking (unlimited)
3. qw/qwen3-coder-plus (unlimited)
Cost: $0 forever!
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
Claude Code
Gunakan halamanCLI Toolsdi dasbor untuk konfigurasi sekali klik, atau edit ~/.claude/settings.json secara manual.### Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
Opsi 1 — Dasbor (disarankan):``` Dashboard → CLI Tools → OpenClaw → Select Model → Apply
**Opsi 2 — Manual:**Edit `~/.openclaw/openclaw.json`:```json
{
"models": {
"providers": {
"omniroute": {
"baseUrl": "http://127.0.0.1:20128/v1",
"apiKey": "sk_omniroute",
"api": "openai-completions"
}
}
}
}
**Catatan:**OpenClaw hanya berfungsi dengan OmniRoute lokal. Gunakan
127.0.0.1alih-alihlocalhostuntuk menghindari masalah resolusi IPv6.### Cline / Continue / RooCode
Settings → API Configuration:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
OpenCode
**Langkah 1:**Tambahkan OmniRoute sebagai penyedia khusus:```bash opencode /connect
Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
**Langkah 2:**Buat/edit `opencode.json` di root proyek Anda:```json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"omniroute": {
"npm": "@ai-sdk/openai-compatible",
"name": "OmniRoute",
"options": {
"baseURL": "http://localhost:20128/v1"
},
"models": {
"cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
"gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
"if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
}
}
}
}
**Langkah 3:**Pilih model di OpenCode:```bash /models
Select any OmniRoute model from the list
>**Tips:**Tambahkan model apa pun yang tersedia di titik akhir `/v1/models` OmniRoute Anda ke bagian `models`. Gunakan format `penyedia/model-id` dari dasbor OmniRoute Anda.</details>
---
## Pemecahan Masalah
<detail>
<summary><b>Klik untuk memperluas panduan pemecahan masalah</b></summary>
**"Model bahasa tidak memberikan pesan"**
- Kuota penyedia habis → Periksa dashboard pelacak kuota
- Solusi: Gunakan combo fallback atau beralih ke tier yang lebih murah
**Pembatasan tarif**
- Kuota berlangganan habis → Penggantian ke GLM/MiniMax
- Tambahkan kombo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
**Token OAuth kedaluwarsa**
- Disegarkan secara otomatis oleh OmniRoute
- Jika masalah terus berlanjut: Dasbor → Penyedia → Sambungkan kembali
**Biaya tinggi**
- Periksa statistik penggunaan di Dashboard → Biaya
- Ganti model utama ke GLM/MiniMax
- Gunakan tingkat gratis (Gemini CLI, Qoder) untuk tugas-tugas yang tidak penting
**Port dasbor/API salah**
- `PORT` adalah port dasar kanonik (dan port API secara default)
- `API_PORT` hanya menimpa pendengar API yang kompatibel dengan OpenAI
- `DASHBOARD_PORT` hanya menimpa dashboard/pendengar Next.js
- Setel `NEXT_PUBLIC_BASE_URL` ke dasbor/URL publik Anda (untuk panggilan balik OAuth)
**Kesalahan sinkronisasi cloud**
- Verifikasikan `BASE_URL` menunjuk ke instance Anda yang sedang berjalan
- Verifikasikan `CLOUD_URL` menunjuk ke titik akhir cloud yang Anda harapkan
- Jaga agar nilai `NEXT_PUBLIC_*` tetap selaras dengan nilai sisi server
**Login pertama tidak berfungsi**
- Centang `INITIAL_PASSWORD` di `.env`
- Jika tidak disetel, kata sandi cadangan adalah `123456`
**Tidak ada log permintaan**
- Artefak permintaan ditulis ke `DATA_DIR/call_logs/` sebagai satu file JSON per permintaan
- Aktifkan pengambilan saluran pipa dari Dasbor → Log → Log Permintaan jika Anda memerlukan muatan per tahap yang terperinci
- Setel `APP_LOG_TO_FILE=true` jika Anda juga ingin log konsol aplikasi di `logs/application/app.log`
- Sesuaikan `APP_LOG_MAX_FILE_SIZE`, `APP_LOG_RETENTION_DAYS`, `APP_LOG_MAX_FILES`, dan `CALL_LOG_MAX_ENTRIES` sesuai kebutuhan
**Tes koneksi menunjukkan "Tidak valid" untuk penyedia yang kompatibel dengan OpenAI**
- Banyak penyedia tidak mengekspos titik akhir `/models`
- OmniRoute v1.0.6+ menyertakan validasi fallback melalui penyelesaian obrolan
- Pastikan URL dasar menyertakan akhiran `/v1`### 🔐 OAuth on a Remote Server
<a nama="oauth-on-a-remote-server"></a>
<a name="oauth-em-servidor-remoto"></a>
>**⚠️ Penting bagi pengguna yang menjalankan OmniRoute di VPS, Docker, atau server jarak jauh mana pun**#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
Penyedia**Antigravitasi**dan**Gemini CLI**menggunakan**Google OAuth 2.0**. Google mewajibkan `redirect_uri` di alur OAuth agar sama persis dengan salah satu URI yang telah didaftarkan sebelumnya di Google Cloud Console aplikasi.
Kredensial OAuth yang disertakan dalam OmniRoute didaftarkan**hanya untuk `localhost`**. Saat Anda mengakses OmniRoute di server jarak jauh (misalnya `https://omniroute.myserver.com`), Google menolak autentikasi dengan:```
Error 400: redirect_uri_mismatch
Solution: Configure your own OAuth credentials
Anda perlu membuatID Klien OAuth 2.0di Google Cloud Console dengan URI server Anda.#### Step-by-step
1. Buka Google Cloud Console
Buka: https://console.cloud.google.com/apis/credentials
2. Buat ID Klien OAuth 2.0 baru
- Klik**"+ Buat Kredensial"→"ID klien OAuth"**
- Jenis aplikasi:"Aplikasi web"
- Nama: apa pun yang Anda suka (misalnya
OmniRoute Remote)
3. Tambahkan URI Pengalihan Resmi
Di kolom**"URI pengalihan resmi"**, tambahkan:``` https://your-server.com/callback
> Ganti `server-Anda.com` dengan domain atau IP server Anda (sertakan port jika diperlukan, misalnya `http://45.33.32.156:20128/callback`).
**4. Simpan dan salin kredensial**
Setelah pembuatan, Google akan menampilkan**ID Klien**dan**Rahasia Klien**.
**5. Tetapkan variabel lingkungan**
Di `.env` Anda (atau variabel lingkungan Docker):```bash
# For Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
# For Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
6. Mulai ulang OmniRoute```bash
npm:
npm run dev
Docker:
docker restart omniroute
**7. Coba sambungkan lagi**
Dasbor → Penyedia → Antigravitasi (atau Gemini CLI) → OAuth
Google sekarang akan mengalihkan dengan benar ke `https://server-anda.com/callback`.---
#### Temporary workaround (without custom credentials)
Jika Anda tidak ingin menyiapkan kredensial Anda sendiri saat ini, Anda masih dapat menggunakan**alur URL manual**:
1. OmniRoute membuka URL otorisasi Google
2. Setelah otorisasi, Google mencoba mengalihkan ke `localhost` (yang gagal di server jauh)
3.**Salin URL lengkap**dari bilah alamat browser Anda (meskipun halaman tidak dimuat)
4. Tempelkan URL tersebut ke bidang yang ditampilkan di modal koneksi OmniRoute
5. Klik**"Hubungkan"**
> Ini berfungsi karena kode otorisasi di URL valid terlepas dari apakah halaman pengalihan dimuat.---
<detail>
<ringkasan><b>🇧🇷 Versão em Português</b></summary>#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
Pembuktiannya**Antigravitasi**dan**Gemini CLI**digunakan**Google OAuth 2.0**untuk autentikasi. Google meminta `redirect_uri` menggunakan OAuth yang terus berubah, jadi**exatamente**adalah URI yang sudah ada sebelumnya di Google Cloud Console yang dapat diterapkan.
Karena kredensial OAuth yang diberikan pada OmniRoute adalah kadastradas**apenas untuk `localhost`**. Ketika Anda mengakses OmniRoute dari server jarak jauh (misal: `https://omniroute.meuservidor.com`), atau Google meminta autenticação com:```
Error 400: redirect_uri_mismatch
Solução: Configure suas próprias credenciais OAuth
Anda perlu membuatID Klien OAuth 2.0di Google Cloud Console dengan URI di server Anda.#### Passo a passo
1. Mengakses Google Cloud Console
Abra: https://console.cloud.google.com/apis/credentials
2. Inilah ID Klien OAuth 2.0 yang baru
- Klik pada**"+ Buat Kredensial"→"ID klien OAuth"**
- Tip aplikasi:"Aplikasi web"
- Nama: escolha qualquer nome (misal:
OmniRoute Remote)
3. Tambahan sebagai URI Pengalihan Resmi
Selain itu**"URI pengalihan resmi"**, tambahan:``` https://seu-servidor.com/callback
> Pengganti `seu-servidor.com` ke alamat IP atau alamat IP server Anda (termasuk port yang diperlukan, misal: `http://45.33.32.156:20128/callback`).
**4. Salep dan salin sebagai kredensial**
Kemudian, Google menampilkan**ID Klien**dan**Rahasia Klien**.
**5. Konfigurasikan sebagai variáveis de ambiente**
Tidak ada `.env` (atau berbagai lingkungan di Docker):```bash
# Para Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
# Para Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
6. Memulai kembali OmniRoute```bash
Se usando npm:
npm run dev
Se usando Docker:
docker restart omniroute
**7. Mari kita sambungkan lagi**
Dasbor → Penyedia → Antigravitasi (atau Gemini CLI) → OAuth
Sekarang Google dialihkan ke `https://seu-servidor.com/callback` dan autentikasi berfungsi.---
#### Workaround temporário (sem configurar credenciais próprias)
Jika Anda tidak ingin membuat kredensial pribadi sekarang, Anda mungkin dapat menggunakan fluks**panduan URL**:
1. O OmniRoute membuka URL autoriza dari Google
2. Setelah Anda autorizar, Google mengarahkan pengalihan ke `localhost` (yang gagal pada server jarak jauh)
3.**Salin URL lengkap**dari bilah akhir browser Anda (meskipun halaman tidak dimuat)
4. Gunakan URL ini karena tidak ada modal koneksi ke OmniRoute
5. Klik pada**"Hubungkan"**
> Solusi ini berfungsi karena kode otorisasi pada URL valid secara independen untuk mengarahkan ulang ke akun atau tidak.</details>
---
</details>
## 🛠️ Tech Stack
<detail>
<summary><b>Klik untuk memperluas detail tumpukan teknologi</b></summary>
-**Runtime**: Node.js 18–22 LTS (⚠️ Node.js 24+**tidak didukung**— biner asli `better-sqlite3` tidak kompatibel)
-**Bahasa**: TypeScript 5.9 —**100% TypeScript**di `src/` dan `open-sse/` (tidak ada `any` di modul inti sejak v2.0)
-**Kerangka Kerja**: Next.js 16 + React 19 + Tailwind CSS 4
-**Database**: LowDB (JSON) + SQLite (status domain + log proksi + audit MCP + keputusan perutean)
-**Skema**: Zod (validasi I/O alat MCP, kontrak API)
-**Protokol**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
-**Streaming**: Peristiwa Terkirim Server (SSE)
-**Auth**: OAuth 2.0 (PKCE) + JWT + Kunci API + Otorisasi Cakupan MCP
-**Pengujian**: Pelari pengujian Node.js + Vitest (900+ pengujian termasuk unit, integrasi, E2E)
-**CI/CD**: Tindakan GitHub (publikasi npm otomatis + Docker Hub saat rilis)
-**Situs Web**: [omniroute.online](https://omniroute.online)
-**Paket**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-**Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-**Ketahanan**: Pemutus arus, backoff eksponensial, kawanan anti-thundering, spoofing TLS, penyembuhan diri kombo otomatis</details>
---
## Dokumentasi
| Dokumen | Deskripsi |
| ---------------------------------------------- | --------------------------------------------------- |
| [Panduan Pengguna](docs/USER_GUIDE.md) | Penyedia, kombo, integrasi CLI, penerapan |
| [Referensi API](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
| [Server MCP](open-sse/mcp-server/README.md) | 16 alat MCP, konfigurasi IDE, klien Python/TS/Go |
| [Server A2A](src/lib/a2a/README.md) | Protokol JSON-RPC 2.0, keterampilan, streaming, manajemen tugas |
| [Mesin Kombo Otomatis](docs/auto-combo.md) | Penilaian 6 faktor, paket mode, penyembuhan diri |
| [Pemecahan Masalah](docs/TROUBLESHOOTING.md) | Masalah umum dan solusinya |
| [Arsitektur](docs/ARCHITECTURE.md) | Arsitektur sistem dan internal |
| [Berkontribusi](BERKONTRIBUSI.md) | Pengaturan dan pedoman pengembangan |
| [Spesifikasi OpenAPI](docs/openapi.yaml) | Spesifikasi OpenAPI 3.0 |
| [Kebijakan Keamanan](SECURITY.md) | Pelaporan kerentanan dan praktik keamanan |
| [Penerapan VM](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: VM + nginx + Pengaturan Cloudflare |
| [Galeri Fitur](docs/FEATURES.md) | Tur dasbor visual dengan tangkapan layar |
| [Daftar Periksa Rilis](docs/RELEASE_CHECKLIST.md) | Langkah validasi pra-rilis |---
## 🗺️ Roadmap
OmniRoute memiliki**210+ fitur yang direncanakan**di berbagai fase pengembangan. Berikut adalah bidang-bidang utamanya:
| Kategori | Fitur yang Direncanakan | Sorotan |
| ----------------------------- | ---------------- | ------------------------------------------------------------------------ |
| 🧠**Perutean & Kecerdasan**| 25+ | Perutean latensi terendah, perutean berbasis tag, preflight kuota, pemilihan akun P2C |
| 🔒**Keamanan & Kepatuhan**| 20+ | Pengerasan SSRF, penyelubungan kredensial, batas tarif per titik akhir, pelingkupan kunci manajemen |
| 📊**Kemampuan Observasi**| 15+ | Integrasi OpenTelemetry, pemantauan kuota waktu nyata, pelacakan biaya per model |
| 🔄**Integrasi Penyedia**| 20+ | Registri model dinamis, cooldown penyedia, Codex multi-akun, penguraian kuota Salinan |
| ⚡**Kinerja**| 15+ | Lapisan cache ganda, cache cepat, cache respons, streaming keepalive, API batch |
| 🌐**Ekosistem**| 10+ | WebSocket API, konfigurasi hot-reload, penyimpanan konfigurasi terdistribusi, mode komersial |### 🔜 Coming Soon
- 🔗**Integrasi OpenCode**— Dukungan penyedia asli untuk IDE pengkodean AI OpenCode
- 🔗**Integrasi TRAE**— Dukungan penuh untuk kerangka pengembangan AI TRAE
- 📦**Batch API**— Pemrosesan batch asinkron untuk permintaan massal
- 🎯**Perutean Berbasis Tag**— Merutekan permintaan berdasarkan tag dan metadata khusus
- 💰**Strategi Biaya Terendah**— Secara otomatis memilih penyedia termurah yang tersedia
> 📝 Spesifikasi fitur lengkap tersedia di [`docs/new-features/`](docs/new-features/) (217 spesifikasi detail)---
## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
### How to Contribute
1. Cabangkan repositori
2. Buat cabang fitur Anda (`git checkout -b feature/amazing-feature`)
3. Komit perubahan Anda (`git commit -m 'Tambahkan fitur luar biasa'`)
4. Dorong ke cabang (`fitur asal git push/fitur luar biasa`)
5. Buka Permintaan Tarik
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk pedoman rinci.### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
gh release create v2.0.0 --title "v2.0.0" --generate-notes
📊 Star History
Stargazers over time
🙏 Acknowledgments
Terima kasih khusus kepada**9routerolehdecolua**— proyek asli yang menginspirasi fork ini. OmniRoute builds upon that incredible foundation with additional features, multi-modal APIs, and a full TypeScript rewrite.
Terima kasih khusus kepada**CLIProxyAPI**— implementasi Go asli yang menginspirasi port JavaScript ini.---
Lisensi
Lisensi MIT - lihat LISENSI untuk detailnya.---





