Files
OmniRoute/docs/i18n/ms

🚀 OmniRoute — The Free AI Gateway (Bahasa Melayu)

🌐 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+ pembekal, masa henti sifar. Kini denganPelayan MCP (25 alatan),Protokol A2A,Sistem Memori/Kemahiran&Aplikasi Desktop Elektron.

Penyelesaian Sembang • Pembenaman • Penjanaan Imej • Video • Muzik • Audio • Kedudukan Semula •Carian Web• Pelayan MCP • Protokol A2A • 100% TypeScript---

npm version Docker Hub

NPM Downloads NPM Downloads

NPM Downloads Docker Pulls GitHub Downloads (all assets, all releases)

stars open issues license last commit total contributions code size pr closed tag github streak followers fork watch

License Website WhatsApp

🌐 Tapak web🚀 Mula Pantas💡 Ciri📖 Dokumen • [💰 Harga](#-harga-sepintas lalu) • 💬 WhatsApp

🌐Terdapat dalam:🇺🇸 Bahasa Inggeris | 🇧🇷 Português (Brasil) | 🇪🇸 Español | 🇫🇷 Français | 🇮🇹 Italiano | 🇷🇺 Русский | 🇨🇳 中文 (简体) | 🇩🇪 Deutsch | 🇮🇳 हिन्दी | 🇹🇭 ไทย | 🇺🇦 Українська | 🇸🇦 العربية | 🇯🇵 日本語 | 🇻🇳 Tiếng Việt | 🇧🇬 Български | 🇩🇰 Dansk | 🇫🇮 Suomi | 🇮🇱 עברית | 🇭🇺 Magyar | 🇮🇩 Bahasa Indonesia | 🇰🇷 한국어 | 🇲🇾 Bahasa Melayu | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇵🇹 Português (Portugal) | 🇷🇴 Română | 🇵🇱 Polski | 🇸🇰 Slovenčina | 🇸🇪 Svenska | 🇵🇭 Filipina | 🇨🇿 Čeština---

🖼️ Main Dashboard

OmniRoute Dashboard

📸 Dashboard Preview

Klik untuk melihat tangkapan skrin papan pemuka
Halaman Tangkapan skrin
Pembekal Pembekal
Kombo Kombo
Analisis Analytics
Kesihatan Kesihatan
Penterjemah Penterjemah
Tetapan Tetapan
Alat CLI Alat CLI
Log Penggunaan Penggunaan
Titik tamat Endpoints

🤖 Free AI Provider for your favorite coding agents

Sambungkan mana-mana alat IDE atau CLI berkuasa AI melalui OmniRoute — get laluan API percuma untuk pengekodan tanpa had.

OpenClaw
OpenClaw

205K NanoBot
NanoBot

20.9K PicoClaw
PicoClaw

14.6K ZeroClaw
ZeroClaw

9.9K IronClaw
IronClaw

2.1K OpenCode
Kod Terbuka

106K Codex CLI
Codex CLI

60.8K Kod Claude
Kod Claude

67.3K Gemini CLI
Gemini CLI

94.7K Kod Kilo
Kod Kilo

15.5K

📡 Semua ejen menyambung melalui http://localhost:20128/v1 atau http://cloud.omniroute.online/v1 — satu konfigurasi, model tanpa had dan kuota---

🤔 Why OmniRoute?

Berhenti membazir wang dan mencapai had:

  • Kuota langganan tamat tempoh tidak digunakan setiap bulan
  • Had kadar menghalang anda pertengahan pengekodan
  • API Mahal ($20-50/bulan setiap pembekal)
  • Penukaran manual antara pembekal

OmniRoute menyelesaikan ini:

  • Maksimumkan langganan- Jejaki kuota, gunakan setiap bit sebelum ditetapkan semula
  • Auto sandaran- Langganan → Kunci API → Murah → Percuma, masa henti sifar
  • Berbilang akaun- Round-robin antara akaun bagi setiap pembekal
  • Universal- Berfungsi dengan Kod Claude, Codex, Gemini CLI, Kursor, Cline, OpenClaw, sebarang alat CLI---

📧 Support

💬Sertai komuniti kami!Kumpulan WhatsApp — Dapatkan bantuan, kongsi petua dan kekal kemas kini.

-Tapak web: omniroute.online -GitHub: github.com/diegosouzapw/OmniRoute -Isu: github.com/diegosouzapw/OmniRoute/issues -WhatsApp: Kumpulan Komuniti -Menyumbang: Lihat CONTRIBUTING.md, buka PR atau pilih isu pertama yang baik -Projek Asal: 9router by decolua### 🐛 Reporting a Bug?

Apabila membuka isu, sila jalankan arahan maklumat sistem dan lampirkan fail yang dijana:```bash npm run system-info


Ini menghasilkan `system-info.txt` dengan versi Node.js anda, versi OmniRoute, butiran OS, alat CLI yang dipasang (qoder, gemini, claude, codex, antigravity, droid, dll.), status Docker/PM2 dan pakej sistem — semua yang kami perlukan untuk mengeluarkan semula isu anda dengan cepat. Lampirkan fail terus pada isu 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 pembangun yang menggunakan alatan AI menghadapi masalah ini setiap hari.**OmniRoute dibina untuk menyelesaikan kesemuanya — daripada lebihan kos kepada blok serantau, daripada aliran OAuth yang rosak kepada operasi protokol dan kebolehmerhatian perusahaan.

<butiran>
<summary><b>💸 1. "Saya membayar untuk langganan yang mahal tetapi masih terganggu oleh had"</b></summary>

Pembangun membayar $20200/bulan untuk Claude Pro, Codex Pro atau GitHub Copilot. Walaupun membayar, kuota mempunyai siling — 5j penggunaan, had mingguan atau had kadar seminit. Sesi pertengahan pengekodan, pembekal berhenti bertindak balas dan pembangun kehilangan aliran dan produktiviti.

**Cara OmniRoute menyelesaikannya:**

-**Smart 4-Tier Fallback**— Jika kuota langganan habis, diubah hala secara automatik ke API Key → Murah → Percuma tanpa campur tangan manual
-**Penjejakan Had Pembekal**— Syot kilat kuota cache dimuat semula pada jadual sebelah pelayan (lalai `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`) dengan muat semula manual tersedia dalam UI
-**Sokongan Berbilang Akaun**— Berbilang akaun bagi setiap pembekal dengan auto round-robin — apabila satu kehabisan, beralih kepada yang seterusnya
-**Kombo Tersuai**— Rantaian sandaran boleh disesuaikan dengan 9 strategi pengimbangan (keutamaan, wajaran, isikan dahulu, pusingan bulat, P2C, rawak, paling kurang digunakan, dioptimumkan kos, rawak ketat)
-**Kuota Perniagaan Codex**— Pemantauan kuota ruang kerja Perniagaan/Pasukan terus dalam papan pemuka</details>

<butiran>
<summary><b>🔌 2. "Saya perlu menggunakan berbilang penyedia tetapi setiap satu mempunyai API yang berbeza"</b></summary>

OpenAI menggunakan satu format, Claude (Anthropic) menggunakan satu lagi, Gemini satu lagi. Jika pembangun ingin menguji model daripada pembekal yang berbeza atau sandaran antara mereka, mereka perlu mengkonfigurasi semula SDK, menukar titik akhir, menangani format yang tidak serasi. Pembekal tersuai (FriendLI, NIM) mempunyai titik akhir model bukan standard.

**Cara OmniRoute menyelesaikannya:**

-**Titik Akhir Disatukan**— Satu `http://localhost:20128/v1` berfungsi sebagai proksi untuk kesemua 60+ pembekal
-**Format Terjemahan**— Automatik dan telus: OpenAI ↔ Claude ↔ Gemini ↔ Responses API
-**Pembersihan Tindak Balas**— Menghapuskan medan bukan standard (`x_groq`, `penggunaan_pecahan`, `peringkat_perkhidmatan`) yang memecahkan OpenAI SDK v1.83+
-**Penormalan Peranan**— Menukar `pembangun` → `sistem` untuk penyedia bukan OpenAI; `sistem` → `pengguna` untuk GLM/ERNIE
-**Think Tag Extraction**— Mengekstrak `<think>` blok daripada model seperti DeepSeek R1 ke dalam `reasoning_content` piawai
-**Output Berstruktur untuk Gemini**— `json_schema` → `responseMimeType`/`responseSchema` penukaran automatik
-**`strim` lalai kepada `false`**— Menjajarkan dengan spesifikasi OpenAI, mengelakkan SSE yang tidak dijangka dalam Python/Rust/Go SDK</details>

<butiran>
<summary><b>🌐 3. "Pembekal AI saya menyekat wilayah/negara saya"</b></summary>

Penyedia seperti OpenAI/Codex menyekat akses daripada kawasan geografi tertentu. Pengguna mendapat ralat seperti `wilayah_negara_negara_tidak disokong` semasa sambungan OAuth dan API. Ini amat mengecewakan bagi pemaju dari negara membangun.

**Cara OmniRoute menyelesaikannya:**

-**Konfigurasi Proksi 3 Tahap**— Proksi boleh dikonfigurasikan pada 3 peringkat: global (semua trafik), setiap pembekal (satu pembekal sahaja) dan setiap sambungan/kunci
-**Lencana Proksi Berkod Warna**— Penunjuk visual: 🟢 proksi global, 🟡 proksi pembekal, 🔵 proksi sambungan, sentiasa menunjukkan IP
-**Pertukaran Token OAuth Melalui Proksi**— Aliran OAuth juga melalui proksi, menyelesaikan `wilayah_wilayah_negara_yang tidak disokong`
-**Ujian Sambungan melalui Proksi**— Ujian sambungan menggunakan proksi yang dikonfigurasikan (tiada lagi pintasan langsung)
-**Sokongan SOCKS5**— Sokongan proksi SOCKS5 penuh untuk penghalaan keluar
-**TLS Fingerprint Spoofing**— Cap jari TLS seperti pelayar melalui `wreq-js` untuk memintas pengesanan bot
-**🔏 Padanan Cap Jari CLI**— Menyusun semula pengepala dan medan badan agar sepadan dengan tandatangan binari CLI asli, secara drastik mengurangkan risiko pembenderaan akaun. IP proksi dikekalkan — anda mendapat kedua-dua penyamaran**dan**IP secara serentak</details>

<butiran>
<summary><b>🆓 4. "Saya mahu menggunakan AI untuk pengekodan tetapi saya tidak mempunyai wang"</b></summary>

Tidak semua orang boleh membayar $20200/bulan untuk langganan AI. Pelajar, pembangun dari negara baru muncul, penggemar dan pekerja bebas memerlukan akses kepada model berkualiti pada kos sifar.

**Cara OmniRoute menyelesaikannya:**

-**Pembekal Peringkat Percuma Terbina dalam**— Sokongan asli untuk 100% penyedia percuma: Qoder (5 model tanpa had melalui OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 model tanpa had: qwender3-wenlash3-coplus qwen3-coder-next, vision-model), Kiro (Claude + AWS Builder ID secara percuma), Gemini CLI (180K token/bulan percuma)
-**Ollama Cloud**— Model Ollama dihoskan awan di `api.ollama.com` dengan peringkat "Penggunaan ringan" percuma; gunakan awalan `ollamacloud/<model>`
-**Kombo Percuma-Sahaja**— Rantaian `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/bulan dengan masa henti sifar
-**Akses Percuma NVIDIA NIM**— ~40 RPM dev-forever akses percuma kepada 70+ model di build.nvidia.com (peralihan daripada kredit kepada had kadar tulen)
-**Strategi Dioptimumkan Kos**— Strategi penghalaan yang secara automatik memilih pembekal yang tersedia paling murah</details>

<butiran>
<summary><b>🔒 5. "Saya perlu melindungi get laluan AI saya daripada akses tanpa kebenaran"</b></summary>

Apabila mendedahkan get laluan AI kepada rangkaian (LAN, VPS, Docker), sesiapa sahaja yang mempunyai alamat boleh menggunakan token/kuota pembangun. Tanpa perlindungan, API terdedah kepada penyalahgunaan, suntikan segera dan penyalahgunaan.

**Cara OmniRoute menyelesaikannya:**

-**Pengurusan Kunci API**— Penjanaan, penggiliran dan skop setiap pembekal dengan halaman `/papan pemuka/pengurus-api` khusus
-**Kebenaran Tahap Model**— Hadkan kunci API kepada model tertentu (`openai/*`, corak kad bebas), dengan Togol Benarkan Semua/Sekat
-**Perlindungan Titik Akhir API**— Memerlukan kunci untuk `/v1/model` dan sekat pembekal tertentu daripada penyenaraian
-**Auth Guard + CSRF Protection**— Semua laluan papan pemuka dilindungi dengan perisian tengah `withAuth` + token CSRF
-**Penghad Kadar**— Pengehadan kadar Per-IP dengan tetingkap boleh dikonfigurasikan
-**Penapisan IP**— Senarai Benar/senarai sekat untuk kawalan akses
-**Pengawal Suntikan Segera**— Pensanitasi terhadap corak segera yang berniat jahat
-**Penyulitan AES-256-GCM**— Bukti kelayakan disulitkan semasa rehat</details>

<butiran>
<summary><b>🛑 6. "Pembekal saya gagal dan saya kehilangan aliran pengekodan saya"</b></summary>

Pembekal AI boleh menjadi tidak stabil, mengembalikan ralat 5xx atau mencapai had kadar sementara. Jika pembangun bergantung pada penyedia tunggal, mereka akan terganggu. Tanpa pemutus litar, percubaan semula berulang boleh ranap aplikasi.

**Cara OmniRoute menyelesaikannya:**

-**Pemutus Litar setiap model**— Auto buka/tutup dengan ambang boleh dikonfigurasikan dan cooldown (Tertutup/Buka/Separuh Terbuka), berskop setiap model untuk mengelakkan blok berlatarkan
-**Penyingkiran Eksponen**— Kelewatan percubaan semula progresif
-**Kawanan Anti Gemuruh**— Mutex + perlindungan semafor terhadap ribut percubaan semula serentak
-**Kombo Rantai Sandar**— Jika pembekal utama gagal, secara automatik jatuh melalui rantaian tanpa campur tangan
-**Pemutus Litar Kombo**— Lumpuhkan automatik pembekal yang gagal dalam rantaian kombo
-**Papan Pemuka Kesihatan**— Pemantauan masa aktif, keadaan pemutus litar, penguncian, statistik cache, kependaman p50/p95/p99</details>

<butiran>
<summary><b>🔧 7. "Mengkonfigurasi setiap alat AI adalah membosankan dan berulang"</b></summary>

Pembangun menggunakan Kursor, Kod Claude, Codex CLI, OpenClaw, Gemini CLI, Kod Kilo... Setiap alat memerlukan konfigurasi yang berbeza (titik akhir API, kunci, model). Mengkonfigurasi semula apabila menukar pembekal atau model adalah membuang masa.

**Cara OmniRoute menyelesaikannya:**

-**Papan Pemuka Alat CLI**— Halaman khusus dengan persediaan satu klik untuk Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline
-**GitHub Copilot Config Generator**— Menjana `chatLanguageModels.json` untuk Kod VS dengan pemilihan model pukal
-**Onboarding Wizard**— Persediaan 4 langkah berpandu untuk pengguna kali pertama
-**Satu titik akhir, semua model**— Konfigurasikan `http://localhost:20128/v1` sekali, akses 60+ pembekal</details>

<butiran>
<summary><b>🔑 8. "Mengurus token OAuth daripada berbilang penyedia adalah neraka"</b></summary>

Kod Claude, Codex, Gemini CLI, Copilot — semuanya menggunakan OAuth 2.0 dengan token tamat tempoh. Pembangun perlu sentiasa mengesahkan semula, menangani `client_secret is missing`, `redirect_uri_mismatch` dan kegagalan pada pelayan jauh. OAuth pada LAN/VPS amat bermasalah.

**Cara OmniRoute menyelesaikannya:**

-**Muat Semula Token Auto**— Token OAuth dimuat semula di latar belakang sebelum tamat tempoh
-**OAuth 2.0 (PKCE) Terbina dalam**— Aliran automatik untuk Kod Claude, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder
-**OAuth Berbilang Akaun**— Berbilang akaun bagi setiap pembekal melalui pengekstrakan token JWT/ID
-**OAuth LAN/Remote Fix**— Pengesanan IP peribadi untuk `redirect_uri` + mod URL manual untuk pelayan jauh
-**OAuth Behind Nginx**— Menggunakan `window.location.origin` untuk keserasian proksi terbalik
-**Panduan OAuth Jauh**— Panduan langkah demi langkah untuk kelayakan Google Cloud pada VPS/Docker</details>

<butiran>
<summary><b>📊 9. "Saya tidak tahu berapa banyak yang saya belanjakan atau di mana"</b></summary>

Pembangun menggunakan berbilang penyedia berbayar tetapi tidak mempunyai pandangan bersatu tentang perbelanjaan. Setiap pembekal mempunyai papan pemuka pengebilan sendiri, tetapi tiada paparan disatukan. Kos yang tidak dijangka boleh bertimbun.

**Cara OmniRoute menyelesaikannya:**

-**Papan Pemuka Analitis Kos**— Penjejakan kos per-token dan pengurusan belanjawan bagi setiap pembekal
-**Had Belanjawan setiap Peringkat**— Siling perbelanjaan setiap peringkat yang mencetuskan sandaran automatik
-**Konfigurasi Harga Per-Model**— Harga boleh dikonfigurasikan bagi setiap model
-**Statistik Penggunaan Setiap Kunci API**— Kiraan permintaan dan cap masa yang terakhir digunakan setiap kunci
-**Papan Pemuka Analitik**— Kad statistik, carta penggunaan model, jadual pembekal dengan kadar kejayaan dan kependaman</details>

<butiran>
<summary><b>🐛 10. "Saya tidak dapat mendiagnosis ralat dan masalah dalam panggilan AI"</b></summary>

Apabila panggilan gagal, pembangun tidak tahu sama ada ia adalah had kadar, token tamat tempoh, format yang salah atau ralat pembekal. Log berpecah-belah merentasi terminal yang berbeza. Tanpa pemerhatian, penyahpepijatan adalah percubaan-dan-ralat.

**Cara OmniRoute menyelesaikannya:**

-**Papan Pemuka Log Bersatu**— 4 tab: Log Permintaan, Log Proksi, Log Audit, Konsol
-**Pemapar Log Konsol**— Pemapar gaya terminal masa nyata dengan tahap berkod warna, tatal automatik, carian, penapis
-**Log Proksi SQLite**— Log berterusan yang bertahan dimulakan semula
-**Taman Permainan Penterjemah**— 4 mod nyahpepijat: Taman Permainan (terjemahan format), Penguji Sembang (perjalanan pergi balik), Bangku Ujian (batch), Monitor Langsung (masa nyata)
-**Permintaan Telemetri**— kependaman p50/p95/p99 + pengesanan X-Request-Id
-**Pengelogan Berasaskan Fail dengan Putaran**— Log apl berputar mengikut saiz, hari pengekalan dan kiraan arkib; artifak log panggilan berputar mengikut hari pengekalan dan kiraan fail
-**Laporan Maklumat Sistem**— `info sistem jalankan npm` menjana `info-sistem.txt` dengan persekitaran penuh anda (versi Nod, versi OmniRoute, OS, alatan CLI, status Docker/PM2). Lampirkannya apabila melaporkan isu untuk percubaan segera.</details>

<butiran>
<summary><b>🏗️ 11. "Menyediakan dan menyelenggara pintu masuk adalah rumit"</b></summary>

Memasang, mengkonfigurasi dan menyelenggara proksi AI merentas persekitaran yang berbeza (tempatan, VPS, Docker, awan) adalah intensif buruh. Masalah seperti laluan berkod keras, `EACCES` pada direktori, konflik port dan binaan merentas platform menambahkan geseran.

**Cara OmniRoute menyelesaikannya:**

-**npm global install**— `npm install -g omniroute && omniroute` — selesai
-**Docker Multi-Platform**— AMD64 + ARM64 asli (Apple Silicon, AWS Graviton, Raspberry Pi)
-**Profil Karang Docker**— `asas` (tiada alat CLI) dan `cli` (dengan Kod Claude, Codex, OpenClaw)
-**Apl Desktop Elektron**— Apl asli untuk Windows/macOS/Linux dengan dulang sistem, auto mula, mod luar talian
-**Mod Split-Port**— API dan Papan Pemuka pada port berasingan untuk senario lanjutan (proksi terbalik, rangkaian kontena)
-**Cloud Sync**— Konfigurasikan penyegerakan merentas peranti melalui Cloudflare Workers
-**DB Sandaran**— Sandaran automatik, pulihkan, eksport dan import semua tetapan, dengan `DISABLE_SQLITE_AUTO_BACKUP` untuk sandaran yang diuruskan secara luaran</details>

<butiran>
<summary><b>🌍 12. "Antara muka adalah bahasa Inggeris sahaja dan pasukan saya tidak bercakap bahasa Inggeris"</b></summary>

Pasukan di negara bukan berbahasa Inggeris, terutamanya di Amerika Latin, Asia dan Eropah, bergelut dengan antara muka bahasa Inggeris sahaja. Halangan bahasa mengurangkan penggunaan dan meningkatkan ralat konfigurasi.

**Cara OmniRoute menyelesaikannya:**

-**Papan pemuka i18n — 30 Bahasa**— Semua 500+ kunci diterjemahkan termasuk bahasa Arab, Bulgaria, Denmark, Jerman, Sepanyol, Finland, Perancis, Ibrani, Hindi, Hungary, Indonesia, Itali, Jepun, Korea, Melayu, Belanda, Norway, Poland, Portugis (PT/BR), Romania, Rusia, Slovak, Sweden, Thai, Ukraine, Vietnam, Cina
-**Sokongan RTL**— Sokongan kanan ke kiri untuk bahasa Arab dan Ibrani
-**README Berbilang Bahasa**— 30 terjemahan dokumentasi lengkap
-**Pemilih Bahasa**— Ikon Glob dalam pengepala untuk penukaran masa nyata</details>

<butiran>
<summary><b>🔄 13. "Saya perlukan lebih daripada sembang — saya perlukan pembenaman, imej, audio"</b></summary>

AI bukan sekadar penyelesaian sembang. Pembangun perlu menjana imej, menyalin audio, membuat pembenaman untuk RAG, menyusun semula dokumen dan kandungan sederhana. Setiap API mempunyai titik akhir dan format yang berbeza.

**Cara OmniRoute menyelesaikannya:**

-**Pembenaman**— `/v1/pembenaman` dengan 6 pembekal dan 9+ model
-**Penjanaan Imej**— `/v1/imej/generasi` dengan 10 pembekal dan 20+ model (OpenAI, xAI, Bersama-sama, Bunga Api, Nebius, Hiperbolik, NanoBanana, Antigraviti, SD WebUI, ComfyUI)
-**Teks-ke-Video**— `/v1/video/generasi` — ComfyUI (AnimateDiff, SVD) dan SD WebUI
-**Teks-ke-Muzik**— `/v1/muzik/generasi` — ComfyUI (Audio Terbuka, 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**, + pembekal sedia ada
-**Moderations**— `/v1/moderations` — Pemeriksaan keselamatan kandungan
-**Penyediaan semula**— `/v1/rerank` — Penyusunan semula perkaitan dokumen
-**Responses API**— Sokongan `/v1/respons` penuh untuk Codex</details>

<butiran>
<summary><b>🧪 14. "Saya tiada cara untuk menguji dan membandingkan kualiti merentas model"</b></summary>

Pembangun ingin mengetahui model mana yang terbaik untuk kes penggunaan mereka — kod, terjemahan, penaakulan — tetapi membandingkan secara manual adalah perlahan. Tiada alat eval bersepadu wujud.

**Cara OmniRoute menyelesaikannya:**

-**LLM Evaluations**— Ujian set emas dengan 10 kes pra-muat meliputi salam, matematik, geografi, penjanaan kod, pematuhan JSON, terjemahan, penurunan harga, penolakan keselamatan
-**4 Strategi Padanan**— `tepat`, `mengandungi`, `regex`, `custom` (fungsi JS)
-**Bangku Ujian Taman Permainan Penterjemah**— Ujian kelompok dengan berbilang input dan output yang dijangka, perbandingan merentas pembekal
-**Penguji Sembang**— Perjalanan pergi balik penuh dengan pemaparan respons visual
-**Pantau Langsung**— Strim masa nyata semua permintaan yang mengalir melalui proksi</details>

<butiran>
<summary><b>📈 15. "Saya perlu membuat skala tanpa kehilangan prestasi"</b></summary>

Apabila volum permintaan bertambah, tanpa menyimpan cache soalan yang sama menjana kos pendua. Tanpa idempotensi, pendua meminta pemprosesan sisa. Had kadar setiap pembekal mesti dipatuhi.

**Cara OmniRoute menyelesaikannya:**

-**Cache Semantik**— Cache dua peringkat (tandatangan + semantik) mengurangkan kos dan kependaman
-**Request Idempotency**— tetingkap penyahduplikasi 5s untuk permintaan yang sama
-**Pengesanan Had Kadar**— RPM setiap pembekal, jurang min dan penjejakan serentak maks
-**Had Kadar Boleh Diedit**— Lalai boleh dikonfigurasikan dalam Tetapan → Ketahanan dengan kegigihan
-**Cache Pengesahan Kunci API**— Cache 3 peringkat untuk prestasi pengeluaran
-**Papan Pemuka Kesihatan dengan Telemetri**— kependaman p50/p95/p99, statistik cache, masa beroperasi</details>

<butiran>
<summary><b>🤖 16. "Saya mahu mengawal tingkah laku model secara global"</b></summary>

Pembangun yang mahukan semua respons dalam bahasa tertentu, dengan nada tertentu atau ingin mengehadkan token penaakulan. Mengkonfigurasi ini dalam setiap alat/permintaan adalah tidak praktikal.

**Cara OmniRoute menyelesaikannya:**

-**System Prompt Injection**— Gesaan global digunakan untuk semua permintaan
-**Pengesahan Belanjawan Berfikir**— Kawalan peruntukan token penaakulan setiap permintaan (laluan, auto, tersuai, adaptif)
-**9 Strategi Penghalaan**— Strategi global yang menentukan cara permintaan diedarkan
-**Penghala Wildcard**— corak `penyedia/*` menghala secara dinamik ke mana-mana pembekal
-**Kombo Dayakan/Lumpuhkan Togol**— Togol kombo terus dari papan pemuka
-**Togol Pembekal**— Dayakan/lumpuhkan semua sambungan untuk pembekal dengan satu klik
-**Pembekal Disekat**— Kecualikan pembekal khusus daripada penyenaraian `/v1/models`</details>

<butiran>
<summary><b>🧰 17. "Saya memerlukan alatan MCP sebagai keupayaan produk kelas pertama"</b></summary>

Banyak get laluan AI mendedahkan MCP hanya sebagai butiran pelaksanaan tersembunyi. Pasukan memerlukan lapisan operasi yang boleh dilihat dan boleh diurus.

**Cara OmniRoute menyelesaikannya:**

- MCP muncul dalam navigasi papan pemuka dan tab protokol titik akhir
- Halaman pengurusan MCP khusus dengan proses, alatan, skop dan audit
- Permulaan pantas terbina dalam untuk `omniroute --mcp` dan onboarding klien</details>

<butiran>
<summary><b>🧠 18. "Saya memerlukan orkestrasi A2A dengan laluan tugas penyegerakan + strim"</b></summary>

Aliran kerja ejen memerlukan balasan langsung dan pelaksanaan strim jangka panjang dengan kawalan kitaran hayat.

**Cara OmniRoute menyelesaikannya:**

- Titik akhir JSON-RPC A2A (`POST /a2a`) dengan `mesej/hantar` dan `message/strim`
- Penstriman SSE dengan penyebaran keadaan terminal
- API kitaran hayat tugas untuk `tugas/dapat` dan `tugas/batal`</details>

<butiran>
<ringkasan><b>🛰️ 19. "Saya memerlukan kesihatan proses MCP sebenar, bukan status yang diduga"</b></ringkasan>

Pasukan operasi perlu mengetahui sama ada MCP sebenarnya masih hidup, bukan hanya sama ada API boleh dicapai.

**Cara OmniRoute menyelesaikannya:**

- Fail degupan jantung masa jalan dengan PID, cap masa, pengangkutan, kiraan alat dan mod skop
- API status MCP yang menggabungkan degupan jantung + aktiviti terkini
- Kad status UI untuk kesegaran proses/masa hidup/degupan jantung</details>

<butiran>
<ringkasan><b>📋 20. "Saya memerlukan pelaksanaan alat MCP yang boleh diaudit"</b></ringkasan>

Apabila alat mengubah konfigurasi atau mencetuskan tindakan ops, pasukan memerlukan kebolehkesanan forensik.

**Cara OmniRoute menyelesaikannya:**

- Pengelogan audit yang disokong SQLite untuk panggilan alat MCP
- Tapis mengikut alat, kejayaan/kegagalan, kunci API dan penomboran
- Jadual audit papan pemuka + titik akhir statistik untuk automasi</details>

<butiran>
<summary><b>🔐 21. "Saya memerlukan keizinan MCP berskop bagi setiap penyepaduan"</b></summary>

Pelanggan yang berbeza harus mempunyai akses paling tidak istimewa kepada kategori alat.

**Cara OmniRoute menyelesaikannya:**

- 10 skop MCP berbutir untuk akses alat terkawal
- Penguatkuasaan skop dan keterlihatan dalam UI pengurusan MCP
- Postur lalai yang selamat untuk perkakas operasi</details>

<butiran>
<summary><b>⚙️ 22. "Saya memerlukan kawalan operasi tanpa mengatur semula"</b></summary>

Pasukan memerlukan perubahan masa jalan yang cepat semasa insiden atau peristiwa kos.

**Cara OmniRoute menyelesaikannya:**

- Tukar pengaktifan kombo terus dari papan pemuka MCP
- Gunakan profil daya tahan daripada pek dasar yang telah ditetapkan
- Tetapkan semula keadaan pemutus litar daripada panel operasi yang sama</details>

<butiran>
<summary><b>🔄 23. "Saya memerlukan keterlihatan dan pembatalan kitaran hayat tugas A2A secara langsung"</b></summary>

Tanpa keterlihatan kitaran hayat, insiden tugasan menjadi sukar untuk dicuba.

**Cara OmniRoute menyelesaikannya:**

- Penyenaraian tugas/penapisan mengikut keadaan/kemahiran dengan penomboran
- Latih tubi tentang metadata tugas, peristiwa dan artifak
- Titik akhir pembatalan tugas dan tindakan UI dengan pengesahan</details>

<butiran>
<summary><b>🌊 24. "Saya memerlukan metrik strim aktif untuk beban A2A"</b></summary>

Aliran kerja penstriman memerlukan cerapan operasi tentang konkurensi dan sambungan langsung.

**Cara OmniRoute menyelesaikannya:**

- Kaunter aliran aktif disepadukan ke dalam status A2A
- Cap masa tugas terakhir dan kiraan setiap negeri
- Kad papan pemuka A2A untuk pemantauan operasi masa nyata</details>

<butiran>
<summary><b>🪪 25. "Saya memerlukan penemuan ejen standard untuk pelanggan"</b></summary>

Pelanggan dan orkestra luar memerlukan metadata yang boleh dibaca mesin untuk onboarding.

**Cara OmniRoute menyelesaikannya:**

- Kad Ejen terdedah di `/.well-known/agent.json`
- Keupayaan dan kemahiran ditunjukkan dalam UI pengurusan
- API status A2A termasuk metadata penemuan untuk automasi</details>

<butiran>
<summary><b>🧭 26. "Saya memerlukan kebolehtemuan protokol dalam UX produk"</b></summary>

Jika pengguna tidak dapat menemui permukaan protokol, penggunaan dan kualiti sokongan akan menurun.

**Cara OmniRoute menyelesaikannya:**

- Halaman**Titik Akhir**yang disatukan dengan tab untuk Titik Akhir Proksi, MCP, A2A dan API
- Togol status perkhidmatan dalam talian (Dalam Talian/Luar Talian) untuk MCP dan A2A
- Pautan dari gambaran keseluruhan ke tab pengurusan khusus</details>

<butiran>
<summary><b>🧪 27. "Saya memerlukan pengesahan protokol hujung ke hujung dengan pelanggan sebenar"</b></summary>

Ujian olok-olok tidak mencukupi untuk mengesahkan keserasian protokol sebelum dikeluarkan.

**Cara OmniRoute menyelesaikannya:**

- Suite E2E yang but apl dan menggunakan pengangkutan pelanggan MCP SDK sebenar
- Ujian pelanggan A2A untuk penemuan, menghantar, menstrim, mendapatkan dan membatalkan aliran
- Periksa silang dakwaan terhadap audit MCP dan API tugasan A2A</details>

<butiran>
<summary><b>📡 28. "Saya memerlukan kebolehmerhatian bersatu merentas semua antara muka"</b></summary>

Memisahkan kebolehmerhatian mengikut protokol mewujudkan titik buta dan MTTR yang lebih panjang.

**Cara OmniRoute menyelesaikannya:**

- Papan pemuka/log/analisis bersatu dalam satu produk
- Kesihatan + audit + telemetri permintaan merentas lapisan OpenAI, MCP dan A2A
- API Operasi untuk status dan automasi</details>

<butiran>
<summary><b>💼 29. "Saya memerlukan satu masa jalan untuk proksi + alatan + orkestrasi ejen"</b></summary>

Menjalankan banyak perkhidmatan berasingan meningkatkan kos operasi dan mod kegagalan.

**Cara OmniRoute menyelesaikannya:**

- Proksi serasi OpenAI, pelayan MCP dan pelayan A2A dalam satu tindanan
- Kebenaran dikongsi, daya tahan, stor data dan kebolehmerhatian
- Model dasar yang konsisten merentas semua permukaan interaksi</details>

<butiran>
<summary><b>🚀 30. "Saya perlu menghantar aliran kerja agen tanpa rebakan kod gam"</b></summary>

Pasukan kehilangan halaju apabila mencantumkan berbilang perkhidmatan dan skrip ad-hoc.

**Cara OmniRoute menyelesaikannya:**

- Strategi titik akhir bersatu untuk pelanggan dan ejen
- UI pengurusan protokol terbina dalam dan laluan pengesahan asap
- Asas sedia pengeluaran (keselamatan, pembalakan, daya tahan, sandaran)</details>

### Example Playbooks (Integrated Use Cases)

**Playbook A: Maksimumkan langganan berbayar + sandaran 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: Timbunan pengekodan kos sifar```txt Combo: "free-forever"

  1. gc/gemini-3-flash
  2. if/kimi-k2-thinking
  3. qw/qwen3-coder-plus

Monthly cost: $0 Outcome: stable free coding workflow


**Playbook C: 24/7 rantai sandaran sentiasa hidup**```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 ejen dengan MCP + A2A```txt

  1. Start MCP transport (omniroute --mcp) for tool-driven operations
  2. Run A2A tasks via message/send and message/stream
  3. Observe via /dashboard/endpoint (MCP and A2A tabs)
  4. Toggle services via inline status controls

---

## 🆓 Start Free — Zero Configuration Cost

> Sediakan pengekodan AI dalam beberapa minit pada**$0/bulan**. Sambungkan akaun percuma ini dan gunakan kombo**Timbunan Percuma**terbina dalam.

| Langkah | Tindakan | Pembekal Dibuka Kunci |
| ---- | -------------------------------------------------- | ----------------------------------------------------------------- |
| 1 | Sambung**Kiro**(AWS Builder ID OAuth) | Claude Sonnet 4.5, Haiku 4.5 —**tanpa had**|
| 2 | Sambung**Qoder**(Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... —**tanpa had**|
| 3 | Sambung**Qwen**(Kod Peranti) | qwen3-coder-plus, qwen3-coder-flash... —**tanpa had**|
| 4 | Sambung**Gemini CLI**(Google OAuth) | gemini-3-flash, Gemini-2.5-pro —**180K/bln percuma**|
| 5 | `/papan pemuka/kombo` →**Templat Timbunan Percuma ($0)**| Round-robin semua pembekal percuma secara automatik |

**Tuding mana-mana IDE/CLI ke:**`http://localhost:20128/v1` · Kunci API: `any-string` · Selesai.

>**Liputan tambahan pilihan (juga percuma):**Kunci API Groq (30 RPM percuma), NVIDIA NIM (40 RPM percuma, 70+ model), Cerebras (1M tok/hari), kunci API LongCat (50M token/hari!), Cloudflare Workers AI (10K Neuron/hari, 50+ model).## Mula Pantas

### 1) Install and run

```bash
npm install -g omniroute
omniroute

**pengguna pnpm:**Jalankan pnpm approve-builds -g selepas pemasangan untuk mendayakan skrip binaan asli yang diperlukan oleh better-sqlite3 dan @swc/core:

pnpm install -g omniroute
pnpm approve-builds -g # Pilih semua pakej → approve
omniroute

Papan pemuka dibuka di http://localhost:20128 dan URL asas API ialah http://localhost:20128/v1.

Perintah Penerangan
laluan omni Mulakan pelayan (PORT=20128, API dan papan pemuka pada port yang sama)
laluan omni --port 3000 Tetapkan port kanonik/API kepada 3000
laluan omni --mcp Mulakan pelayan MCP (stdio transport)
laluan omni --tidak-terbuka Jangan auto buka penyemak imbas
omniroute --help Tunjukkan bantuan

Mod split-port pilihan:```bash PORT=20128 DASHBOARD_PORT=20129 omniroute

API: http://localhost:20128/v1

Dashboard: http://localhost:20129


### Long-Running Streaming Timeouts

Untuk kebanyakan penempatan, anda hanya perlu:

| Pembolehubah | Lalai | Tujuan |
| ------------------------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | `600000` | Garis dasar dikongsi untuk pengambilan huluan, tamat masa Undici tersembunyi, permintaan cap jari TLS dan permintaan jambatan API/masa tamat proksi |
| `STREAM_IDLE_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` | Jurang maksimum antara bahagian penstriman sebelum OmniRoute membatalkan strim SSE |

Keserasian ke belakang dikekalkan: `FETCH_TIMEOUT_MS` sedia ada, `API_BRIDGE_PROXY_TIMEOUT_MS` dan var tamat masa setiap lapisan lain masih berfungsi dan mengatasi garis dasar yang dikongsi.

Penggantian lanjutan tersedia jika anda memerlukan kawalan yang lebih halus:| Pembolehubah | Lalai | Tujuan |
| --------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------- |
| `FETCH_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` | Jumlah tamat masa permintaan huluan yang digunakan oleh isyarat pengguguran pengambilan utama |
| `FETCH_HEADERS_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Had masa Undici untuk menerima pengepala respons huluan |
| `FETCH_BODY_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Had masa Undici antara ketulan badan hulu (`0` melumpuhkannya) |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Tamat masa sambungan Undici TCP |
| `FETCH_KEEPLIVE_TIMEOUT_MS` | `4000` | Undici melahu keep-alive soket tamat masa |
| `TLS_CLIENT_TIMEOUT_MS` | mewarisi `FETCH_TIMEOUT_MS` | Tamat masa untuk permintaan cap jari TLS yang dibuat melalui `wreq-js` |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | mewarisi `REQUEST_TIMEOUT_MS` atau `30000` | Tamat masa untuk pemajuan proksi `/v1` daripada port API ke port papan pemuka |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `maks(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | Tamat masa permintaan masuk pada pelayan jambatan API |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | Tamat masa pengepala masuk pada pelayan jambatan API |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | Simpan-hidup tamat masa pada pelayan jambatan API |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | Tamat masa ketidakaktifan soket pada pelayan jambatan API (`0` melumpuhkannya) |

Jika anda menjalankan OmniRoute di belakang Nginx, Caddy, Cloudflare atau proksi terbalik yang lain, pastikan proksi
tamat masa juga lebih tinggi daripada tamat masa strim OmniRoute/ambil anda.### 2) Connect providers and create your API key

1. Buka Papan Pemuka → `Penyedia` dan sambungkan sekurang-kurangnya satu pembekal (kunci OAuth atau API).
2. Buka Papan Pemuka → `Titik Akhir` dan buat kunci API.
3. (Pilihan) Buka Papan Pemuka → `Kombo` dan tetapkan rantai sandaran 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)

Berfungsi dengan Kod Claude, Codex CLI, Gemini CLI, Kursor, Cline, OpenClaw, OpenCode dan SDK yang serasi dengan OpenAI.### 4) Enable and validate protocols (v2.0)

MCP (untuk operasi dipacu alat):```bash omniroute --mcp


Kemudian sambungkan klien MCP anda melalui `stdio` dan alat ujian seperti:

- `omniroute_get_health`
- `kombo_senarai_omniroute`

**A2A (untuk aliran kerja ejen-ke-ejen):**```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."}]}}'
npm run test:protocols:e2e

Suite ini mengesahkan aliran klien MCP dan A2A sebenar terhadap apl 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
Void Linux (templat `xbps-src`)

Untuk pengguna Void Linux, anda boleh membina pakej 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 imej Docker awam di [Hab Docker](https://hub.docker.com/r/diegosouzapw/omniroute).

**Larian pantas:**```bash
docker run -d \
  --name omniroute \
  --restart unless-stopped \
  --stop-timeout 40 \
  -p 20128:20128 \
  -v omniroute-data:/app/data \
  diegosouzapw/omniroute:latest

Dengan fail persekitaran:```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 Compose:**```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

Sokongan papan pemuka untuk penempatan Docker kini termasukTerowong Pantas Cloudflaresatu klik pada Papan Pemuka → Titik Akhir. Yang pertama membolehkan muat turun cloudflared hanya apabila diperlukan, memulakan terowong sementara ke titik akhir /v1 semasa anda dan menunjukkan URL https://*.trycloudflare.com/v1 yang dijana terus di bawah URL awam biasa anda.

Nota:

  • URL Terowong Pantas adalah sementara dan berubah selepas setiap kali dimulakan semula.
  • Terowong Pantas tidak dipulihkan secara automatik selepas OmniRoute atau kontena dimulakan semula. Dayakan semula mereka dari papan pemuka apabila diperlukan.
  • Pemasangan terurus kini menyokong Linux, macOS dan Windows pada x64 / arm64.
  • Terowong Pantas Terurus lalai kepada pengangkutan HTTP/2 untuk mengelakkan amaran penimbal UDP QUIC yang bising dalam persekitaran kontena yang dikekang. Tetapkan CLOUDFLARED_PROTOCOL=quic atau auto jika anda mahukan pengangkutan yang berbeza.
  • Imej docker menggabungkan akar CA sistem dan menyerahkannya kepada cloudflared terurus, yang mengelakkan kegagalan kepercayaan TLS apabila tali but terowong berada di dalam bekas.
  • SQLite berjalan dalam mod WAL. docker stop harus dibenarkan selesai supaya OmniRoute boleh menyemak semula perubahan terkini ke storage.sqlite.
  • Fail Karang yang digabungkan telah menetapkan tempoh tangguh hentian 40-an. Jika anda menjalankan imej secara terus, pastikan --stop-timeout 40 (atau serupa) supaya hentian manual tidak memotong pembersihan penutupan.
  • Tetapkan CLOUDFLARED_BIN=/absolute/path/to/cloudflared jika anda mahu OmniRoute menggunakan binari sedia ada dan bukannya memuat turun satu.

Menggunakan Docker Compose dengan Caddy (HTTPS Auto-TLS):

OmniRoute boleh didedahkan dengan selamat menggunakan peruntukan SSL automatik Caddy. Pastikan rekod DNS A domain anda menghala ke IP pelayan 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:


| Imej | Tag | Saiz | Penerangan |
| ------------------------- | -------- | ------ | ---------------------- |
| `diegosouzapw/omniroute` | `terkini` | ~250MB | Keluaran stabil terkini |
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Versi semasa |---

## 🖥️ Desktop App — Offline & Always-On

> 🆕**BARU!**OmniRoute kini tersedia sebagai**aplikasi desktop asli**untuk Windows, macOS dan Linux.

Jalankan OmniRoute sebagai apl desktop kendiri — tiada terminal, tiada penyemak imbas, tiada internet diperlukan untuk model tempatan. Aplikasi berasaskan Elektron termasuk:

- 🖥️**Tetingkap Asli**— Tetingkap apl khusus dengan penyepaduan dulang sistem
- 🔄**Auto-Mula**— Lancarkan OmniRoute pada log masuk sistem
- 🔔**Pemberitahuan Asli**— Dapatkan makluman untuk masalah keletihan kuota atau pembekal
- ⚡**Pasang Satu Klik**— NSIS (Windows), DMG (macOS), AppImage (Linux)
- 🌐**Mod Luar Talian**— Berfungsi sepenuhnya di luar talian dengan pelayan yang digabungkan### Mula Pantas

```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

Apabila diminimumkan, OmniRoute tinggal dalam dulang sistem anda dengan tindakan pantas:

  • Buka papan pemuka
  • Tukar port pelayan
  • Hentikan permohonan

📖 Dokumentasi penuh: electron/README.md---

💰 Pricing at a Glance

Peringkat Pembekal Kos Set Semula Kuota Terbaik Untuk
💳 LANGGANAN Kod Claude (Pro) $20/bln 5j + mingguan Sudah melanggan
Codex (Plus/Pro) $20-200/bln 5j + mingguan Pengguna OpenAI
Gemini CLI PERCUMA 180K/bln + 1K/hari Semua orang!
GitHub Copilot $10-19/bln Bulanan Pengguna GitHub
🔑 KUNCI API NVIDIA NIM PERCUMA(dev forever) ~40 RPM 70+ model terbuka
Serebral PERCUMA(1J tok/hari) 60K TPM / 30 RPM Terpantas di dunia
Groq PERCUMA(30 RPM) 14.4K RPD Llama/Gemma sangat pantas
DeepSeek V3.2 $0.27/$1.10 setiap 1J Tiada Penalaran harga/kualiti terbaik
xAI Grok-4 Cepat $0.20/$0.50 setiap 1J🆕 Tiada Panggilan alat + terpantas, ultralow
xAI Grok-4 (standard) $0.20/$1.50 setiap 1J 🆕 Tiada Penaakulan perdana daripada xAI
Mistral Percubaan percuma + berbayar Kadar terhad AI Eropah
OpenRouter Bayar setiap penggunaan Tiada 100+ model aggr.
💰 MURAH GLM-5 (melalui Z.AI) 🆕 $0.5/1J Setiap hari 10AM Keluaran 128K, perdana terbaharu
GLM-4.7 $0.6/1J Setiap hari 10AM Sandaran belanjawan
MiniMax M2.5 🆕 Input $0.3/1J 5 jam bergolek Penaakulan + tugas agen
MiniMax M2.1 $0.2/1J 5 jam bergolek Pilihan termurah
Kimi K2.5 (Moonshot API) 🆕 Bayar setiap penggunaan Tiada Akses langsung Moonshot API
Kimi K2 $9/bln flat 10 juta token/bln Kos yang boleh diramal
🆓 PERCUMA Qoder $0 tanpa had 5 model tanpa had
Qwen $0 tanpa had 4 model tanpa had
Kiro $0 tanpa had Claude Sonnet/Haiku (Pembina AWS)
LongCat Flash-Lite 🆕 $0(50J tok/hari 🔥) 1 RPS Kuota percuma terbesar di Bumi
Pendebungaan AI 🆕 $0(tiada kunci diperlukan) 1 req/15s GPT-5, Claude, DeepSeek, Llama 4
Pekerja Cloudflare AI 🆕 $0(10K Neuron/hari) ~150 resp/hari 50+ model, kelebihan global
Scaleway AI 🆕 $0(Jumlah token 1J) Kadar terhad EU/GDPR, Qwen3 235B, Llama 70B > 🆕**Model baharu ditambahkan (Mac 2026):**Keluarga Grok-4 Fast pada $0.20/$0.50/M (ditanda aras pada 1143ms — 30% lebih pantas daripada Gemini 2.5 Flash), GLM-5 melalui Z.AI dengan output 128K, penaakulan MiniMax M2.5. Kim2 DeepSeek V3. Penaakulan langsung Kim2, DeepSeek V3.

💡 Timbunan Kombo $0 — Persediaan Percuma 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


**Kos sifar. Jangan sekali-kali berhenti pengekodan.**Konfigurasikan ini sebagai satu kombo OmniRoute dan semua sandaran berlaku secara automatik — tiada penukaran manual.---

---

## 🆓 Free Models — What You Actually Get

> Semua model di bawah adalah**100% percuma dengan kad kredit sifar diperlukan**. Laluan automatik OmniRoute antara mereka apabila satu kuota habis — gabungkan kesemuanya untuk kombo $0 yang tidak boleh dipecahkan.### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)

| Model | Awalan | Had | Had Kadar |
| ------------------- | ------ | ------------- | ---------------------- |
| `claude-sonnet-4.5` | `kr/` |**Tidak terhad**| Tiada had harian dilaporkan |
| `claude-haiku-4.5` | `kr/` |**Tidak terhad**| Tiada had harian dilaporkan |
| `claude-opus-4.6` | `kr/` |**Tidak terhad**| Opus terkini melalui Kiro |### 🟢 QODER MODELS (Free PAT via qodercli)

| Model | Awalan | Had | Had Kadar |
| ------------------- | ------ | ------------- | --------------- |
| `kimi-k2-berfikir` | `jika/` |**Tidak terhad**| Tiada had dilaporkan |
| `qwen3-coder-plus` | `jika/` |**Tidak terhad**| Tiada had dilaporkan |
| `deepseek-r1` | `jika/` |**Tidak terhad**| Tiada had dilaporkan |
| `minimaks-m2.1` | `jika/` |**Tidak terhad**| Tiada had dilaporkan |
| `kimi-k2` | `jika/` |**Tidak terhad**| Tiada had dilaporkan |

> Kaedah sambungan yang disyorkan:**Token Akses Peribadi + `qodercli`**. Pelayar OAuth ialah
> percubaan dan dilumpuhkan secara lalai melainkan pembolehubah persekitaran `QODER_OAUTH_*` dikonfigurasikan.### 🟡 QWEN MODELS (Device Code Auth)

| Model | Awalan | Had | Had Kadar |
| ------------------- | ------ | ------------- | ------------------- |
| `qwen3-coder-plus` | `qw/` |**Tidak terhad**| Tiada had yang dilaporkan |
| `qwen3-coder-flash` | `qw/` |**Tidak terhad**| Tiada had yang dilaporkan |
| `qwen3-coder-next` | `qw/` |**Tidak terhad**| Tiada had yang dilaporkan |
| `model penglihatan` | `qw/` |**Tidak terhad**| Multimodal (imej) |### 🟣 GEMINI CLI (Google OAuth)

| Model | Awalan | Had | Had Kadar |
| ------------------------- | ------ | --------------------------- | ------------- |
| `gemini-3-flash-preview` | `gc/` |**180K tok/bulan**+ 1K/hari | Tetapan semula bulanan |
| `gemini-2.5-pro` | `gc/` | 180K/bulan (kolam kongsi) | Berkualiti tinggi |### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)

| Peringkat | Had Harian | Had Kadar | Nota |
| ---------- | ------------ | ----------- | ------------------------------------------------------------------- |
| Percuma (Dev) | Tiada topi token |**~40 RPM**| 70+ model; beralih kepada had kadar tulen pertengahan 2025 |

Model percuma yang popular: `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-deepseek`,/`deepseek`r### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)

| Peringkat | Had Harian | Had Kadar | Nota |
| ---- | ----------------- | ---------------- | ------------------------------------------ |
| Percuma |**1J token/hari**| 60K TPM / 30 RPM | Inferens LLM terpantas di dunia; ditetapkan semula setiap hari |

Tersedia secara percuma: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`### 🔴 GROQ (Free API Key — console.groq.com)

| Peringkat | Had Harian | Had Kadar | Nota |
| ---- | ------------- | ---------------- | ---------------------------------------- |
| Percuma |**14.4K RPD**| 30 RPM setiap model | Tiada kad kredit; 429 pada had, tidak dicaj |

Tersedia secara percuma: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕

| Model | Awalan | Kuota Percuma Harian | Nota |
| ---------------------------- | ------ | ----------------- | ------------------------ |
| `LongCat-Flash-Lite` | `lc/` |**50J token**💥 | Kuota percuma terbesar pernah |
| `LongCat-Flash-Chat` | `lc/` | 500K token | Sembang berbilang pusingan |
| `LongCat-Flash-Thinking` | `lc/` | 500K token | Penaakulan / CoT |
| `LongCat-Flash-Thinking-2601` | `lc/` | 500K token | Versi Jan 2026 |
| `LongCat-Flash-Omni-2603` | `lc/` | 500K token | Multimodal |

> 100% percuma semasa dalam beta awam. Daftar di [longcat.chat](https://longcat.chat) dengan e-mel atau telefon. Ditetapkan semula setiap hari 00:00 UTC.### 🟢 POLLINATIONS AI (No API Key Required) 🆕

| Model | Awalan | Had Kadar | Pembekal Di Belakang |
| ---------- | ------ | ---------- | ------------------- |
| `openai` | `pol/` | 1 req/15s | GPT-5 |
| `claude` | `pol/` | 1 req/15s | Claude Anthropic |
| `gemini` | `pol/` | 1 req/15s | Google Gemini |
| `mendalam` | `pol/` | 1 req/15s | DeepSeek V3 |
| `llama` | `pol/` | 1 req/15s | Pengakap Meta Llama 4 |
| `mistral` | `pol/` | 1 req/15s | Mistral AI |

> ✨**Sifar geseran:**Tiada pendaftaran, tiada kunci API. Tambahkan pembekal Pendebungaan dengan medan kunci kosong dan ia berfungsi serta-merta.### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕

| Peringkat | Neuron Harian | Penggunaan Setara | Nota |
| ---- | ------------- | ---------------------------------------------------- | ------------------------ |
| Percuma |**10,000**| ~150 LLM respons / 500s audio / 15K benam | Kelebihan global, 50+ model |

Model percuma yang popular: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (audio percuma!), `@cf/qwen/qwen2.5-coder-15b

> Memerlukan Token API + ID Akaun daripada [dash.cloudflare.com](https://dash.cloudflare.com). Simpan ID Akaun dalam tetapan pembekal.### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕

| Peringkat | Kuota Percuma | Lokasi | Nota |
| ---- | ------------- | ------------ | ----------------------------------- |
| Percuma |**1J token**| 🇫🇷 Paris, EU | Tiada kad kredit diperlukan dalam had |

Tersedia secara percuma: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`

> patuh EU/GDPR. Dapatkan kunci API di [console.scaleway.com](https://console.scaleway.com).

>**💡 Timbunan Percuma Terunggul (11 Pembekal, $0 Selamanya):**
>
> ```
> Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED
> Qoder (jika/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
> LongCat Lite (lc/) → LongCat-Flash-Lite — 50 juta token/hari 🔥
> Pendebungaan (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — tiada kunci diperlukan
> Qwen (qw/) → model qwen3-coder TANPA HAD
> Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/hari percuma
> Cloudflare AI (cf/) → 50+ model — 10K Neuron/hari
> Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M token percuma (EU)
> Groq (groq/) → Llama/Gemma — 14.4K req/hari sangat pantas
> NVIDIA NIM (nvidia/) → 70+ model terbuka — 40 RPM selama-lamanya
> Cerebras (cerebras/) → Llama/Qwen terpantas dunia — 1M tok/hari
> ```## 🎙️ Free Transcription Combo

> Transkripsikan sebarang audio/video untuk**$0**— Deepgram memimpin dengan percuma $200, sandaran AssemblyAI $50, Groq Whisper sebagai sandaran kecemasan tanpa had.

| Pembekal | Kredit Percuma | Model Terbaik | Had Kadar |
| ----------------- | ----------------------- | ------------------------------------------ | ---------------------------- |
| 🟢**Deepgram**|**$200 percuma**(pendaftaran) | `nova-3` — ketepatan terbaik, 30+ bahasa | Tiada had RPM untuk kredit percuma |
| 🔵**PerhimpunanAI**|**$50 percuma**(pendaftaran) | `universal-3-pro` — bab, sentimen, PII | Tiada had RPM untuk kredit percuma |
| 🔴**Groq**|**Percuma selamanya**| `whisper-large-v3` — OpenAI Whisper | 30 RPM (kadar terhad) |

**Kombo yang dicadangkan dalam `/papan pemuka/kombo`:**```
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 dalam tab /papan pemuka/mediaTranskripsi: muat naik mana-mana fail audio atau video → pilih titik akhir kombo anda → dapatkan transkripsi dalam format yang disokong.## 💡 Key Features

OmniRoute v2.0 dibina sebagai platform operasi, bukan hanya proksi geganti.### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)

Ciri Apa yang Dilakukan
Keluarga Cepat Grok-4 model xAI pada $0.20/$0.50/M — menanda aras 1143ms (30% lebih pantas daripada Gemini 2.5 Flash)
🧠GLM-5 melalui Z.AI Konteks keluaran 128K, $0.5/1J — perdana terbaharu daripada keluarga GLM
🔮MiniMax M2.5 Penaakulan + tugas agen pada $0.30/1J — peningkatan ketara daripada M2.1
🎯alatMemanggil Bendera setiap Model Per-model toolCalling: true/false dalam registry — AutoCombo melangkau model bukan alat yang mampu
🌍Pengesanan Niat Pelbagai Bahasa Kata kunci PT/ZH/ES/AR dalam pemarkahan AutoCombo — pemilihan model yang lebih baik untuk kandungan bukan bahasa Inggeris
📊Kemunduran Didorong Penanda Aras Kependaman p95 sebenar daripada pemarkahan kombo suapan permintaan langsung — AutoCombo belajar daripada data sebenar
🔁Minta Deduplikasi Tetingkap penyahduaan berasaskan cincang kandungan — selamat berbilang ejen, menghalang caj pendua
🔌Strategi Penghala Boleh Pasang Antara muka RouterStrategy yang boleh diperluas — tambah logik penghalaan tersuai sebagai pemalam ### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP
Ciri Apa yang Dilakukan
🎮Taman Permainan Model Halaman papan pemuka untuk menguji mana-mana model secara langsung — pemilih pembekal/model/titik akhir, Editor Monaco, penstriman, batalkan, pemasaan
🔏Padanan Cap Jari CLI Penyusunan pengepala/badan setiap penyedia untuk memadankan tandatangan CLI asli — togol setiap pembekal dalam Tetapan > Keselamatan.IP proksi anda dipelihara
🤝Sokongan ACP (Protokol Pelanggan Agen) Penemuan ejen CLI (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 lagi), pemijah proses, titik akhir /api/acp/agent
🤖Papan Pemuka Ejen ACP Nyahpepijat Halaman ejen — grid 14 ejen dengan status pemasangan, versi, borang ejen tersuai untuk sebarang alat CLI. PenggunaOpenCodemendapat butang "Muat turun opencode.json" yang menjana secara automatik konfigurasi sedia untuk digunakan dengan semua model yang tersedia.
🔧Penghalaan apiFormat Model Tersuai Model tersuai dengan apiFormat: "respons" kini dihalakan dengan betul ke penterjemah API Respons
🏢Pengasingan Ruang Kerja Codex Berbilang ruang kerja Codex setiap e-mel — OAuth memisahkan sambungan dengan betul mengikut ID ruang kerja
🔄Kemas Kini Auto Elektron Apl desktop menyemak kemas kini + pemasangan automatik semasa dimulakan semula ### 🤖 Agent & Protocol Operations (v2.0)
Ciri Apa yang Dilakukan
🔧Pelayan MCP (25 alatan) Alat IDE/agen melalui 3 pengangkutan: stdio, SSE (/api/mcp/sse), HTTP Boleh Strim (/api/mcp/stream). 18 teras + 3 memori + 4 alatan kemahiran
🤝Pelayan A2A (JSON-RPC + SSE) Pelaksanaan tugas ejen kepada ejen dengan aliran penyegerakan dan penstriman
🧭Halaman Titik Akhir Disatukan Halaman pengurusan tab dengan tab Endpoint Proxy, MCP, A2A dan Titik Akhir API
🎚️Servis Dayakan/Lumpuhkan Togol Suis HIDUP/MATI untuk MCP dan A2A dengan tetapan tetapan (lalai: MATI)
🛰️Denyutan Jantung Masa Jalanan MCP Status proses sebenar (pid, masa beroperasi, umur degupan jantung, pengangkutan, mod skop)
📋Jejak Audit MCP Log audit boleh ditapis dengan kejayaan/kegagalan dan atribusi utama
🔐Penguatkuasaan Skop MCP 10 kebenaran skop berbutir untuk akses alat terkawal
📡Pengurusan Kitaran Hayat Tugas A2A Senaraikan/tapis tugas, periksa acara/artifak, batalkan tugas yang sedang dijalankan
📋Penemuan Kad Agen /.well-known/agent.json untuk penemuan automatik pelanggan
🧪Protokol E2E Test Harness Klien MCP SDK + A2A sebenar mengalir dalam test:protocols:e2e
⚙️Kawalan Operasi Tukar kombo, gunakan profil daya tahan, tetapkan semula pemutus dari satu permukaan kawalan ### 🧠 Routing & Intelligence
Ciri Apa yang Dilakukan
🎯Smart 4-Tier Fallback Laluan automatik: Langganan → Kunci API → Murah → Percuma
📊Penjejakan Kuota Masa Nyata Kiraan token langsung + tetapan semula kira detik setiap pembekal
🔄Terjemahan Format OpenAI ↔ Claude ↔ Gemini ↔ Respons dengan penukaran selamat skema
👥Sokongan Berbilang Akaun Berbilang akaun bagi setiap pembekal dengan pemilihan pintar
🔄Muat Semula Token Auto Token OAuth dimuat semula secara automatik dengan cuba semula
🎨Kombo Tersuai 9 strategi mengimbangi + kawalan rantai sandaran
🌐Penghala Wildcard penyedia/* penghalaan dinamik
🧠Kawalan Belanjawan Berfikir Had penaakulan laluan, auto, tersuai dan adaptif
🔀Alias Model Pengalian model + tersuai terbina dalam dan keselamatan penghijrahan
Degradasi Latar Belakang Halakan tugas latar belakang keutamaan rendah ke model yang lebih murah
🧪Penghalaan Pintar Sedar Tugas Autopilih model mengikut jenis kandungan (pengekodan/penglihatan/analisis/ringkasan)
🔄Aliran Kerja Ejen A2A Pengatur FSM yang menentukan untuk pelaksanaan ejen berbilang langkah berstatus
🔀Penghalaan Adaptif Penggantian strategi dinamik berdasarkan volum token dan kerumitan segera
🎲Kepelbagaian Pembekal Pemarkahan entropi Shannon mengimbangi pengedaran trafik kombo automatik
💬System Prompt Suntikan Kawalan tingkah laku global digunakan secara konsisten
📄Kesesuaian API Respons Sokongan penuh /v1/respons untuk Codex dan aliran kerja agen lanjutan ### 🎵 Multi-Modal APIs
Ciri Apa yang Dilakukan
🖼️Penjanaan Imej /v1/images/generations dengan awan dan hujung belakang tempatan
📐Pembenaman /v1/embeddings untuk carian dan saluran paip RAG
🎤Transkripsi Audio /v1/audio/transkripsi — 7 pembekal (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), pengesanan autobahasa, sokongan MP4/MP3/WAV
🔊Teks-ke-Ucapan /v1/audio/speech — 10 pembekal (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) dengan mesej ralat yang betul
🎬Penjanaan Video /v1/video/generasi (aliran kerja ComfyUI + SD WebUI)
🎵Generasi Muzik /v1/muzik/generasi (aliran kerja ComfyUI)
🛡️Kesederhanaan /v1/moderations semakan keselamatan
🔀Penyusunan semula /v1/rerank untuk pemarkahan perkaitan
🔍Carian Web🆕 /v1/search — 5 pembekal (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ percuma/bulan, auto-failover, cache ### 🛡️ Resilience, Security & Governance
Ciri Apa yang Dilakukan
🔌Pemutus Litar Perjalanan/pulih setiap model dengan kawalan ambang
🎯Model Sedar Titik Akhir Model tersuai mengisytiharkan titik akhir yang disokong + format API
🛡️Kawanan Anti Guruh Perlindungan Mutex + semaphore pada acara cuba semula/kadar
🧠Semantik + Cache Tandatangan Pengurangan kos/pendaman dengan dua lapisan cache
Minta Idepotency Tetingkap perlindungan pendua
🔒TLS Fingerprint Spoofing Cap jari TLS seperti pelayar —mengurangkan pengesanan bot dan pembenderaan akaun
🔏Padanan Cap Jari CLI Padan dengan tandatangan permintaan CLI asli —mengurangkan risiko larangan sambil mengekalkan IP proksi
🌐Penapisan IP Kawalan senarai benar/senarai sekat untuk penempatan terdedah
📊Had Kadar Boleh Diedit Had global/peringkat pembekal boleh dikonfigurasikan dengan kegigihan
📉Degradasi Anggun Sandaran keupayaan berbilang lapisan melindungi operasi get laluan teras
📜Jejak Audit Config Penjejakan perubahan berasaskan perbezaan menghalang hanyut operasi dengan pemulangan mudah
Penyegerakan Kesihatan Pembekal Pemantauan tamat tempoh token proaktif mencetuskan makluman sebelum kegagalan kebenaran
🚪AutoLumpuhkan Akaun Diharamkan Pemutus litar operasi mengelak akaun token yang disekat secara kekal secara automatik
🔑Pengurusan Kunci API + Skop Kawalan pengeluaran/putaran kunci dan model/pembekal selamat
👁️Pendedahan Kunci API Berskop🆕 Ikut serta pemulihan kunci API melalui ALLOW_API_KEY_REVEAL
🛡️Dilindungi /model Gating pengesahan pilihan dan penyembunyian penyedia untuk katalog model ### 📊 Observability & Analytics
Ciri Apa yang Dilakukan
📝Permintaan + Pembalakan Proksi Permintaan/tindak balas penuh dan pengelogan proksi
📉Log Terperinci Distrim🆕 Membina semula aliran muatan SSE dengan bersih ke dalam UI
📋Papan Pemuka Log Bersatu Permintaan, proksi, audit dan paparan konsol dalam satu halaman
🔍Minta Telemetri kependaman p50/p95/p99 dan pengesanan permintaan
🏥Papan Pemuka Kesihatan Masa aktif, keadaan pemutus, sekatan, statistik cache
💰Penjejakan Kos Kawalan belanjawan dan keterlihatan harga setiap model
📈Penggambaran Analitik Cerapan penggunaan model/pembekal dan pandangan arah aliran
🧪Rangka Kerja Penilaian Ujian set emas dengan strategi perlawanan boleh dikonfigurasikan
📡Diagnostik Langsung🆕 Pintasan cache semantik untuk ujian langsung kombo yang tepat ### ☁️ Deployment & Platform
Ciri Apa yang Dilakukan
🌐Kerahkan Di Mana-mana Localhost, VPS, Docker, persekitaran Cloud
🚇Terowong Cloudflare🆕 Penyepaduan Terowong Pantas satu klik daripada papan pemuka
🔑Penapisan Model Kunci API Respons asli /v1/models ditapis melalui peranan konteks Pembawa yang diberikan
Pintas Cache Pintar Heuristik TTL yang boleh dikonfigurasikan dan kawalan pengambilan semula paksa
🔄Sandaran/Pulihkan Eksport/import dan aliran pemulihan bencana
🧙Onboarding Wizard Persediaan berpandu jalan pertama
🔧Papan Pemuka Alat CLI Persediaan satu klik untuk alat pengekodan popular
🎮Taman Permainan Model Uji mana-mana pembekal/model/titik akhir daripada papan pemuka
🔏Togol Cap Jari CLI Padanan cap jari setiap pembekal dalam Tetapan > Keselamatan
🌐i18n (30 bahasa) Papan pemuka penuh + sokongan bahasa dokumen dengan liputan RTL
🧹Kosongkan Semua Model Pembersihan senarai model satu klik dalam butiran pembekal
👁️Kawalan Bar Sisi🆕 Sembunyikan komponen dan penyepaduan daripada Tetapan Rupa
📋Templat Isu Templat GitHub standard untuk pepijat dan ciri
📂Direktori Data Tersuai DATA_DIR menimpa lokasi storan ### 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

Apabila kuota, kadar atau kesihatan gagal, OmniRoute secara automatik beralih ke calon seterusnya tanpa penukaran manual.#### Protocol management that is visible and operable

  • MCP + A2A boleh ditemui dalam UI dan dokumen (tidak tersembunyi)
  • API status protokol mendedahkan data operasi langsung (/api/mcp/*, /api/a2a/*)
  • Papan pemuka termasuk tindakan untuk operasi hari ke-2 (togol kombo, penetapan semula pemutus, pembatalan tugas)#### Translator + validation workflow

Kawasan Penterjemah termasuk:

-Taman Permainan: meminta semakan transformasi -Penguji Sembang: permintaan penuh/tindak balas pergi balik -Bangku Ujian: berbilang kes dalam satu larian -Pemantau Langsung: paparan trafik masa nyata

Tambahan pengesahan protokol dengan pelanggan sebenar melalui npm run test:protocols:e2e.

📖MCP Server README— Rujukan alat, konfigurasi IDE dan contoh klien

📖A2A Server README— Kemahiran, kaedah JSON-RPC, penstriman dan kitaran hayat tugas## 🧪 Evaluations (Evals)

OmniRoute termasuk rangka kerja penilaian terbina dalam untuk menguji kualiti tindak balas LLM terhadap set emas. Aksesnya melaluiAnalytics → Evalsdalam papan pemuka.### Built-in Golden Set

"Set Emas OmniRoute" yang dipramuat mengandungi kes ujian untuk:

  • Salam, matematik, geografi, penjanaan kod
  • Pematuhan format JSON, terjemahan, penjanaan turun nilai
  • Penolakan keselamatan (kandungan berbahaya), pengiraan, logik boolean### Evaluation Strategies
Strategi Penerangan Contoh
tepat Output mesti sepadan dengan tepat "4"
mengandungi Output mesti mengandungi subrentetan (tidak peka huruf besar-besaran) "Paris"
regex Output mesti sepadan dengan corak regex "1.*2.*3"
adat Fungsi JS tersuai mengembalikan benar/salah (output) => output.panjang > 10 ---

📖 Setup Guide

Protocol Setup (MCP + A2A)

🧩 MCP Setup (Model Context Protocol)

Mulakan pengangkutan MCP dalam mod stdio:```bash omniroute --mcp


Aliran pengesahan yang disyorkan:

1. Sambungkan klien MCP anda melalui stdio.
2. Jalankan `omniroute_get_health`.
3. Jalankan `omniroute_list_combos`.
4. Buka `/papan pemuka/mcp` untuk mengesahkan degupan jantung, aktiviti dan audit.

API berguna untuk automasi:

- `DAPATKAN /api/mcp/status`
- `DAPATKAN /api/mcp/tools`
- `DAPATKAN /api/mcp/audit`
- `DAPATKAN /api/mcp/audit/stats`</details>

<butiran>
<ringkasan><b>🤝 Persediaan A2A (Agent2Agent)</b></summary>

Temui ejen:```bash
curl http://localhost:20128/.well-known/agent.json

Hantar tugasan:```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."}]}}'


Urus kitaran hayat:

- `DAPATKAN /api/a2a/status`
- `DAPATKAN /api/a2a/tasks`
- `DAPATKAN /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/cancel`

UI Operasi:

- `/papan pemuka/a2a` untuk pemerhatian tugas/keadaan/strim dan tindakan asap</details>

<butiran>
<summary><b>🧪 Pengesahan protokol hujung ke hujung</b></summary>

Sahkan kedua-dua protokol dengan pelanggan sebenar:```bash
npm run test:protocols:e2e

Ini mengesahkan:

  • Sambung/senarai/panggilan klien MCP SDK
  • Penemuan A2A/hantar/strim/dapat/batal
  • Semak silang data dalam audit MCP dan API pengurusan tugas A2A
💳 Pembekal Langganan### Claude Code (Pro/Max)
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

**Petua Pro:**Gunakan Opus untuk tugas yang rumit, Sonnet untuk kelajuan. OmniRoute menjejaki kuota setiap 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 akaun Codex kini mempunyai togol dasar dalam Papan Pemuka -> Pembekal:

  • 5j (HIDUP/MATI): menguatkuasakan dasar ambang tetingkap 5 jam.
  • Mingguan (HIDUP/MATI): menguatkuasakan dasar ambang tetingkap mingguan.
  • Tingkah laku ambang: apabila tetingkap yang didayakan mencapai >=90% penggunaan, akaun itu dilangkau.
  • Tingkah laku putaran: Laluan OmniRoute ke akaun Codex yang layak seterusnya secara automatik.
  • Tetapkan semula tingkah laku: apabila masa pembekal resetAt berlalu, akaun menjadi layak semula secara automatik.

Senario:

  • 5j HIDUP + Mingguan HIDUP: akaun dilangkau apabila mana-mana tetingkap mencapai ambang.
  • 5j OFF + Weekly ON: hanya penggunaan mingguan boleh menyekat akaun.
  • 5j ON + Mingguan OFF: hanya penggunaan 5 jam boleh menyekat akaun.
  • resetAt lulus: akaun memasuki semula putaran secara automatik (tiada manual didayakan semula).### 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:**Peringkat percuma yang besar! Gunakan ini sebelum peringkat 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
🔑 API Key Providers### NVIDIA NIM (FREE developer access — 70+ models)
  1. Daftar: build.nvidia.com
  2. Dapatkan kunci API percuma (1000 kredit inferens disertakan)
  3. Papan Pemuka → Tambah Pembekal → NVIDIA NIM:
    • Kunci API: nvapi-your-key

Model:nvidia/llama-3.3-70b-instruct, nvidia/mistral-7b-instruct dan 50+ lagi

**Petua Pro:**API serasi OpenAI — berfungsi dengan lancar dengan terjemahan format OmniRoute!### DeepSeek

  1. Daftar: platform.deepseek.com
  2. Dapatkan kunci API
  3. Papan Pemuka → Tambah Pembekal → DeepSeek

Model:deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)

  1. Daftar: console.groq.com
  2. Dapatkan kunci API (termasuk peringkat percuma)
  3. Papan Pemuka → Tambah Pembekal → Groq

Model:groq/llama-3.3-70b, groq/mixtral-8x7b

**Petua Pro:**Inferens sangat pantas — terbaik untuk pengekodan masa nyata!### OpenRouter (100+ Models)

  1. Daftar: openrouter.ai
  2. Dapatkan kunci API
  3. Papan Pemuka → Tambah Pembekal → OpenRouter

**Model:**Akses 100+ model daripada semua pembekal utama melalui kunci API tunggal.

Tingkah laku papan pemuka:Model OpenRouter diurus daripadaModel Tersedia. Tambah, import dan autosegerak secara manual semua mengemas kini senarai yang sama.

💰 Penyedia Murah (Sandaran)### GLM-4.7 (Daily reset, $0.6/1M)
  1. Daftar: Zhipu AI
  2. Dapatkan kunci API daripada Pelan Pengekodan
  3. Papan Pemuka → Tambah Kunci API:
    • Pembekal: glm
    • Kunci API: kunci-anda

Kegunaan:glm/glm-4.7

**Petua Pro:**Pelan Pengekodan menawarkan kuota 3× pada kos 1/7! Tetapkan semula setiap hari 10:00 AM.### MiniMax M2.1 (5h reset, $0.20/1M)

  1. Daftar: MiniMax
  2. Dapatkan kunci API
  3. Papan Pemuka → Tambah Kunci API

Kegunaan:minimax/MiniMax-M2.1

**Petua Pro:**Pilihan termurah untuk konteks panjang (token 1M)!### Kimi K2 ($9/month flat)

  1. Langgan: Moonshot AI
  2. Dapatkan kunci API
  3. Papan Pemuka → Tambah Kunci API

Gunakan:kimi/kimi-terbaru

**Petua Pro:**Tetap $9/bulan untuk 10J token = $0.90/1J kos efektif!

🆓 Pembekal PERCUMA (Sandaran Kecemasan)### Qoder (5 FREE models via OAuth)
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
🎨 Cipta Kombo### Example 1: Maximize Subscription → Cheap Backup
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!
🔧 Penyepaduan CLI### Cursor IDE
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 Toolsdalam papan pemuka untuk konfigurasi satu 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

Pilihan 1 — Papan Pemuka (disyorkan):``` Dashboard → CLI Tools → OpenClaw → Select Model → Apply


**Pilihan 2 — Manual:**Edit `~/.openclaw/openclaw.json`:```json
{
  "models": {
    "providers": {
      "omniroute": {
        "baseUrl": "http://127.0.0.1:20128/v1",
        "apiKey": "sk_omniroute",
        "api": "openai-completions"
      }
    }
  }
}

**Nota:**OpenClaw hanya berfungsi dengan OmniRoute tempatan. Gunakan 127.0.0.1 dan bukannya localhost untuk mengelakkan isu 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 pembekal tersuai:```bash opencode /connect

Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key


**Langkah 2:**Cipta/edit `opencode.json` dalam akar projek 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 dalam OpenCode:```bash /models

Select any OmniRoute model from the list


>**Petua:**Tambahkan sebarang model yang tersedia dalam titik akhir OmniRoute `/v1/models` anda ke bahagian `models`. Gunakan format `provider/model-id` daripada papan pemuka OmniRoute anda.</details>

---

## Penyelesaian Masalah

<butiran>
<summary><b>Klik untuk mengembangkan panduan penyelesaian masalah</b></summary>

**"Model bahasa tidak memberikan mesej"**

- Kuota pembekal habis → Semak penjejak kuota papan pemuka
- Penyelesaian: Gunakan sandaran kombo atau tukar kepada peringkat yang lebih murah

**Penghadan kadar**

- Kuota langganan habis → Sandar kepada GLM/MiniMax
- Tambah kombo: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`

**Token OAuth tamat tempoh**

- Dikemas semula secara automatik oleh OmniRoute
- Jika isu berterusan: Papan Pemuka → Pembekal → Sambung semula

**Kos tinggi**

- Semak statistik penggunaan dalam Papan Pemuka → Kos
- Tukar model utama kepada GLM/MiniMax
- Gunakan peringkat percuma (Gemini CLI, Qoder) untuk tugasan yang tidak kritikal

**Port papan pemuka/API salah**

- `PORT` ialah port asas kanonik (dan port API secara lalai)
- `API_PORT` mengatasi hanya pendengar API yang serasi dengan OpenAI
- `DASHBOARD_PORT` mengatasi hanya papan pemuka/pendengar Next.js
- Tetapkan `NEXT_PUBLIC_BASE_URL` pada papan pemuka/URL awam anda (untuk panggilan balik OAuth)

**Ralat penyegerakan awan**

- Sahkan mata `BASE_URL` pada contoh berjalan anda
- Sahkan mata `CLOUD_URL` ke titik akhir awan anda yang dijangkakan
- Pastikan nilai `NEXT_PUBLIC_*` sejajar dengan nilai sebelah pelayan

**Log masuk pertama tidak berfungsi**

- Tandai `INITIAL_PASSWORD` dalam `.env`
- Jika tidak ditetapkan, kata laluan sandaran ialah `123456`

**Tiada log permintaan**

- Artifak permintaan ditulis ke `DATA_DIR/call_logs/` sebagai satu fail JSON setiap permintaan
- Dayakan tangkapan saluran paip dari Papan Pemuka → Log → Log Permintaan jika anda memerlukan muatan setiap peringkat yang terperinci
- Tetapkan `APP_LOG_TO_FILE=true` jika anda juga mahu log konsol aplikasi dalam `logs/application/app.log`
- Laraskan `APP_LOG_MAX_FILE_SIZE`, `APP_LOG_RETENTION_DAYS`, `APP_LOG_MAX_FILES` dan `CALL_LOG_MAX_ENTRIES` mengikut keperluan

**Ujian sambungan menunjukkan "Tidak sah" untuk pembekal yang serasi dengan OpenAI**

- Banyak pembekal tidak mendedahkan titik akhir `/models`
- OmniRoute v1.0.6+ termasuk pengesahan sandaran melalui pelengkapan sembang
- Pastikan URL asas mengandungi akhiran `/v1`### 🔐 OAuth on a Remote Server

<a name="oauth-on-a-remote-server"></a>
<a name="oauth-em-servidor-remoto"></a>

>**⚠️ Penting untuk pengguna yang menjalankan OmniRoute pada VPS, Docker atau mana-mana pelayan jauh**#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?

Pembekal**Antigravity**dan**Gemini CLI**menggunakan**Google OAuth 2.0**. Google memerlukan `redirect_uri` dalam aliran OAuth supaya betul-betul sepadan dengan salah satu URI pradaftar dalam Google Cloud Console apl.

Bukti kelayakan OAuth yang digabungkan dalam OmniRoute didaftarkan**untuk `localhost` sahaja**. Apabila anda mengakses OmniRoute pada pelayan jauh (cth. `https://omniroute.myserver.com`), Google menolak pengesahan dengan:```
Error 400: redirect_uri_mismatch

Solution: Configure your own OAuth credentials

Anda perlu membuatID Klien OAuth 2.0dalam Google Cloud Console dengan URI pelayan anda.#### Step-by-step

1. Buka Google Cloud Console

Pergi ke: https://console.cloud.google.com/apis/credentials

2. Buat ID Pelanggan OAuth 2.0 baharu

  • Klik**"+ Cipta Bukti kelayakan""ID klien OAuth"**
  • Jenis aplikasi:"Aplikasi web"
  • Nama: apa sahaja yang anda suka (cth. OmniRoute Remote)

3. Tambah URI Ubah Hala Dibenarkan

Dalam medan**"URI halauan dibenarkan"**, tambahkan:``` https://your-server.com/callback


> Gantikan `your-server.com` dengan domain atau IP pelayan anda (termasuk port jika perlu, cth. `http://45.33.32.156:20128/callback`).

**4. Simpan dan salin bukti kelayakan**

Selepas membuat, Google akan menunjukkan**ID Pelanggan**dan**Rahsia Pelanggan**.

**5. Tetapkan pembolehubah persekitaran**

Dalam `.env` anda (atau pembolehubah persekitaran 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. Mulakan semula OmniRoute```bash

npm:

npm run dev

Docker:

docker restart omniroute


**7. Cuba sambung semula**

Papan pemuka → Pembekal → Antigraviti (atau Gemini CLI) → OAuth

Google kini akan mengubah hala dengan betul ke `https://your-server.com/callback`.---

#### Temporary workaround (without custom credentials)

Jika anda tidak mahu menyediakan bukti kelayakan anda sendiri sekarang, anda masih boleh menggunakan**aliran URL manual**:

1. OmniRoute membuka URL kebenaran Google
2. Selepas memberi kebenaran, Google cuba mengubah hala ke `localhost` (yang gagal pada pelayan jauh)
3.**Salin URL penuh**dari bar alamat penyemak imbas anda (walaupun halaman tidak dimuatkan)
4. Tampalkan URL tersebut ke dalam medan yang ditunjukkan dalam modal sambungan OmniRoute
5. Klik**"Sambung"**

> Ini berfungsi kerana kod kebenaran dalam URL adalah sah tidak kira sama ada halaman ubah hala dimuatkan.---

<butiran>
<summary><b>🇧🇷 Versão em Português</b></summary>#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?

Ia membuktikan**Antigraviti**dan**Gemini CLI**menggunakan**Google OAuth 2.0**untuk autenticação. O Google exige que a `redirect_uri` usada no fluxo OAuth seja**exatamente**das URIs pre-cadastradas no Google Cloud Console to aplicativo.

Sebagai kredenciais OAuth embutidas no OmniRoute estão cadastradas**apenas untuk `localhost`**. Anda boleh mengakses OmniRoute em um servidor remoto (cth: `https://omniroute.meuservidor.com`), o Google rejeita a autenticação com:```
Error 400: redirect_uri_mismatch

Solução: Configure suas próprias credenciais OAuth

Você precisa criar umOAuth 2.0 Client IDno Google Cloud Console com a URI do seu servidor.#### Passo a passo

1. Akses ke Konsol Awan Google

Abra: https://console.cloud.google.com/apis/credentials

2. Crie um novo ID Pelanggan OAuth 2.0

  • Klik em**"+ Cipta Bukti Kelayakan""ID klien OAuth"**
  • Tipo de aplicativo:"Aplikasi web"
  • Nama: escolha qualquer nome (cth: OmniRoute Remote)

3. Tambah sebagai URI Ubah Hala Dibenarkan

Tiada**"URI ubah hala yang dibenarkan"**, tambahan:``` https://seu-servidor.com/callback


> Gantikan `seu-servidor.com` pelo domínio ou IP do seu servidor (termasuk porta se necessário, cth: `http://45.33.32.156:20128/callback`).

**4. Simpan dan salin sebagai kredensia**

Após criar, o Google mostrará o**ID Pelanggan**e o**Rahsia Pelanggan**.

**5. Konfigurasikan sebagai variáveis de ambiente**

No seu `.env` (ou nas variáveis de ambiente do 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. Reinicie o OmniRoute```bash

Se usando npm:

npm run dev

Se usando Docker:

docker restart omniroute


**7. Tente conectar novamente**

Papan pemuka → Pembekal → Antigraviti (ou Gemini CLI) → OAuth

Agora o Google redirectionará corretamente para `https://seu-servidor.com/callback` dan autenticação funcionará.---

#### Workaround temporário (sem configurar credenciais próprias)

Jika anda ingin mendapatkan credenciais próprias agora, ada kemungkinan penggunaan atau fluks**manual de URL**:

1. OmniRoute abrirá a URL de authorização do Google
2. Após você authorizar, o Google tentará redirectionar para `localhost` (que falha no servidor remoto)
3.**Salin URL yang lengkap**pada penyemak imbas barra de endeço do seu (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
5. Klik em**"Sambung"**

> Penyelesaian ini berfungsi sebagai kodigo de autorização na URL adalah bebas untuk mengubah hala mengikut arahan atau tidak.</details>

---

</details>

## 🛠️ Tech Stack

<butiran>
<summary><b>Klik untuk mengembangkan butiran tindanan teknologi</b></summary>

-**Waktu Jalan**: Node.js 1822 LTS (⚠️ Node.js 24+**tidak disokong**— perduaan asli `better-sqlite3` tidak serasi)
-**Bahasa**: TypeScript 5.9 —**100% TypeScript**merentas `src/` dan `open-sse/` (sifar `mana-mana` dalam modul teras sejak v2.0)
-**Kerangka**: Next.js 16 + React 19 + Tailwind CSS 4
-**Pangkalan Data**: LowDB (JSON) + SQLite (keadaan domain + log proksi + audit MCP + keputusan penghalaan)
-**Skema**: Zod (pengesahan I/O alat MCP, kontrak API)
-**Protokol**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE)
-**Penstriman**: Acara Dihantar Pelayan (SSE)
-**Auth**: OAuth 2.0 (PKCE) + JWT + API Keys + MCP Scoped Authorization
-**Ujian**: Pelari ujian Node.js + Vitest (900+ ujian termasuk unit, penyepaduan, E2E)
-**CI/CD**: GitHub Actions (auto npm publish + Docker Hub pada keluaran)
-**Tapak web**: [omniroute.online](https://omniroute.online)
-**Pakej**: [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 litar, pengunduran eksponen, kumpulan anti-gemuruh, penipuan TLS, penyembuhan diri kombo automatik</details>

---

## Dokumentasi

| Dokumen | Penerangan |
| ---------------------------------------------- | --------------------------------------------------- |
| [Panduan Pengguna](docs/USER_GUIDE.md) | Pembekal, kombo, penyepaduan CLI, penggunaan |
| [Rujukan API](docs/API_REFERENCE.md) | Semua titik akhir dengan contoh |
| [Pelayan MCP](open-sse/mcp-server/README.md) | 16 alatan MCP, konfigurasi IDE, pelanggan Python/TS/Go |
| [Pelayan A2A](src/lib/a2a/README.md) | JSON-RPC 2.0 protokol, kemahiran, penstriman, mgmt tugas |
| [Enjin Auto-Kombo](docs/auto-combo.md) | Pemarkahan 6 faktor, pek mod, penyembuhan diri |
| [Penyelesaian masalah](docs/PENYELESAIAN MASALAH.md) | Masalah dan penyelesaian biasa |
| [Seni Bina](docs/ARCHITECTURE.md) | Seni bina sistem dan dalaman |
| [Menyumbang](MENYUMBANG.md) | Persediaan pembangunan dan garis panduan |
| [Spesifikasi OpenAPI](docs/openapi.yaml) | Spesifikasi OpenAPI 3.0 |
| [Dasar Keselamatan](SECURITY.md) | Pelaporan kerentanan dan amalan keselamatan |
| [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Panduan lengkap: Persediaan VM + nginx + Cloudflare |
| [Galeri Ciri](docs/FEATURES.md) | Lawatan papan pemuka visual dengan tangkapan skrin |
| [Senarai Semak Keluaran](docs/RELEASE_CHECKLIST.md) | Langkah pengesahan prakeluaran |---

## 🗺️ Roadmap

OmniRoute mempunyai**210+ ciri yang dirancang**merentas berbilang fasa pembangunan. Berikut adalah bidang utama:

| Kategori | Planned Features | Sorotan |
| ---------------------------- | ---------------- | ------------------------------------------------------------------------------------ |
| 🧠**Penghalaan & Perisikan**| 25+ | Penghalaan kependaman terendah, penghalaan berasaskan teg, kuota prapenerbangan, pemilihan akaun P2C |
| 🔒**Keselamatan & Pematuhan**| 20+ | Pengerasan SSRF, penyelubungan kelayakan, had kadar setiap titik akhir, skop kunci pengurusan |
| 📊**Kebolehlihatan**| 15+ | Penyepaduan OpenTelemetry, pemantauan kuota masa nyata, penjejakan kos setiap model |
| 🔄**Integrasi Pembekal**| 20+ | Pendaftaran model dinamik, penyejukan pembekal, Codex berbilang akaun, penghuraian kuota Copilot |
| ⚡**Prestasi**| 15+ | Lapisan cache dwi, cache gesaan, cache respons, penstriman keepalive, API kelompok |
| 🌐**Ekosistem**| 10+ | API WebSocket, konfigurasi hot-reload, kedai konfigurasi teragih, mod komersial |### 🔜 Coming Soon

- 🔗**OpenCode Integration**— Sokongan pembekal asli untuk IDE pengekodan AI OpenCode
- 🔗**Pengintegrasian TRAE**— Sokongan penuh untuk rangka kerja pembangunan TRAE AI
- 📦**API Kelompok**— Pemprosesan kelompok tak segerak untuk permintaan pukal
- 🎯**Penghalaan Berasaskan Teg**— Permintaan laluan berdasarkan teg tersuai dan metadata
- 💰**Strategi Kos Terendah**— Pilih pembekal yang tersedia paling murah secara automatik

> 📝 Spesifikasi ciri penuh tersedia dalam [`docs/new-features/`](docs/new-features/) (217 spesifikasi terperinci)---

## 👥 Contributors

[![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)

### How to Contribute

1. Garpu repositori
2. Cipta cawangan ciri anda (`git checkout -b feature/amazing-feature`)
3. Komit perubahan anda (`git commit -m 'Tambah ciri menakjubkan'`)
4. Tekan ke cawangan (`git push origin feature/amazing-feature`)
5. Buka Permintaan Tarik

Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk mendapatkan garis panduan terperinci.### 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

Stargazers over time

🙏 Acknowledgments

Terima kasih khas kepada**9routerolehdecolua**— projek asal yang mengilhamkan fork ini. OmniRoute membina asas yang luar biasa itu dengan ciri tambahan, API berbilang modal dan penulisan semula TypeScript penuh.

Terima kasih khas kepada**CLIProxyAPI**— pelaksanaan Go asal yang mengilhamkan port JavaScript ini.---

Lesen

Lesen MIT - lihat LESEN untuk mendapatkan butiran.---

Built with ❤️ for developers who code 24/7
omniroute.online