# 🚀 OmniRoute — Gerbang AI Percuma
**Dicipta oleh [Diego Souza](https://github.com/diegosouzapw)**
## 💰 ~1.62B Token / Bulan Merentas Peringkat Percuma Pihak Ketiga
> **Gunakan akaun penyedia anda sendiri.** Ini ialah anggaran agregat merentas peringkat percuma pihak ketiga yang layak secara berasingan, bukannya pemberian token daripada OmniRoute. Daftar, dapatkan kelayakan apabila diperlukan, dan sambungkan penyedia yang boleh anda gunakan; setiap penyedia mengawal had, ketersediaan dan syarat mereka sendiri.
>
> Menggabungkan peringkat percuma secara manual memang menyusahkan — berpuluh-puluh SDK, berpuluh-puluh had kadar, dan tiada cara untuk mengetahui jumlah sebenar yang anda miliki. OmniRoute mengkatalogkan **465 entri peringkat percuma merentas 34 kunci pool berulang** dan mengira tajuk token daripada **17 pool dengan bajet bulanan positif yang diterbitkan serta lima had Groq setiap model**, dengan pendua dibuang berdasarkan pool yang dikongsi. Kuota yang hanya dibuka selepas semakan identiti serantau (hari ini: ModelScope) dipaparkan secara berasingan, +~6M selepas pengesahan identiti serantau, dan tidak pernah dijumlahkan ke dalam tajuk utama. Hasilnya kekal kelihatan pada papan pemuka (`/dashboard/free-tiers`).
> Ringkasan beranimasi halaman `/dashboard/free-tiers` secara langsung. Metodologi penuh (penyahduaan pool, peringkat kredit, syarat penyedia): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Angka ini diaudit semula setiap dua minggu berdasarkan katalog langsung dan **boleh berubah ke kedua-dua arah** — penyedia menamatkan peringkat percuma dan jumlahnya menurun; penyedia baharu muncul dan jumlahnya meningkat. Kami menerbitkan perkara yang benar-benar dikira oleh katalog, bukan senario terbaik yang dibundarkan ke atas.
⭐ Beri bintang pada repositori ini jika OMNIROUTE membantu anda menjimatkan wang dan memudahkan kerja anda.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Sertai komuniti
**👋 Ikuti penyelenggara — dapatkan penyedia baharu, keluaran dan tip terlebih dahulu:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**Soalan, tip penyedia, peta jalan & sokongan → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 Gateway Terus Berkembang
## 🆓 Pasang, sambungkan penyedia, kemudian halakan melalui satu titik akhir
```bash
# Selepas menyambungkan penyedia, salin kunci OmniRoute anda daripada Papan Pemuka → Titik Akhir:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` memerlukan laluan yang layak. Pemasangan baharu mungkin tidak mempunyai sasaran tanpa kunci yang layak, dan penyedia tanpa kunci mungkin menolak klien pihak ketiga. Penyedia yang ditandai `tos: avoid`, termasuk Kiro, dikecualikan daripada penghalaan automatik secara lalai; menyambungkan akaun tidak akan mengatasi tetapan tersebut. Rujuk [Panduan Tingkatan Percuma](docs/getting-started/FREE-TIERS-GUIDE.md) sebelum memilih penyedia.📦 Skrip quickstart salin-tampal untuk **Python, Node.js, PHP, dan cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 Janji
# 🤔 Mengapa OmniRoute?
## 🤝 Disokong oleh Rakan Sumber Terbuka Kami
> **Ingin menyertai sebagai Rakan Sumber Terbuka?** Ini adalah syarikat-syarikat yang menyokong sumber terbuka dan membantu OmniRoute terus bergerak — dan kami menyatakan secara terbuka ke mana setiap token yang mereka berikan kepada kami pergi. Hubungi: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
Terima kasih kepada Kimi (Moonshot AI), Rakan Sumber Terbuka pengasas kami, kerana menyokong projek ini! Kimi adalah makmal AI di sebalik keluarga model K2 dan K3 dengan berat terbuka — Kimi K3 menawarkan tetingkap konteks 1M-token, penglihatan asli dan pengekodan peringkat sempadan pada sebahagian kecil daripada harga model tertutup, dan berfungsi dengan baik dengan Claude Code, Codex dan setiap alat pengekodan yang disediakan oleh OmniRoute.
Apa yang disokong oleh Kimi: Kredit API Kimi menggerakkan saluran keluaran yang disahkan AI OmniRoute — peringkat pengesahan gabungan yang dikuasakan oleh Kimi K3 yang menyemak setiap permintaan tarik sebelum ia dihantar — serta pembangunan ciri harian. Sokongan Kimi kelas pertama dihantar pada kedua-dua rel: API Kimi langsung (kimi-k3) dan pelan pengekodan Kimi Code (OAuth dan kunci API). OmniRoute juga merupakan projek sumber terbuka Brazil pertama dalam program sokongan Kimi. Dapatkan kunci API Kimi dengan 15% kredit tambahan →
Cheaper Inference cheaperinference.com
Terima kasih kepada Cheaper Inference, Rakan Sumber Terbuka OmniRoute, kerana menyokong projek ini! Cheaper Inference adalah gerbang yang dinilai kos yang menjual semula 42 model sempadan — Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok dan MiniMax — di sebalik satu titik akhir yang serasi dengan OpenAI, menghantar setiap permintaan kepada penyedia yang paling murah tanpa pernah mengenakan bayaran melebihi harga senarai pembuat model.
Sokongan kelas pertama dalam OmniRoute: Chat Completions, titik akhir /v1/responses asli, penglihatan, panggilan alat dan 3 model imej (grok-imagine, nano-banana-pro, nano-banana-2, boleh dicapai sebagai cheaperinference/<model>). Dapatkan kunci API →
Pautan yang ditandai aff=omniroute adalah pautan rakan kongsi. Ia membiayai projek tanpa kos tambahan kepada anda. 🎟️ Promosi Afiliasi — kupon pendaftaran percuma daripada penyedia yang tidak kami taja (klik untuk kembangkan)Bahagian ini adalah untuk kod rujukan/kupon sahaja. Perkongsian yang ditaja terdapat dalam 🤝 Disokong oleh Rakan Sumber Terbuka Kami di atas. OmniRoute tidak mempunyai penajaan atau perkongsian dengan penyedia yang disenaraikan di sini — ini adalah kupon awam yang boleh digunakan oleh sesiapa sahaja.
AgentRouter agentrouter.org
AgentRouter — pendaftaran afiliasi · $100 kredit percuma semasa pendaftaran (pelayan percuma, jangkakan kependaman yang lebih tinggi — terbaik untuk ujian, bukan pengeluaran). Sokongan kelas pertama dalam OmniRoute sejak v3.8.50: Chat Completions, format wayar yang serasi dengan Anthropic dan laluan yang serasi dengan OpenAI. Model yang tersedia termasuk claude-opus-4-8, claude-opus-5, gpt-5.6-sol dan banyak lagi. Dapatkan $100 anda →
⚠️ Pautan afiliasi — OmniRoute tidak mempunyai penajaan atau perkongsian dengan penyedia ini.
Tahu penyedia lain dengan kupon pendaftaran percuma yang murah hati yang memberi manfaat kepada pengguna OmniRoute? Buka isu dan kami akan menambahnya di sini.
## 🎯 Kombo — Ciri Utama
> **Kombo** ialah rantaian model yang OmniRoute halakan secara **automatik**. Jika kuota habis, penyedia gagal, atau kos melonjak, kombo boleh beralih kepada model sihat seterusnya yang layak. 🛡️
### ⚡ Konfigurasi sifar — hanya gunakan `auto`
Tiada kombo yang perlu dicipta. Tetapkan model anda kepada `auto` (atau variannya) dan OmniRoute membina kombo maya daripada penyedia anda yang telah disambungkan, dengan pemarkahan masa nyata:
ID Model
Perkara yang dioptimumkan
auto
🎯 Lalai seimbang (LKGP — kekal dengan penyedia terakhir anda yang berfungsi dengan baik)
auto/coding
🧑💻 Pemberat yang mengutamakan kualiti untuk penjanaan kod
auto/fast
⚡ Kependaman terendah didahulukan
auto/cheap
💰 Kos termurah bagi setiap token didahulukan
auto/subscription
🎟️ Hanya kuota langganan yang telah anda bayar — gagal secara tertutup, tanpa sandaran yang boleh dikenakan bayaran (panduan)
auto/thrifty
🪜 Kuota pelan didahulukan, kemudian satu anak tangga pada satu masa kepada pilihan berbayar termurah — kembali kepada pelan selepas ia ditetapkan semula (panduan)
auto/offline
🔋 Ruang baki kuota / had kadar terbanyak didahulukan
auto/smart
🔭 Mengutamakan kualiti + penerokaan 10% untuk menemui model yang lebih baik
auto/lkgp
📌 Kekekalan eksplisit pada penyedia terakhir yang diketahui berfungsi dengan baik
auto/chaos
🧪 Pengagihan selari kepada panel model (satu bagi setiap penyedia, 5 secara lalai), mengembalikan satu jawapan; satu panggilan huluan bagi setiap model panel, bukan penyuntikan kegagalan
##
### 🔀 Atau bina sendiri — 20 strategi penghalaan
Kesemua **20** strategi — campur & padankan bagi setiap langkah kombo:
#
Strategi
Fungsinya
1
priority
Senarai tersusun yang mengutamakan sasaran pertama — habiskan setiap satu sebelum beralih kepada yang seterusnya 🥇
2
fill-first
Gunakan sepenuhnya kuota setiap sasaran sebelum beralih
3
weighted
Pemilihan rawak berwajaran berdasarkan pemberat setiap sasaran
4
round-robin
Kitar melalui sasaran mengikut turutan
5
p2c
Pengimbangan beban rawak menggunakan kaedah kuasa dua pilihan
6
least-used
Pilih sasaran dengan beban semasa yang paling rendah
7
random
Pemilihan rawak seragam (dinyahpendua)
8
strict-random
Rawak tanpa menyahpendua pengulangan 🎲
9
cost-optimized
Minimumkan $ bagi setiap permintaan berdasarkan harga katalog masa nyata 💸
10
headroom
Pilih sasaran dengan baki kuota terbanyak
11
quota-weighted
Langkau akaun yang telah kehabisan kuota, kemudian pilih secara berkadar dengan baki kuota ÷ beban sedang diproses — perbualan sedia ada kekal disematkan ⚖️
12
reset-window
Utamakan sasaran yang tempoh kuotanya akan ditetapkan semula paling awal
13
reset-aware
Susun kedudukan berdasarkan masa penetapan semula kuota — tempoh pendek didahulukan 📊
14
context-relay
Serahkan konteks merentas sasaran untuk perbualan panjang 🧠
15
context-optimized
Pilih padanan terbaik untuk saiz konteks semasa
16
cache-optimized
Sematkan setiap awalan prom yang boleh digunakan semula kepada akaun yang sama — maksimumkan padanan cache prom 🎯
17
lkgp
Laluan Terakhir yang Diketahui Baik — menyematkan kepada penyedia terakhir yang berjaya, kemudian kembali kepada peraturan sandaran
18
auto
Pemarkahan masa nyata 16 faktor merentas setiap sambungan 🤖
19
fusion
Agihkan kepada panel model + penilai mensintesis satu jawapan 🧬
20
pipeline
Rantaikan langkah — output setiap sasaran disalurkan kepada sasaran seterusnya 🔗
Enjin Auto-Combo memberikan skor kepada setiap calon berdasarkan **16 faktor** (kesihatan, kuota, kos, kependaman, kesesuaian tugas, kualiti, ketersediaan sesi…) — lihat [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 Daya tahan terbina dalam (3 lapisan bebas)
📖 [Enjin Auto-Combo](docs/routing/AUTO-COMBO.md) · [Panduan Daya Tahan](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Perkara yang Membezakan OmniRoute
📊 Metodologi lengkap & perincian setiap ciri berbanding 9router, OpenRouter, CLIProxyAPI & LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Sokong OmniRoute
OmniRoute dilesenkan di bawah MIT dan diselenggara secara terbuka. Jika ia menjimatkan masa atau wang anda, berikut ialah cara untuk membantu mengekalkannya bebas — pilih apa sahaja yang sesuai untuk anda. Penajaan tidak pernah mempengaruhi keutamaan penghalaan; ia memberikan keterlihatan, bukan kedudukan.
**🇧🇷 PIX** — serta-merta, tanpa yuran (Brazil)
Kunci (rawak): `5d865059-bc44-483a-962d-43ceb80126eb`
Salin dan tampal Pix:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Kripto — BTC · ETH · USDT-TRC20 · USDC-Solana (klik untuk kembangkan)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Hantar setiap mata wang hanya melalui rangkaian yang ditunjukkan — penghantaran melalui rangkaian yang salah boleh menyebabkan kehilangan dana.
🐛 Menemui pepijat atau ingin memberikan maklum balas? Buka [Perbincangan](https://github.com/diegosouzapw/OmniRoute/discussions).
Nota pembangun: Projek ini mungkin menjana fail .env setempat semasa npm install/postinstall untuk kemudahan pembangun. Fail ini sengaja diabaikan melalui .gitignore (lihat .gitignore) dan tidak boleh dikomit sama sekali — jika terkomit secara tidak sengaja, tukar semua rahsia yang terdedah dan alih keluar fail tersebut daripada sejarah. Lihat docs/DEVELOPER-ENVIRONMENT.md untuk panduan mengurus fail persekitaran setempat dan rahsia.
## 📡 Radar OmniRoute
Sorotan utama peringkat percuma kekal pada **~1.62B token/bulan** daripada katalog yang didokumenkan dan dinyahpendua berdasarkan kumpulan di atas. Kredit pendaftaran penyedia sementara boleh meningkatkan jumlah bulan pertama secara berasingan kepada **~2.22B**. Radar ialah lapisan tindanan katalog bertandatangan yang bersifat pilihan untuk mereka yang mahukan ketersediaan model percuma yang lebih terkini antara keluaran OmniRoute; katalog komuniti dan setiap ciri percuma sedia ada kekal percuma.
Penyokong boleh menerima katalog langsung dan peluang penyedia tambahan. Had maksimumnya yang berasingan dan boleh berubah ialah **kira-kira 3B token/bulan paling banyak**, bergantung pada ketersediaan penyedia. Had maksimum tersebut bukan jaminan: penyedia boleh mengubah kuota, kelayakan, model atau rantau pada bila-bila masa.
Radar adalah secara ikut serta dan GET sahaja. Klien OmniRoute tidak memuat naik gesaan, trafik, konfigurasi penyedia, telemetri penggunaan atau keadaan setempat bagi pengumuman yang telah ditutup. Ketahui tentang kelayakan dan katalog semasa di **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Apa yang Baharu
> Sorotan terkini daripada **v3.8.20 → v3.8.54**. Sejarah penuh dalam [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Penghalaan `quota-weighted`** — strategi gabungan ke-20 melangkau akaun yang telah kehabisan kuota, kemudian memilih daripada akaun yang selebihnya mengikut kadar kuota berbaki ÷ beban dalam penerbangan, sambil mengekalkan perbualan sedia ada pada akaun masing-masing. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Mod tanpa antara muka** — `omniroute serve --headless` (atau `OMNIROUTE_HEADLESS=1`) hanya menjalankan enjin proksi `/v1/*`, dengan papan pemuka dan subsistem khusus papan pemuka dimatikan. → [Mod Tanpa Antara Muka](docs/guides/HEADLESS.md)
- **🔎 Penemuan model** — `/v1/models` menapis mengikut keupayaan, konteks, jenis dan teks, manakala `POST /v1/models/query` mengembalikan senarai pendek deterministik dengan keterlihatan setiap kunci yang sama. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **🔑 Kawalan penghalaan setiap kunci** — sematkan kunci API pada satu model atau gabungan dengan `forcedModel`, dan tambah atau buang model serta gabungan kunci secara atomik (`/api/keys/{id}/access`). → [Rujukan API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Kawalan PII yang lebih terperinci** — pemilihan mengikut jenis, sehingga 20 corak pelindungan tersuai yang disahkan dan pembilang pengesanan mengikut jenis; pelindungan itu sendiri kekal sebagai pilihan. → [Perlindungan](docs/security/GUARDRAILS.md)
- **🌍 67 bahasa** — papan pemuka, cermin dokumentasi dan CLI, dengan `npm run i18n:add-locale` menambahkan bahasa di semua tempat melalui satu arahan. → [Panduan i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — delegasi A2A masuk kepada armada ejen anda, kemahiran Conductor pada Agent Card, serta panel papan pemuka dengan sembang suara tekan-untuk-bercakap Faro. → [Pelayan A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Kemasukan adaptif & perlindungan beban berlebihan** — permintaan sembang berat beratur dan bukannya menghasilkan ralat 503, dengan pajakan gelongsor RPM atomik bagi setiap sambungan. → [Panduan Ketahanan](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Susunan kanonikal `/v1/models`** — satu blok bersebelahan yang dikumpulkan mengikut pembekal bagi setiap pembekal (gabungan disematkan dahulu), stabil merentasi setiap sumber katalog. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **🗜️ Pengukuhan pemampatan** — perlindungan pengembangan yang diaktifkan secara lalai, pek Caveman untuk DE / FR / JA + bahasa Cina (wényán), penapis RTK untuk Gradle & .NET. → [Pemampatan](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Kos kadar rata yang telus** — pembekal langganan / pelan pengekodan memaparkan **$0** dalam analitik kos; belanjawan, kuota & penghalaan terus membuat anggaran. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **⚖️ Penghalaan Quota-Share** — bahagikan kuota akaun dikongsi secara adil merentasi kunci terkumpul, dengan penggunaan berterusan supaya bahagian yang tidak aktif boleh dipinjamkan. → [Panduan Ketahanan](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Persediaan CLI/ejen satu arahan** — 15 arahan `setup-*` didaftarkan; `omniroute run` melancarkan 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` menyokong 11 sasaran dengan pemilih pembekal+model interaktif serta kegemaran mengikut konteks. → [Integrasi CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Mod jauh** — kendalikan OmniRoute jauh dengan token berskop (`connect` / `contexts` / `tokens`) + pembantu OAuth `antigravity` untuk pemasangan VPS. → [Mod Jauh](docs/guides/REMOTE-MODE.md)
- **🧭 Penghalaan automatik yang lebih pintar** — gabungan `auto/:`, **Fusion** (panel model + hakim), penghalaan sedar tugas, penggantian model / mod / belanjawan USD bagi setiap permintaan. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Pemampatan boleh pasang** — 12 enjin boleh gubah + Compression Studios: LLMLingua-2, Ultra dua peringkat, omniglyph, get laluan kesetiaan setiap langkah, GCF v3.2, penyunting seret-susun. → [Pemampatan](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Nyahsulit MITM telus (TPROXY)** — tangkap CLI yang mengabaikan pemboleh ubah persekitaran proksi, dengan pemasang CA + gedung kepercayaan mengikut SNI. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Telemetri kos di semua tempat** — pengepala kos/penggunaan `X-OmniRoute-*` pada setiap titik akhir, pengepala penjimatan cache-HIT, kuota perbelanjaan USD mengikut kunci. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **🧠 Memori yang anda kawal** — dimatikan secara lalai, pengkuantuman vektor int8 + pereputan bertip yang diaktifkan secara pilihan, `x-omniroute-no-memory` bagi setiap permintaan. → [Memori](docs/frameworks/MEMORY.md)
- **🛡️ Keselamatan** — perlindungan suntikan prompt pada setiap laluan LLM (suite red-team), perlindungan penyamaran kelayakan yang diaktifkan secara pilihan (menyunting kunci API/rahsia yang bocor dalam kedua-dua arah), carian web DuckDuckGo percuma sebagai pilihan terakhir, serta get laluan log masuk OIDC pilihan untuk papan pemuka (log masuk kata laluan sentiasa tersedia). → [Perlindungan](docs/security/GUARDRAILS.md)
- **🖼️ Titik akhir baharu** — `/v1/ocr` (Mistral OCR) dan `/v1/audio/translations` (gaya Whisper) melengkapkan permukaan media. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **🎨 Penjanaan imej / video / audio** — satu API untuk media: xAI Grok Imagine & video Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind, serta pembekal pertuturan seperti ElevenLabs. → [Rujukan API](docs/reference/API_REFERENCE.md)
- **🌍 Penerapan & operasi** — `basePath` proksi songsang, pengesanan automatik bahasa pelayar, penjejakan peranti mengikut kunci, kepercayaan MITM tanpa root, penyetempatan zh-TW. → [Persekitaran](docs/reference/ENVIRONMENT.md)
- **🤝 Lebih banyak pembekal & ejen** — ejen awan (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) dengan log masuk pelayar + OAuth, kad kelas pertama Ollama, Claude Opus 5 & Sonnet 5, kerjasama rasmi Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… serta **katalog 388 pembekal** yang diperbaharui. → [Pembekal](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Ketelusan penghalaan** — setiap respons membawa pengepala `X-OmniRoute-Decision` yang menamakan strategi/pembekal/latensi yang menyampaikannya, strategi gabungan `cache-optimized` baharu + faktor laluan `cacheAffinity` Auto-Combo menghalakan permintaan berulang kembali kepada sambungan yang menyimpan awalan dalam cache, dan titik akhir baca sahaja `/v1/auto-combo/{channel}/candidates` mendedahkan kumpulan calon langsung saluran `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)。
- **⚡ Prestasi & infrastruktur setempat** — Redis setempat satu klik, penyebar geganti Cloudflare Workers / Deno Deploy, Bifrost & Mux sebagai perkhidmatan terbenam yang diselia. → [Perkhidmatan Terbenam](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 Turut disertakan** — rangka kerja pemalam + pasaran, rangka kerja kemahiran Omni/Agent/GitHub, integrasi peti besi Obsidian (22 alat MCP), API Batch & Files yang serasi dengan OpenAI, cache respons semantik, gamifikasi dengan papan pendahulu, penemuan ejen ACP (15 ejen terbina dalam), pengeksportan log berjadual ke BigQuery, fan-out selari berbilang model `auto/chaos`, jambatan bot Telegram, pengurus versi dalam aplikasi dan kedudukan penyedia percuma LMArena-ELO. → [Dokumentasi](docs/README.md)
## 🤖 CLI & Ejen Pengekodan Serasi
> Satu konfigurasi — `http://localhost:20128/v1` — dan **setiap** IDE AI atau CLI berjalan pada model percuma & kos rendah.
+ juga berfungsi dengan · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · mana-mana alat serasi OpenAI
📖 Persediaan setiap alat untuk semua 39 alat (28 CLI Code + 11 CLI Agents) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Plugin OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Lancarkan mana-mana CLI yang disokong melalui OmniRoute dengan satu arahan** — tiada fail konfigurasi ditulis,
kelayakan disuntik setiap proses, Qwen/Gemini mendapat direktori rumah terasing sementara:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# Atau pilih penyedia+model secara interaktif dan tulis konfigurasi alat itu sendiri:
omniroute configure codex # juga: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Setiap arahan menghormati konteks jauh aktif (`omniroute connect `), `--dry-run`
memaparkan pratonton persekitaran/argumen tepat tanpa melaksanakan, dan `--api-key-env NAME` memastikan rahsia tidak
masuk dalam sejarah shell anda. → [Integrasi CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 388 Penyedia AI — 153 Ditandai sebagai Percuma dalam Katalog
> **388 penyedia berdaftar** merentasi koleksi kanonik chat, media, carian, setempat, ejen awan dan sistem, termasuk **153 yang membawa metadata penemuan `hasFree: true`**. Daftar model chat merangkumi **239 penyedia / 3,059 pasangan penyedia-model berbeza / 1,475 ID model mentah**; katalog bajet percuma yang berasingan mempunyai **471 baris setiap model**, **34 kumpulan berulang** dan **52 penyedia percuma selama-lamanya yang berulang/tanpa kunci**. Ini ialah penyebut yang berbeza mengikut reka bentuk; definisi dan pengiraan yang dinyahgandakan mengikut kumpulan tersedia dalam [Rujukan Penyedia](docs/reference/PROVIDER_REFERENCE.md) dan [Peringkat Percuma](docs/reference/FREE_TIERS.md).
### 🏢 Setiap makmal utama — melalui satu titik akhir
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…dan 350+ lagi — setiap ikon diselesaikan secara langsung daripada katalog penyedia papan pemuka. 📖 [Rujukan Penyedia](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Percuma Selama-lamanya — $0, tanpa kad
OpenCode Zen DeepSeek V4, Nemotron 3 Tiada had token
Kilo Code Penghala automatik, Tencent Hy3 Percuma selama-lamanya
### 🧩 Baharu: OmniRoute dalam VS Code's native Copilot Chat
> Tiada bar sisi baharu, tiada sembang UI baharu — setiap model yang dihidangkan OmniRoute dipaparkan terus dalam**Copilot Pemilih model Chat yang telah anda gunakan** . Sejak Kod VS 1.122, model pembekal berfungsi tanpa log masuk GitHub atau langganan Copilot — mod ejen, panggilan alat dan penglihatan, secara percuma.
Pasangkan** [OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** sambungan, halakannya pada pelayan OmniRoute anda (lalai kepada `localhost:20128`), kemudian buka Copilot Chat → model picker →** Urus Model…** →**OmniRoute** .
Dari dalam editor: buka** Sambungan** lihat, cari** "OmniRoute"** , klik** Pasang** — berfungsi dengan cara yang sama di kedua-dua kedai. Sumber, isu dan buku panduan penerbitan secara langsung di [diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [VS Kod Copilot Panduan sembang](docs/guides/VSCODE-COPILOT.md) — persediaan, perkara yang ditunjukkan oleh pemilih, papan pemuka dalam tab, penyelesaian masalah
### 🎩 Baharu: OmniRouteTray — gerbang anda, tinggal dalam bar menu
> `omniroute serve` paling gembira bila sentiasa on.** [OmniRouteTray](https://github.com/zoispag/omniroute-tray)** mengubahnya menjadi aplikasi set-dan-lupakan menu-bar untuk macOS: ia memulakan pelayan, memastikan ia hidup sepanjang but semula, mengemas kininya pada tempatnya dan meletakkan belanjawan token langsung anda dengan satu klik sahaja —** tiada tingkap terminal dibiarkan terbuka, tiada `npm install -g omniroute` untuk menjaga anak.**
Dibina dengan [Tauri v2](https://v2.tauri.app/) (teras Rust sebesar ralat pembulatan), ia menghantar masa jalan Node 24 yang ditandatangani sendiri dan mengurus pemasangan OmniRoute milik apl, jadi ia tidak pernah melawan `node`/`bun` global anda. Ia** berkongsi konfigurasi dan pangkalan data `~/.omniroute/` anda yang sedia ada** — jadi ia adalah OmniRoute yang sama yang telah anda jalankan, hanya dengan memakai topi. 🎩
Apa yang dilakukannya
Bagaimana
🟢 Mengawasi pelayan
Memunculkan omniroute serve , menggunakan contoh yang sudah berjalan dan bukannya menduplikasikannya
📊 Penggunaan langsung sepintas lalu
Bar kuota pembekal, had Claude session/weekly dengan kira detik tetapan semula, pecahan kos 30 hari
🔄 Autokemas kini di tempat
Pemasangan berperingkat, pertukaran atom, rollback apabila gagal — sentiasa pada keluaran terbaharu
🚀 Mulakan pada log masuk
Pelancaran pilihan semasa log masuk; dulang sahaja, tiada ikon dok
🩺 Doktor & log
Diagnostik satu klik dan akses log pelayan
```sh
brew install --cask zoispag/tap/omniroute-tray
```
Lebih suka muat turun? Dapatkan .dmg terkini daripada
Melepaskan . Sumber, isu dan binaan
docs live di zoispag/omniroute-tray.
💛 Projek komuniti oleh @zoispag — bukan keluaran OmniRoute rasmi.
> Selain pelayan, OmniRoute ialah **kokpit baris perintah lengkap** dengan **80+ perintah**, serta protokol ejen terbuka supaya ejen AI boleh mengendalikannya **secara kendiri**.
### ⌨️ CLI sebenar (bukan sekadar `start`)
```bash
omniroute # sediakan get laluan + papan pemuka (port 20128)
omniroute chat # klien sembang TUI interaktif (garis condong: /model /combo /skill /memory)
omniroute setup # bestari penggunaan kali pertama berpandu
omniroute doctor # diagnosis penyedia, port, kebergantungan natif
```
### 🛰️ Mod jauh — jalankan CLI di sini, OmniRoute pada VPS
OmniRoute berada pada pelayan? Kendalikannya daripada komputer riba anda menggunakan **CLI yang sama**. Log masuk sekali
dengan token akses berskop; selepas itu, setiap perintah akan menyasarkan pelayan jauh.
```bash
omniroute connect 192.168.0.15 # kata laluan → token berskop, disimpan sebagai konteks
omniroute models # ← dijalankan pada pelayan JAUH
omniroute configure codex # ← memilih model jauh, menulis profil Codex setempat
omniroute tokens create --name ci --scope read # jana token yang lebih terhad untuk mesin lain
omniroute contexts use default # ← bertukar kembali kepada pelayan setempat
```
Token mempunyai skop `read` / `write` / `admin`; laluan yang mencetuskan proses kekal terhad kepada gelung balik sahaja.
📖 [Mod Jauh](docs/guides/REMOTE-MODE.md)
### 🤝 Sambungkan ejen — dan ia mengawal OmniRoute sendiri
Dedahkan OmniRoute melalui **MCP**, **A2A**, **REST API**, **webhooks** atau **CLI jauh** — mana-mana ejen yang berkeupayaan (atau kod anda sendiri) memperoleh akses kepada keseluruhan get laluan: penghalaan, penyedia, gabungan, cache, pemampatan, memori — secara autonomi. Titik akhir HTTP di bawah disediakan melalui `http://localhost:20128`.
Antara muka
Titik akhir / perintah
Gunakannya untuk
🧰 MCP (stdio)
omniroute --mcp
Sambungkan kepada Claude Desktop, Cursor atau mana-mana klien MCP
🌊 MCP (HTTP)
/api/mcp/stream
MCP jauh — 110 alat, 33 skop (penguatkuasaan secara ikut serta), jejak audit penuh
📡 MCP (SSE)
/api/mcp/sse
Pengangkutan MCP penstriman
🤝 A2A
/.well-known/agent.json
Ejen-ke-ejen, JSON-RPC 2.0 + SSE, 6 kemahiran
🌐 REST API
/v1/*
Serasi dengan OpenAI — sembang, pembenaman, imej, audio, OCR
🔔 Webhooks
/api/webhooks
Tolak peristiwa permintaan / kuota ke Slack, Discord, Telegram atau mana-mana URL
🛰️ CLI Jauh
omniroute connect
Kendalikan tika jauh menggunakan token akses berskop
```bash
# Berikan Claude Code set alat OmniRoute lengkap melalui MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Pelayan MCP](docs/frameworks/MCP-SERVER.md) · [Pelayan A2A](docs/frameworks/A2A-SERVER.md) · [Protokol Ejen](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Jimat 15–95% Token — Secara Automatik
### 📖 Cara ia berfungsi — matematik saluran paip, seni bina & penjimatan
Gabungan bertindan lalai menjalankan `RTK → Caveman`. Apabila kedua-duanya bertindak pada muatan alat/konteks yang sama, penjimatan terkumpul:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Blok kod, URL, JSON dan data berstruktur **sentiasa dilindungi** oleh enjin pemeliharaan.
> **Mengapa menggunakan banyak token apabila sedikit token sudah memadai?** Setiap permintaan melalui saluran paip pemampatan OmniRoute **secara telus** — tanpa perubahan pada klien. Kini ia merupakan **susunan 12 enjin boleh gubah** yang berjalan mengikut turutan dan boleh digabungkan mengikut kombinasi penghalaan — dibina berdasarkan idea daripada [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua), dan [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 Susunan 12 enjin
Enjin berjalan mengikut turutan saluran paip; setiap satunya boleh dihidupkan atau dimatikan dan dikonfigurasikan secara berasingan mengikut kombinasi:
#
Enjin
Fungsinya
1
Session-Dedup
Menggugurkan kandungan yang diulang merentas giliran (beralamat kandungan, merentas giliran)
2
CCR
Mengarkibkan blok besar di sebalik penanda pengambilan, yang diambil apabila diperlukan
3
Lite
Pemangkasan ruang kosong + URL imej (asas dengan kependaman rendah)
4
RTK
Penapisan, deduplikasi & pemangkasan hasil alat secara pintar (sedar arahan)
5
Responses Tool Output
JSON berasaskan lossless + pemampatan diagnostik terhad untuk output shell/tampalan/carian/binaan (Responses API)
6
Headroom
Pemadatan lossless tatasusunan JSON berbentuk jadual (~30%) melalui codec GCF yang dibekalkan bersama
7
Relevance
Pemberian skor ayat ekstraktif berdasarkan pertanyaan pengguna terakhir
8
Caveman
Pemampatan prosa berasaskan peraturan (~65–75% pada output)
9
Aggressive
Peringkasan + penuaan progresif giliran lama
10
LLMLingua-2
Pangkasaan semantik ML melalui MobileBERT ONNX — selamat untuk kod, tak segerak
11
Ultra
Pemangkasan token heuristik dengan peringkat model kecil (SLM) pilihan
12
OmniGlyph
Pengekodan konteks sebagai imej secara eksperimen untuk Claude Fable 5 yang diukur pada talian Anthropic terus; transformer GPT 5.6 kekal fail-closed sementara menunggu resit penyedia. Empat profil pemampatan (lalai agresif, seimbang, selamat untuk pengekodan, laluan terus) (paling agresif; ikut serta)
Blok kod, URL dan data berstruktur **sentiasa dipelihara** dengan ketepatan bait. **Praset satu klik** menggabungkan enjin:
Mod
Penjimatan
Terbaik untuk
🪶 Lite
~15%
Lalai selamat yang sentiasa aktif
🪨 Standard (Caveman)
~30%
Pengekodan harian
⚡ Aggressive
~50%
Sesi panjang yang banyak menggunakan alat
🔥 Ultra
~75%
Penjimatan maksimum
🧰 RTK
60–90%
Output shell/ujian/binaan/git
🔗 Stacked (RTK → Caveman)
78–95%
Gesaan bercampur + log alat
**Contoh sebenar — mod Standard:**
> **Sebelum (69 token):** _"Sebab komponen React anda dirender semula berkemungkinan kerana anda mencipta rujukan objek baharu pada setiap kitaran render. Apabila anda menghantar objek sebaris sebagai prop, perbandingan cetek React menganggapnya sebagai objek yang berbeza setiap kali, lalu mencetuskan render semula. Saya mengesyorkan penggunaan useMemo untuk memo objek tersebut."_
>
> **Selepas (19 token):** _"Rujukan objek baharu pada setiap render. Prop objek sebaris = rujukan baharu = render semula. Balut dengan useMemo."_
>
> **Jawapan yang sama. 72% lebih sedikit token. Tiada kehilangan ketepatan.** ✅
**Contoh PT-BR — mod [Troglodita](https://github.com/leninejunior/troglodita):**
> **Sebelum (42 token):** _"Masalahnya ialah komponen sedang dipaparkan semula kerana rujukan objek baharu sedang dicipta pada setiap kitaran pemaparan. Saya mengesyorkan penggunaan useMemo."_
>
> **Selepas (12 token):** _"Paparan semula: ref baharu setiap kitaran (objek sebaris dicipta semula). Gunakan `useMemo`."_
>
> **Jawapan yang sama. ~70% kurang token. Ketepatan teknikal kekal utuh.** ✅
### 🎚️ Melangkaui enjin — gaya output, dail adaptif & kawalan setiap permintaan
12 enjin di atas mengecilkan perkara yang **masuk**. Tiga lapisan tambahan membentuk **cara**, **masa**, dan perkara yang keluar:
- **🪄 Gaya Output** _(pengemudian paksi output)_ — menyuntik arahan pembentukan respons yang deterministik dan selamat cache; boleh digabungkan, setiap satu pada keamatan `lite` / `full` / `ultra`. Menambah gaya hanya memerlukan satu entri pendaftaran:
- **Prosa ringkas** — buang pengisi / artikel / kata-kata berwaspada; kekalkan kandungan teknikal dengan tepat.
- **Kurangkan kod** — YAGNI "pembangun senior malas": perubahan berfungsi paling kecil, tanpa perancah yang tidak diminta.
- **Ikat ekor (pembangun senior malas)** — naikkan tahap YAGNI, baiki punca akar, hasilkan diff berfungsi yang paling kecil.
- **Saya menghidap ADHD (utamakan tindakan)** — tindakan seterusnya didahulukan, langkah bernombor, satu langkah seterusnya yang konkrit, tanpa mukadimah.
- **CJK ringkas (文言)** — gaya ultra-ringkas Cina klasik (terhad mengikut locale kepada `zh`).
- **🎯 Bajet konteks adaptif** _(dail)_ — bukannya satu ambang token hidup/mati, tingkatkan enjin yang paling murah dan paling kurang kehilangan hanya setakat yang diperlukan untuk **memuatkan tetingkap konteks model**. Dasar: `reserve-output` (lalai, sedar-model) · `percentage` · `absolute`. Mod: `floor` (jamin muat) · `replace-autotrigger` (pilihan eksplisit anda diutamakan) · `off` (ambang legasi).
- **🎛️ Tempat pemampatan diputuskan** _(keutamaan, tinggi → rendah)_ — pengepala `x-omniroute-compression` setiap permintaan › penggantian routing-combo › profil bernama aktif › pencetus automatik / adaptif › lalai panel › off. Pelan yang digunakan dipantulkan semula dalam pengepala respons `X-OmniRoute-Compression: ; source=`.
Cetuskan secara automatik mengikut ambang token, hidupkan dail adaptif, tetapkan profil bernama, tetapkan satu permintaan khusus, atau berikan saluran paip bagi setiap routing combo — mana-mana yang paling sesuai dengan beban kerja. **Harness penilaian** luar talian pilihan (`npm run eval:compression`) menilai kesetiaan berbanding penjimatan pada korpus yang dipinkan sebelum anda mempromosikan perubahan.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Mula Pantas
**1) Pasang & jalankan**
```bash
npm install -g omniroute
omniroute
```
> 💡 Nampak `npm warn ERESOLVE` atau amaran peer-dep? [Amaran tersebut tidak berbahaya](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **Menggunakan npm 11 atau lebih baharu?** npm mungkin menyekat skrip kitar hayat pakej melainkan skrip tersebut dibenarkan. `postinstall` OmniRoute (`node scripts/build/postinstall.mjs`) diperlukan untuk menyediakan fail runtime natifnya. Benarkan pakej yang dinamakan dalam amaran npm ketika memasang secara global. Untuk set pakej yang dilaporkan oleh OmniRoute 3.8.54:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Untuk menggunakan semula senarai benarkan ini bagi pemasangan global akan datang, konfigurasikannya sekali, kemudian pasang seperti biasa:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> Senarai kebergantungan boleh berubah antara keluaran; jika npm melaporkan senarai yang berbeza, gunakan nama pakej daripada amaran tersebut. Membenarkan sesuatu pakej membolehkan skrip pemasangannya dijalankan.
> **Menggunakan Gemini Web atau penyedia kuki web yang lain?** Pakej npm menyertakan
> Playwright tetapi bukan binari Chromiumnya. Lihat nota
> [Persediaan Chromium Playwright](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> sebelum membuat permintaan penyedia web yang pertama.
Papan pemuka di `http://localhost:20128` · API di `http://localhost:20128/v1`.
**2) Sambungkan penyedia yang layak menggunakan akaun anda sendiri**
Papan pemuka → **Providers** → pilih penyedia yang terma dan kuota semasanya sesuai dengan kes penggunaan anda → tambahkan kunci APInya atau lengkapkan aliran akaunnya. Tahap percuma mungkin memerlukan pendaftaran, kelulusan atau kaedah pembayaran. Semak [Panduan Tahap Percuma](docs/getting-started/FREE-TIERS-GUIDE.md); ketersediaan tanpa kunci tidak dijamin, dan penyedia yang ditandakan `tos: avoid` dikecualikan daripada `auto` secara lalai.
**3) Halakan alat pengekodan anda**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Sahkan ia berfungsi**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Anda sepatutnya melihat model yang disambungkan disenaraikan. 🎉 Itu sahaja — mula mengekod, dan OmniRoute akan menghalakan serta bertukar ganti secara automatik untuk anda.
Jika klien anda tidak dapat menghantar pengepala tersuai, OmniRoute turut menyediakan alias keserasian bertoken:
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Gunakan ini hanya untuk klien yang tidak dapat melampirkan `Authorization: Bearer ...`. Pengesahan pengepala kekal sebagai mod pilihan.
## 📦 Lebih banyak kaedah pemasangan — Docker, sumber, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` mengikuti versi stabil SemVer **yang diterbitkan** tertinggi. Ia tidak menjejaki `main` git. Tetapkan `:X.Y.Z` untuk GitOps. Lihat [Saluran Keluaran Docker](docs/guides/DOCKER_GUIDE.md#release-channels). Imej tersebut menetapkan **`OMNIROUTE_MEMORY_MB=1024`**. Itu mencukupi untuk papan pemuka dan sembang ringan. **Ejen pengekodan** (`POST /v1/responses` daripada Claude Code, Codex, Grok, …) memerlukan heap V8 yang jauh lebih besar atau proses akan mengalami `FATAL ERROR` pada sekitar 12 GiB apabila dua konteks panjang bertindih. Saizkan bekas melebihi heap (penimbal natif berada di luar V8):
| Beban kerja | Heap (`-e OMNIROUTE_MEMORY_MB`) | Bekas (`--memory`) |
| ------------------------------------ | ------------------------------- | ------------------ |
| Papan pemuka / sembang ringan | `1024` (lalai imej) | ≥2 g |
| Satu ejen pengekodan | `8192` | ≥10 g |
| Dua `/v1/responses` panjang serentak | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Jadual penuh: [Panduan Docker — RAM masa jalan](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Saluran Docker prakeluaran:** `diegosouzapw/omniroute:next` dan
> `diegosouzapw/omniroute:next-web` mengikuti cabang `release/v*` lalai semasa.
> Tag boleh ubah ini hanya bertujuan untuk menguji pembaikan yang belum dikeluarkan dan
> **tidak disokong untuk penggunaan produksi**. Lihat
> [Saluran Keluaran Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
`bun install` standard dan pemasangan global (`bun install -g omniroute`) disokong melalui pengesanan masa jalan Bun:
- **`bun:sqlite` terbina dalam**: OmniRoute menggunakan pemacu `bun:sqlite` terbina dalam Bun apabila dijalankan di bawah Bun, dengan kembali menggunakan `better-sqlite3` pada Node.js atau `sql.js`.
- **Pemilihan pembundel Webpack secara automatik dalam pembangunan**: Pembangunan (`bun run dev`) mengesan Bun secara automatik dan menyahdayakan Turbopack untuk menggunakan Webpack bagi mengelakkan ketidakserasian pengikatan V8 natif. Binaan produksi (`bun run build`) mengikuti `OMNIROUTE_USE_TURBOPACK` sama seperti pada Node: Turbopack secara lalai, `OMNIROUTE_USE_TURBOPACK=0` untuk membina dengan Webpack (`Dockerfile.bun` menyediakannya sebagai `--build-arg`).
- **Dockerfile Bun khusus**: `Dockerfile.bun` berbilang peringkat untuk pelaksanaan produksi Bun natif (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Pasang dan jalankan dengan Bun
bun install
bun run dev
```
**🛠️ Daripada sumber**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# Menggunakan Nix flakes
nix develop
npm run dev
# Atau menggunakan devbox
devbox run npm run dev
```
📖 [Panduan Docker](docs/guides/DOCKER_GUIDE.md) — Profil Compose, HTTPS Caddy, terowong Cloudflare.
**🦭 Podman**
```bash
# 1. Sediakan direktori data yang dilekapkan melalui bind
mkdir -p data
# 2. Linux + Podman rootless tempatan sahaja (jangan sekali-kali gunakan klien Podman Machine jauh):
podman unshare chown 1000:1000 ./data
# 3. Tetapkan petunjuk masa jalan, bina imej Compose tempatan dan mulakan
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
Pada macOS atau Windows, Podman menggunakan Podman Machine jauh: langkau `podman unshare` dan
ikuti [panduan direktori data khusus topologi](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Panduan Podman](contrib/podman/README.md) — Binaan Compose, Podman Machine dan
persediaan Quadlet Linux/systemd.
**⚡ Pemasangan lebih pantas / ringan (langkau binaan natif)**
Enjin SQLite natif (`better-sqlite3`) ialah kebergantungan **pilihan**, jadi pemasangan
global tidak akan tersekat kerana pengkompilan daripada sumber: ia menggunakan binari prabina apabila
tersedia yang sepadan dengan platform/Node anda, dan jika tidak, akan beralih secara telus kepada enjin JavaScript tulen
(`node:sqlite` pada Node 22+, jika tidak, WASM `sql.js` yang disertakan) — tiada alat binaan diperlukan.
Untuk melangkau sepenuhnya pemanasan natif selepas pemasangan (CI, tanpa paparan atau mesin perlahan):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 turut melangkaunya
```
Untuk pemasangan terpantas, utamakan **pnpm** (storan beralamat kandungan + pautan keras — lihat di atas).
Untuk masa jalan tanpa papan pemuka dan tanpa paparan, gunakan profil Docker `base` (di atas) atau
[Panduan Termux](docs/guides/TERMUX_GUIDE.md). CLI dan papan pemuka web disediakan oleh
proses yang sama pada satu port, jadi buat masa ini tiada pakej CLI sahaja yang berasingan.
Strategi liputan ujian untuk lebih 60,000 pengisytiharan ujian statik merentas lebih 8,400 fail ujian yang dijejaki
# ⭐ Penyumbang Utama
> OmniRoute dibentuk oleh komuniti sumber terbuka yang bersemangat. Individu-individu ini telah memberikan sumbangan luar biasa yang memberi kesan langsung kepada kualiti, kestabilan dan capaian projek. **Terima kasih.**
### Penyumbang luaran mengikut pull request yang digabungkan
Banci diambil pada 2026-11-03 03:01:19 UTC dengan tip langsung release/v3.8.5305bc048d6c. Banci GitHub GraphQL berhalaman mengandungi 9,947 PR yang digabungkan: 4,130 oleh pemilik repositori, 240 oleh Dependabot, 6 oleh bot/aplikasi lain dan 5,571 PR luaran daripada 883 penyumbang berbeza. “Baris diubah” ialah penambahan + pemadaman GitHub dan merangkumi fail yang dijana, lockfile, katalog, terjemahan serta dokumentasi; ia mengukur churn, bukan LOC yang ditulis. 53 PR melaporkan diff GitHub melebihi 500,000 baris (contohnya #13399, satu penambahan provider, menyenaraikan 2,347 fail yang diubah), yang meningkatkan beberapa jumlah di atas. Kedudukan seri dikongsi bersama.
### Komit yang dikaitkan dengan GitHub
Disemak semula pada 2026-11-03 02:09:16 UTC: Komit yang dikaitkan dengan GitHub seperti yang dilaporkan oleh Contributors API repositori untuk cawangan lalai release/v3.8.53. API tersebut mengembalikan 903 identiti (429 pengguna, 2 bot, 472 tanpa nama); jadual ini mengecualikan penyelenggara, bot dan identiti tanpa nama, serta mengekalkan kedudukan seri dalam pertandingan. Jadual ini berbeza daripada kedua-dua kedudukan PR yang digabungkan di atas dan bancian metadata Git di bawah.
> 🙏 Ciri, pembaikan pepijat dan penambahbaikan infrastruktur daripada penyumbang ini ialah **bahagian teras** yang menjadikan OmniRoute boleh dipercayai dan kaya dengan ciri. Setiap permintaan tarik, setiap kes ujian dan setiap fail terjemahan i18n adalah penting. Sumber terbuka dibina oleh orang seperti mereka.
---
## 💖 Penaja
Setinggi-tinggi penghargaan kepada mereka yang membiayai OmniRoute daripada poket sendiri — setiap sumbangan memastikan projek ini kekal percuma, bebas dan terus berkembang.
… dan mereka yang lain yang memilih untuk kekal tanpa nama 💛Penaja GitHub awam disahkan semula pada 2026-10-18 melalui API GraphQL GitHub Sponsors: 11 tajaan awam (6 aktif, 5 terdahulu) daripada jumlah keseluruhan 14. Status isActive GitHub menentukan label aktif di atas; penyokong sekali bayar awam terdahulu terus diberikan penghargaan, manakala penaja persendirian kekal tanpa nama. Sumbangan melalui Ko-fi, Buy Me a Coffee, Liberapay, PIX dan mata wang kripto tidak disenaraikan kerana tiada rekod penaja awam.💖 Jadi penaja → — setiap dolar memastikan OmniRoute kekal percuma dan bebas.
## 👥 1,000+ Penyumbang
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Diaudit pada 2026-11-02 di hujung release/v3.8.53 langsung 1c7135e0fb (7,972 commit): 1,074 identiti Git manusia yang dinormalkan — 759 muncul sebagai pengarang commit (termasuk penyelenggara) dan 315 hanya dalam trailer Co-authored-by yang eksplisit. Banci ini menggunakan .mailmap, membandingkan alamat e-mel tanpa mengambil kira huruf besar atau kecil, menggabungkan alamat GitHub noreply berangka dan biasa hanya apabila alamat tersebut mengekod pemegang yang sama, mengecualikan 29 identiti bot/ejen/perkhidmatan/pemegang tempat, dan tidak menggabungkan alamat e-mel biasa semata-mata kerana nama paparannya sepadan. Audit pada 2026-08-24 menerbitkan 639; kaedah ini yang dijalankan semula pada asas audit tersebut ac02c5b42f memberikan 619, jadi peningkatan itu datang daripada penyumbang baharu, bukannya daripada kaedah yang lebih longgar.
### Cara Menyumbang
1. Fork repositori
2. Buat cabang daripada hujung `release/vX.Y.Z` **aktif** (bukan `main`) — lihat [Model Percabangan & Keluaran](docs/ops/BRANCHING_MODEL.md)
3. Cipta cabang ciri anda (`git checkout -b feat/amazing-feature`)
4. Commit perubahan anda (`git commit -m 'feat: add amazing feature'`)
5. Tolak ke cabang tersebut (`git push origin feat/amazing-feature`)
6. Buka Permintaan Tarik dengan **base = cabang `release/vX.Y.Z` tersebut**
Lihat [CONTRIBUTING.md](CONTRIBUTING.md) untuk panduan terperinci.
### Mengeluarkan Versi Baharu
```bash
# Cipta keluaran — npm publish berlaku secara automatik
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Bintang
## 🌍 StarMapper
## 🙏 Penghargaan
OmniRoute berdiri di atas bahu gergasi. Ia bermula sebagai fork daripada **[9router](https://github.com/decolua/9router)** dan port TypeScript bagi projek Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — dan sejak itu, setiap subsistem di bawah mendapat ilham daripada projek sumber terbuka yang telah mendahuluinya. Setiap satunya membentuk bahagian konkrit OmniRoute. Inilah ucapan terima kasih kami kepada semua projek tersebut. 🙏
> ⭐ bilangan bintang disahkan daripada GitHub REST API pada 3 November 2026 — berikan bintang kepada projek-projek ini. Bilangan tersebut ialah gambaran tepat pada tarikh berkenaan dan sememangnya akan berubah.
### 🧬 Asal-usul & gerbang
Sumber MIT yang diadaptasi ke dalam jambatan ChatGPT Web → Codex Responses vendored, termasuk penyesuai sesi pelayar, pembingkaian respons, penggunaan dan carian web.
Corak yang dipindahkan ke dalam pemulihan strim, alias tanpa pemikiran, carian web sandaran, had tetingkap gelongsor, penyamaran log dan aliran pelancar yang diperkukuh.
Lalai transform yang serasi dengan Claude Code dan tingkah laku pengepala pengebilan yang digeneralisasikan ke dalam jambatan dipacu konfigurasi OmniRoute.
Pemetaan model Grok, penjana Statsig fake-TypeError, lalai permintaan dan peranti, serta pemproses respons NDJSON telah diadaptasi secara ketara ke dalam pelaksana Grok Web OmniRoute.
Sumber kod transitif utama di sebalik grok2api-merged; pelaksanaan model, pengepala, muatan, Statsig dan pemprosesnya dikekalkan dalam susur galur Grok Web.
Sumber MIT asas untuk lalai muatan dan peranti Grok, penjana Statsig, serta pemproses result.response yang diteruskan melalui TQZHR dan grok2api-merged.
Sumber transitif yang dikreditkan oleh grok2api-merged untuk lapisan kumpulan proksi; OmniRoute mengekalkan notis susur galur tersebut tetapi tidak mendakwa pemindahan kumpulan proksi dalam pelaksana Grok Webnya yang berhad.
Pelaksanaan Grok Web asalnya dirujuk untuk reka bentuk hulu HTTP/pelayarnya; laluan HTTP langsungnya berasal daripada GrokProxy, jadi tiada pemindahan kod bebas didakwa.
Projek tular "mengapa gunakan banyak token jika beberapa token sudah memadai" — falsafah pertuturan caveman ini menggerakkan mod pemampatan standard kami serta lebih 30 peraturan pengisi/pemadatan.
Penyelidikan pemampatan prompt (LLMLingua / LLMLingua-2) — mengilhamkan enjin llmlingua kami yang tak segerak, selamat untuk kod dan terbuka apabila gagal.
Pemampatan token PT-BR — menggerakkan pek bahasa pt-BR kami: pengurangan pleonasme dan penyingkiran pengisi yang ditala untuk tatabahasa Portugis-Brazil.
Kemahiran pengekodan YAGNI "pembangun kanan yang malas" yang tular — mengilhamkan Gaya Output less-code kami: pengarahan perubahan berfungsi paling kecil yang mengurangkan kod _dijana_ (saudara paksi output kepada prosa ringkas Caveman).
Pemampatan output peka kandungan mengikut jenis fail dengan pembatalan yang peka kegagalan — mengesahkan penghantaran mengikut jenis dan langkauan keuntungan minimum kami.
JSON berkolum Rust + pengambilan semula beralamat kandungan + deduplikasi merentas mesej — mengesahkan reka bentuk enjin headroom/ccr/session-dedup kami serta invarian "bentuk termampat tidak bergantung pada kedudukan" yang stabil untuk cache.
Kit alat TypeScript Compiler API — mengilhamkan penyingkiran komen berasaskan penghurai kami yang mengekalkan literal rentetan, templat dan ungkapan nalar.
Pemintasan/analisis MITM trafik pembantu pengekodan ↔ LLM memaklumkan keperluan awal Traffic Inspector. Empat modul yang sebelum ini diperoleh — penggabungan SSE, penormalan perbualan, penyamaran rahsia dan sanitasi pengepala — telah digantikan dengan pelaksanaan bebas dan clean-room berdasarkan piawaian protokol awam. Dua permukaan host-passthrough (passthrough.ts dan _internal/bypass.cjs) kekal sebagai pelaksanaan dalaman OmniRoute yang diklasifikasikan secara berasingan; ia tidak ditulis semula sebagai sebahagian daripada penggantian tersebut.
Penghalaan proksi telus bagi setiap proses — memberi inspirasi kepada penamatan MITM yang selamat daripada ranap, tamat masa melahu soket, atribusi proses /proc dan tangkapan TPROXY kami.
Senarai tersusun pustaka dengan tetapan lalai selamat yang membimbing pilihan keselamatan kami (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Mengenal pasti permukaan kuota Grok Build; OmniRoute kemudiannya mengesahkan dan membetulkan format wire langsung secara bebas.
## 📄 Lesen
Lesen MIT - lihat [LESEN](LESEN) untuk butiran.
---
**[⬆ Kembali ke atas](#-omniroute)** · Dibina dengan ❤️ untuk komuniti AI sumber terbuka.
Dicipta oleh Diego Souza · OmniRoute v3.8.54 · Node ≥22.22.2 · Lesen MIT · omniroute.online