OmniRoute Dashboard # ๐Ÿš€ OmniRoute โ€” ืฉืขืจ ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ื”ื—ื™ื ืžื™ืช ### ืœืขื•ืœื ืืœ ืชืคืกื™ืง ืœืงื•ื“. ื ื™ืชื•ื‘ ื—ื›ื ืœื“ื’ืžื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช **ื‘ื—ื™ื ื ื•ื‘ืขืœื•ืช ื ืžื•ื›ื”** ืขื ื—ื–ืจื” ืื•ื˜ื•ืžื˜ื™ืช. _ืฉืจืช ื”-API ื”ืื•ื ื™ื‘ืจืกืœื™ ืฉืœืš - ื ืงื•ื“ืช ืงืฆื” ืื—ืช, 36+ ืกืคืงื™ื, ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื”._ **ื”ืฉืœืžื•ืช ืฆ'ืื˜ โ€ข ื”ื˜ืžืขื•ืช โ€ข ื™ืฆื™ืจืช ืชืžื•ื ื•ืช โ€ข ืื•ื“ื™ื• โ€ข ื“ื™ืจื•ื’ ืžื—ื“ืฉ โ€ข 100% TypeScript** --- ### ๐Ÿค– ืกืคืง AI ื‘ื—ื™ื ื ืขื‘ื•ืจ ืกื•ื›ื ื™ ื”ืงื™ื“ื•ื“ ื”ืžื•ืขื“ืคื™ื ืขืœื™ืš _ื—ื‘ืจ ื›ืœ ื›ืœื™ IDE ืื• CLI ื”ืžื•ืคืขืœ ืขืœ ื™ื“ื™ AI ื“ืจืš OmniRoute - ืฉืขืจ API ื‘ื—ื™ื ื ืœืงื™ื“ื•ื“ ื‘ืœืชื™ ืžื•ื’ื‘ืœ._
OpenClaw
OpenClaw

โญ 205K
NanoBot
NanoBot

โญ 20.9K
PicoClaw
PicoClaw

โญ 14.6K
ZeroClaw
ZeroClaw

โญ 9.9K
IronClaw
IronClaw

โญ 2.1K
OpenCode
OpenCode

โญ 106K
Codex CLI
Codex CLI

โญ 60.8K
Claude Code
Claude Code

โญ 67.3K
Gemini CLI
Gemini CLI

โญ 94.7K
Kilo Code
Kilo Code

โญ 15.5K
๐Ÿ“ก ื›ืœ ื”ืกื•ื›ื ื™ื ืžืชื—ื‘ืจื™ื ื“ืจืš http://localhost:20128/v1 ืื• http://cloud.omniroute.online/v1 , โ€”limited one config ืžื›ืกื” --- [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute) [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute) [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE) [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online) [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) [๐ŸŒ Website](https://omniroute.online) โ€ข [๐Ÿš€ Quick Start](#-quick-start) โ€ข [๐Ÿ’ก Features](#-key-features) โ€ข [๐Ÿ“– Docs](#-documentation) โ€ข [๐Ÿ’ฐ Pricing](#-pricing-at-a-glance) โ€ข [๐Ÿ’ฌ WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) ๐ŸŒ **Available in:** ๐Ÿ‡บ๐Ÿ‡ธ [English](README.md) | ๐Ÿ‡ง๐Ÿ‡ท [Portuguรชs (Brasil)](README.pt-BR.md) | ๐Ÿ‡ช๐Ÿ‡ธ [Espaรฑol](README.es.md) | ๐Ÿ‡ซ๐Ÿ‡ท [Franรงais](README.fr.md) | ๐Ÿ‡ฎ๐Ÿ‡น [Italiano](README.it.md) | ๐Ÿ‡ท๐Ÿ‡บ [ะ ัƒััะบะธะน](README.ru.md) | ๐Ÿ‡จ๐Ÿ‡ณ [ไธญๆ–‡ (็ฎ€ไฝ“)](README.zh-CN.md) | ๐Ÿ‡ฉ๐Ÿ‡ช [Deutsch](README.de.md) | ๐Ÿ‡ฎ๐Ÿ‡ณ [เคนเคฟเคจเฅเคฆเฅ€](README.in.md) | ๐Ÿ‡น๐Ÿ‡ญ [เน„เธ—เธข](README.th.md) | ๐Ÿ‡บ๐Ÿ‡ฆ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README.uk-UA.md) | ๐Ÿ‡ธ๐Ÿ‡ฆ [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | ๐Ÿ‡ฏ๐Ÿ‡ต [ๆ—ฅๆœฌ่ชž](README.ja.md) | ๐Ÿ‡ป๐Ÿ‡ณ [Tiแบฟng Viแป‡t](README.vi.md) | ๐Ÿ‡ง๐Ÿ‡ฌ [ะ‘ัŠะปะณะฐั€ัะบะธ](README.bg.md) | ๐Ÿ‡ฉ๐Ÿ‡ฐ [Dansk](README.da.md) | ๐Ÿ‡ซ๐Ÿ‡ฎ [Suomi](README.fi.md) | ๐Ÿ‡ฎ๐Ÿ‡ฑ [ืขื‘ืจื™ืช](README.he.md) | ๐Ÿ‡ญ๐Ÿ‡บ [Magyar](README.hu.md) | ๐Ÿ‡ฎ๐Ÿ‡ฉ [Bahasa Indonesia](README.id.md) | ๐Ÿ‡ฐ๐Ÿ‡ท [ํ•œ๊ตญ์–ด](README.ko.md) | ๐Ÿ‡ฒ๐Ÿ‡พ [Bahasa Melayu](README.ms.md) | ๐Ÿ‡ณ๐Ÿ‡ฑ [Nederlands](README.nl.md) | ๐Ÿ‡ณ๐Ÿ‡ด [Norsk](README.no.md) | ๐Ÿ‡ต๐Ÿ‡น [Portuguรชs (Portugal)](README.pt.md) | ๐Ÿ‡ท๐Ÿ‡ด [Romรขnฤƒ](README.ro.md) | ๐Ÿ‡ต๐Ÿ‡ฑ [Polski](README.pl.md) | ๐Ÿ‡ธ๐Ÿ‡ฐ [Slovenฤina](README.sk.md) | ๐Ÿ‡ธ๐Ÿ‡ช [Svenska](README.sv.md) | ๐Ÿ‡ต๐Ÿ‡ญ [Filipino](README.phi.md)
--- ## ๐Ÿ–ผ๏ธ
OmniRoute
--- ## ๐Ÿ“ธ
... | # | # | | ----- | ---------------------------------------- | | **1** | ![1](docs/screenshots/01-providers.png) | | **2** | ![2](docs/screenshots/02-combos.png) | | **3** | ![3](docs/screenshots/03-analytics.png) | | **4** | ![4](docs/screenshots/04-health.png) | | **5** | ![5](docs/screenshots/05-translator.png) | | **6** | ![6](docs/screenshots/06-settings.png) | | **7** | ![7](docs/screenshots/07-cli-tools.png) | | **8** | ![8](docs/screenshots/08-usage.png) | | **9** | ![9](docs/screenshots/09-endpoint.png) |
--- ## ๐Ÿค” ืœืžื” OmniRoute? **ื”ืคืกื™ืงื• ืœื‘ื–ื‘ื– ื›ืกืฃ ื•ืœื”ื’ื™ืข ืœื’ื‘ื•ืœื•ืช:** - ืžื›ืกืช ื”ืžื ื•ื™ื™ื ืžืกืชื™ื™ืžืช ืœืœื ืฉื™ืžื•ืฉ ื‘ื›ืœ ื—ื•ื“ืฉ - ืžื’ื‘ืœื•ืช ืงืฆื‘ ืขื•ืฆืจื•ืช ืื•ืชืš ื‘ืงื™ื“ื•ื“ ื‘ืืžืฆืข - ืžืžืฉืงื™ API ื™ืงืจื™ื ($20-50 ืœื—ื•ื“ืฉ ืœื›ืœ ืกืคืง) - ืžืขื‘ืจ ื™ื“ื ื™ ื‘ื™ืŸ ืกืคืงื™ื **OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - โœ… **ืžืงืกื ืžื ื•ื™ื™ื** - ืขืงื•ื‘ ืื—ืจ ืžื›ืกืช, ื”ืฉืชืžืฉ ื‘ื›ืœ ืกื™ื‘ื™ื•ืช ืœืคื ื™ ื”ืื™ืคื•ืก - โœ… **ื”ื—ื–ืจ ืื•ื˜ื•ืžื˜ื™** - ืžื ื•ื™ โ†’ ืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื, ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื” - โœ… **ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** - ืกื™ื‘ื•ื‘ ื‘ื™ืŸ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง - โœ… **ืื•ื ื™ื‘ืจืกืœื™** - ืขื•ื‘ื“ ืขื ืงืœื•ื“ ืงื•ื“, Codex, Gemini CLI, Cursor, Cline, OpenClaw, ื›ืœ ื›ืœื™ CLI --- ## ๐Ÿ“ง ืชืžื™ื›ื” > ๐Ÿ’ฌ **ื”ืฆื˜ืจืคื• ืœืงื”ื™ืœื” ืฉืœื ื•!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) โ€” ืงื‘ืœ ืขื–ืจื”, ืฉืชืฃ ื˜ื™ืคื™ื ื•ื”ื™ืฉืืจ ืžืขื•ื“ื›ืŸ. - **ืืชืจ**: [omniroute.online](https://omniroute.online) - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute) - **ื‘ืขื™ื•ืช**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues) - **ื•ื•ืื˜ืกืืค**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) - **ืคืจื•ื™ืงื˜ ืžืงื•ืจื™**: [9router by decolua](https://github.com/decolua/9router) --- ## ๐Ÿ”„ ืื™ืš ื–ื” ืขื•ื‘ื“ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 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] iFlow, Qwen, Kiro (unlimited) Result: Never stop coding, minimal cost ``` --- ## ๐ŸŽฏ ืžื” OmniRoute ืคื•ืชืจ - 30 ื ืงื•ื“ื•ืช ื›ืื‘ ืืžื™ืชื™ื•ืช ื•ืžืงืจื™ ืฉื™ืžื•ืฉ > **ื›ืœ ืžืคืชื— ื”ืžืฉืชืžืฉ ื‘ื›ืœื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ืžืชืžื•ื“ื“ ืขื ื”ื‘ืขื™ื•ืช ื”ืœืœื• ืžื“ื™ ื™ื•ื.** OmniRoute ื ื‘ื ืชื” ื›ื“ื™ ืœืคืชื•ืจ ืืช ื›ื•ืœืŸ - ื”ื—ืœ ืžื—ืจื™ืคื•ืช ืขืœื•ื™ื•ืช ื•ืขื“ ืœื—ืกื™ืžื•ืช ืื–ื•ืจื™ื•ืช, ืžื–ืจื™ืžื•ืช OAuth ืฉื‘ื•ืจื•ืช ื•ืขื“ ืคืขื•ืœื•ืช ืคืจื•ื˜ื•ืงื•ืœ ื•ืฆืคื™ื™ื” ืืจื’ื•ื ื™ืช.
๐Ÿ’ธ 1. "ืื ื™ ืžืฉืœื ืขื‘ื•ืจ ืžื ื•ื™ ื™ืงืจ ืื‘ืœ ืขื“ื™ื™ืŸ ืžื•ืคืจืข ืขืœ ื™ื“ื™ ื’ื‘ื•ืœื•ืช" ืžืคืชื—ื™ื ืžืฉืœืžื™ื $20-200 ืœื—ื•ื“ืฉ ืขื‘ื•ืจ Claude Pro, Codex Pro ืื• GitHub Copilot. ืืคื™ืœื• ื‘ืชืฉืœื•ื, ืœืžื›ืกื” ื™ืฉ ืชืงืจื” - 5 ืฉืขื•ืช ืฉื™ืžื•ืฉ, ืžื’ื‘ืœื•ืช ืฉื‘ื•ืขื™ื•ืช ืื• ืžื’ื‘ืœื•ืช ืชืขืจื™ืฃ ืœื“ืงื”. ืกืฉืŸ ืงื™ื“ื•ื“ ื‘ืืžืฆืข, ื”ืกืคืง ืžืคืกื™ืง ืœื”ื’ื™ื‘ ื•ื”ืžืคืชื— ืžืื‘ื“ ื–ืจื™ืžื” ื•ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ื•ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **Smart 4-Tier Fallback** - ืื ืžื›ืกืช ื”ืžื ื•ื™ื™ื ื ื’ืžืจืช, ืžืคื ื” ืื•ื˜ื•ืžื˜ื™ืช ืœืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื ืขื ืืคืก ื”ืชืขืจื‘ื•ืช ื™ื“ื ื™ืช - **ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช** - ืžืฆื™ื’ ืฆืจื™ื›ืช ืืกื™ืžื•ื ื™ื ื‘ื–ืžืŸ ืืžืช ืขื ืกืคื™ืจื” ืœืื—ื•ืจ ืžืืคืก (5 ืฉืขื•ืช, ื™ื•ืžื™, ืฉื‘ื•ืขื™) - **ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** - ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง ืขื ืกื‘ื‘ ืื•ื˜ื•ืžื˜ื™ - ื›ืืฉืจ ืื—ื“ ืื•ื–ืœ, ืขื•ื‘ืจ ืœืื—ืจ - **ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** - ืฉืจืฉืจืื•ืช ื ื™ืชื ื•ืช ืœื”ืชืืžื” ืื™ืฉื™ืช ืขื 6 ืืกื˜ืจื˜ื’ื™ื•ืช ืื™ื–ื•ืŸ (ืžื™ืœื•ื™ ืจืืฉื•ืŸ, ืกื™ื‘ื•ื‘ ืกื™ื‘ื•ื‘ื™, P2C, ืืงืจืื™, ื”ื›ื™ ืคื—ื•ืช ื‘ืฉื™ืžื•ืฉ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืœืขืœื•ืช) - **Codex Business Quotas** - ื ื™ื˜ื•ืจ ืžื›ืกื•ืช ืกื‘ื™ื‘ืช ืขื‘ื•ื“ื” ืขืกืงื™ืช/ืฆื•ื•ืชื™ืช ื™ืฉื™ืจื•ืช ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื
๐Ÿ”Œ 2. "ืื ื™ ืฆืจื™ืš ืœื”ืฉืชืžืฉ ื‘ืžืกืคืจ ืกืคืงื™ื ืื‘ืœ ืœื›ืœ ืื—ื“ ื™ืฉ API ืื—ืจ" OpenAI ืžืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ืื—ื“, ืงืœื•ื“ (ืื ืชืจื•ืคื™ืง) ืžืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ืื—ืจ, ืชืื•ืžื™ื ื‘ื ื•ืกื— ืื—ืจ. ืื ืžืคืชื— ืจื•ืฆื” ืœื‘ื—ื•ืŸ ื“ื’ืžื™ื ืžืกืคืงื™ื ืฉื•ื ื™ื ืื• ืœื—ืœื•ืฃ ื‘ื™ื ื™ื”ื, ื”ื•ื ืฆืจื™ืš ืœื”ื’ื“ื™ืจ ืžื—ื“ืฉ SDK, ืœืฉื ื•ืช ื ืงื•ื“ื•ืช ืงืฆื”, ืœื”ืชืžื•ื“ื“ ืขื ืคื•ืจืžื˜ื™ื ืœื ืชื•ืืžื™ื. ืœืกืคืงื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช (FriendLI, NIM) ื™ืฉ ื ืงื•ื“ื•ืช ืงืฆื” ืœื ืกื˜ื ื“ืจื˜ื™ื•ืช ื‘ืžื•ื“ืœ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื ืงื•ื“ืช ืงืฆื” ืžืื•ื—ื“ืช** - `http://localhost:20128/v1` ื™ื—ื™ื“ ืžืฉืžืฉ ื›-proxy ืขื‘ื•ืจ ื›ืœ 36+ ื”ืกืคืงื™ื - **ืชืจื’ื•ื ืคื•ืจืžื˜** โ€” ืื•ื˜ื•ืžื˜ื™ ื•ืฉืงื•ืฃ: OpenAI โ†” Claude โ†” Gemini โ†” Responses API - **ื—ื™ื˜ื•ื™ ืชื’ื•ื‘ื”** - ืžืกื™ืจ ืฉื“ื•ืช ืœื ืกื˜ื ื“ืจื˜ื™ื™ื (`x_groq`, `usage_breakdown`, `service_tier`) ืฉืžืคืจืงื™ื ืืช OpenAI SDK v1.83+ - **ื ื•ืจืžืœื™ื–ืฆื™ื” ืฉืœ ืชืคืงื™ื“ื™ื** โ€” ืžืžื™ืจื” `developer` โ†’ `system` ืขื‘ื•ืจ ืกืคืงื™ื ืฉืื™ื ื OpenAI; `system` โ†’ `user` ืขื‘ื•ืจ GLM/ERNIE - **Think Tag Extraction** โ€” ืžื—ืœืฅ ื‘ืœื•ืงื™ื `` ืžื“ื’ืžื™ื ื›ืžื• DeepSeek R1 ืœืชื•ืš `reasoning_content` ื”ืกื˜ื ื“ืจื˜ื™ - **ืคืœื˜ ืžื•ื‘ื ื” ืขื‘ื•ืจ ืžื–ืœ ืชืื•ืžื™ื** โ€” `json_schema` โ†’ `responseMimeType`/`responseSchema` ื”ืžืจื” ืื•ื˜ื•ืžื˜ื™ืช - **`stream` ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ื”ื™ื `false`** - ืžืชื™ื™ืฉืจ ืขื ืžืคืจื˜ OpenAI, ื”ื™ืžื ืขื•ืช SSE ื‘ืœืชื™ ืฆืคื•ื™ ื‘- Python/Rust/Go SDK
๐ŸŒ 3. "ืกืคืง ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ืฉืœื™ ื—ื•ืกื ืืช ื”ืื–ื•ืจ/ื”ืžื“ื™ื ื” ืฉืœื™" ืกืคืงื™ื ื›ืžื• OpenAI/Codex ื—ื•ืกืžื™ื ื’ื™ืฉื” ืžืื–ื•ืจื™ื ื’ื™ืื•ื’ืจืคื™ื™ื ืžืกื•ื™ืžื™ื. ืžืฉืชืžืฉื™ื ืžืงื‘ืœื™ื ืฉื’ื™ืื•ืช ื›ืžื• `unsupported_country_region_territory` ื‘ืžื”ืœืš ื—ื™ื‘ื•ืจื™ OAuth ื•-API. ื–ื” ืžืชืกื›ืœ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจ ืžืคืชื—ื™ื ืžืžื“ื™ื ื•ืช ืžืชืคืชื—ื•ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืชืฆื•ืจืช ืคืจื•ืงืกื™ ื‘ืฉืœื•ืฉ ืจืžื•ืช** - ืคืจื•ืงืกื™ ื ื™ืชืŸ ืœื”ื’ื“ืจื” ื‘-3 ืจืžื•ืช: ื’ืœื•ื‘ืœื™ืช (ื›ืœ ื”ืชืขื‘ื•ืจื”), ืœื›ืœ ืกืคืง (ืกืคืง ืื—ื“ ื‘ืœื‘ื“), ื•ืœื›ืœ ื—ื™ื‘ื•ืจ/ืžืคืชื— - **ืชื’ื™ ืคืจื•ืงืกื™ ืžืงื•ื“ื“ื™ื ื‘ืฆื‘ืข** - ืื™ื ื“ื™ืงื˜ื•ืจื™ื ื—ื–ื•ืชื™ื™ื: ๐ŸŸข ืคืจื•ืงืกื™ ื’ืœื•ื‘ืœื™, ๐ŸŸก ืคืจื•ืงืกื™ ืกืคืง, ๐Ÿ”ต ืคืจื•ืงืกื™ ื—ื™ื‘ื•ืจ, ืชืžื™ื“ ืžืฆื™ื’ ืืช ื”-IP - **ื”ื—ืœืคืช ืืกื™ืžื•ื ื™ื ืฉืœ OAuth ื‘ืืžืฆืขื•ืช ืคืจื•ืงืกื™** - ื–ืจื™ืžืช OAuth ืขื•ื‘ืจืช ื’ื ื“ืจืš ื”-proxy, ื•ืคื•ืชืจืช ืืช `unsupported_country_region_territory` - **ื‘ื“ื™ืงื•ืช ื—ื™ื‘ื•ืจ ื‘ืืžืฆืขื•ืช ืคืจื•ืงืกื™** - ื‘ื“ื™ืงื•ืช ื—ื™ื‘ื•ืจ ืžืฉืชืžืฉื•ืช ื‘ืคืจื•ืงืกื™ ื”ืžื•ื’ื“ืจ (ืœื ืขื•ื“ ืžืขืงืฃ ื™ืฉื™ืจ) - **ืชืžื™ื›ื” SOCKS5** โ€” ืชืžื™ื›ื” ืžืœืื” ื‘-Proxy SOCKS5 ืœื ื™ืชื•ื‘ ื™ื•ืฆื - **ื–ื™ื•ืฃ ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข TLS** - ื˜ื‘ื™ืขืช ืืฆื‘ืข TLS ื“ืžื•ื™ืช ื“ืคื“ืคืŸ ื‘ืืžืฆืขื•ืช `wreq-js` ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื–ื™ื”ื•ื™ ื”ื‘ื•ื˜ื™ื
๐Ÿ†“ 4. "ืื ื™ ืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘-AI ืœืงื™ื“ื•ื“ ืื‘ืœ ืื™ืŸ ืœื™ ื›ืกืฃ" ืœื ื›ื•ืœื ื™ื›ื•ืœื™ื ืœืฉืœื 20-200 $ ืœื—ื•ื“ืฉ ืขื‘ื•ืจ ืžื ื•ื™ื™ AI. ืกื˜ื•ื“ื ื˜ื™ื, ืžืคืชื—ื™ื ืžืžื“ื™ื ื•ืช ืžืชืคืชื—ื•ืช, ื—ื•ื‘ื‘ื™ื ื•ืคืจื™ืœื ืกืจื™ื ืฆืจื™ื›ื™ื ื’ื™ืฉื” ืœื“ื’ืžื™ื ืื™ื›ื•ืชื™ื™ื ื‘ืขืœื•ืช ืืคืกื™ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืกืคืงื™ ืฉื›ื‘ืช ื—ื™ื ื ืžื•ื‘ื ื™ืช** - ืชืžื™ื›ื” ืžืงื•ืจื™ืช ืขื‘ื•ืจ 100% ืกืคืงื™ื ื‘ื—ื™ื ื: iFlow (8 ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื”), Qwen (3 ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื”), Kiro (ืงืœื•ื“ ื‘ื—ื™ื ื), Gemini CLI (180K/ื—ื•ื“ืฉ ื—ื™ื ื) - **ืฉื™ืœื•ื‘ื™ื ื‘ื—ื™ื ื ื‘ืœื‘ื“** โ€” ืฉืจืฉืจืช `gc/gemini-3-flash โ†’ if/kimi-k2-thinking โ†’ qw/qwen3-coder-plus` = $0 ืœื—ื•ื“ืฉ ืขื ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื” - **ืงืจื“ื™ื˜ื™ื ื—ื™ื ื ืฉืœ NVIDIA NIM** - 1000 ื–ื™ื›ื•ื™ื™ื ื—ื™ื ื ืžืฉื•ืœื‘ื™ื - **ืืกื˜ืจื˜ื’ื™ื™ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืœืขืœื•ืช** โ€” ืืกื˜ืจื˜ื’ื™ื™ืช ื ื™ืชื•ื‘ ืฉื‘ื•ื—ืจืช ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืกืคืง ื”ื–ืžื™ืŸ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ
๐Ÿ”’ 5. "ืื ื™ ืฆืจื™ืš ืœื”ื’ืŸ ืขืœ ืฉืขืจ ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ืฉืœื™ ืžื’ื™ืฉื” ืœื ืžื•ืจืฉื™ืช" ื‘ืขืช ื—ืฉื™ืคืช ืฉืขืจ AI ืœืจืฉืช (LAN, VPS, Docker), ื›ืœ ืžื™ ืฉื™ืฉ ืœื• ืืช ื”ื›ืชื•ื‘ืช ื™ื›ื•ืœ ืœืฆืจื•ืš ืืช ื”ืืกื™ืžื•ื ื™ื/ืžื›ืกื” ืฉืœ ื”ืžืคืชื—. ืœืœื ื”ื’ื ื”, ืžืžืฉืงื™ API ื—ืฉื•ืคื™ื ืœืฉื™ืžื•ืฉ ืœืจืขื”, ื”ื–ืจืงื” ืžื”ื™ืจื” ื•ื ื™ืฆื•ืœ ืœืจืขื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื ื™ื”ื•ืœ ืžืคืชื—ื•ืช API** - ื™ืฆื™ืจื”, ืกื™ื‘ื•ื‘ ื•ื”ื™ืงืฃ ืœื›ืœ ืกืคืง ืขื ื“ืฃ `/dashboard/api-manager` ื™ื™ืขื•ื“ื™ - **ื”ืจืฉืื•ืช ื‘ืจืžืช ื”ื“ื’ื** - ื”ื’ื‘ืœ ืžืคืชื—ื•ืช API ืœื“ื’ืžื™ื ืกืคืฆื™ืคื™ื™ื (`openai/*`, ื“ืคื•ืกื™ ืชื•ื•ื™ื ื›ืœืœื™ื™ื), ืขื ื”ื—ืœืคืช ืžืฆื‘ ืืคืฉืจ ื”ื›ืœ/ื”ื’ื‘ืœ - **ื”ื’ื ื” ืขืœ ื ืงื•ื“ื•ืช ืงืฆื” ืฉืœ API** - ื“ืจื•ืฉ ืžืคืชื— ืขื‘ื•ืจ `/v1/models` ื•ื—ืกื•ื ืกืคืงื™ื ืกืคืฆื™ืคื™ื™ื ืžื”ืจื™ืฉื•ื - **Auth Guard + CSRF Protection** โ€” ื›ืœ ืžืกืœื•ืœื™ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืžื•ื’ื ื™ื ื‘ืืžืฆืขื•ืช ืชื•ื›ื ืช ื‘ื™ื ื™ื™ื `withAuth` + ืืกื™ืžื•ื ื™ CSRF - ** ืžื’ื‘ื™ืœ ืงืฆื‘** - ื”ื’ื‘ืœืช ืงืฆื‘ ืœืคื™ IP ืขื ื—ืœื•ื ื•ืช ื”ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” - **ืกื™ื ื•ืŸ IP** โ€” ืจืฉื™ืžืช ื”ืจืฉืื•ืช/ืจืฉื™ืžืช ื—ืกื™ืžื•ืช ืœื‘ืงืจืช ื’ื™ืฉื” - **ืžืฉืžืจ ื”ื–ืจืงื” ืžื”ื™ืจื”** - ื—ื™ื˜ื•ื™ ื ื’ื“ ื“ืคื•ืกื™ ื”ื ื—ื™ื” ื–ื“ื•ื ื™ื™ื - **ื”ืฆืคื ืช AES-256-GCM** - ืื™ืฉื•ืจื™ื ืžื•ืฆืคื ื™ื ื‘ื–ืžืŸ ืžื ื•ื—ื”
๐Ÿ›‘ 6. "ื”ืกืคืง ืฉืœื™ ื ืคืœ ื•ืื™ื‘ื“ืชื™ ืืช ื–ืจื™ืžืช ื”ืงื™ื“ื•ื“" ืกืคืงื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ืขืœื•ืœื™ื ืœื”ืคื•ืš ืœื‘ืœืชื™ ื™ืฆื™ื‘ื™ื, ืœื”ื—ื–ื™ืจ ืฉื’ื™ืื•ืช 5xx ืื• ืœืคื’ื•ืข ื‘ืžื’ื‘ืœื•ืช ืงืฆื‘ ื–ืžื ื™ื•ืช. ืื ืžืคืชื— ืชืœื•ื™ ื‘ืกืคืง ื™ื—ื™ื“, ื”ื ืžื•ืคืจืขื™ื. ืœืœื ืžืคืกืงื™ื, ื ืกื™ื•ื ื•ืช ื—ื•ื–ืจื™ื ื•ื ืฉื ื™ื ืขืœื•ืœื™ื ืœืงืจื•ืก ืืช ื”ืืคืœื™ืงืฆื™ื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืžืคืกืง ืžืขื’ืœื™ื ืœื›ืœ ืกืคืง** - ืคืชื™ื—ื”/ืกื’ื™ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืขื ืกืคื™ื ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” ื•ื”ืชืงืจืจื•ืช (ืกื’ื•ืจ/ืคืชื•ื—/ื—ืฆื™ ืคืชื•ื—) - **ื’ื™ื‘ื•ื™ ืืงืกืคื•ื ื ืฆื™ืืœื™** - ืขื™ื›ื•ื‘ื™ื ืžืชืงื“ืžื™ื ื‘ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ - **ืขื“ืจ ื ื’ื“ ืจืขืžื™ื** - ื”ื’ื ื” ืขืœ ืžื•ื˜ืงืก + ืกืžืคื•ืจ ืžืคื ื™ ืกื•ืคื•ืช ื ื™ืกื™ื•ื ื•ืช ื—ื•ื–ืจื•ืช ื‘ืžืงื‘ื™ืœ - **ืฉืจืฉืจืื•ืช ืžืฉื•ืœื‘ื•ืช Fallback** - ืื ื”ืกืคืง ื”ืจืืฉื™ ื ื›ืฉืœ, ื ื•ืคืœ ืื•ื˜ื•ืžื˜ื™ืช ื‘ืฉืจืฉืจืช ืœืœื ื”ืชืขืจื‘ื•ืช - **ืžืคืกืง ืžืฉื•ืœื‘** - ืžืฉื‘ื™ืช ืื•ื˜ื•ืžื˜ื™ืช ืกืคืงื™ื ื›ื•ืฉืœื™ื ื‘ืฉืจืฉืจืช ืžืฉื•ืœื‘ืช - **ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช** - ื ื™ื˜ื•ืจ ื–ืžืŸ ืคืขื•ืœื”, ืžืฆื‘ื™ ืžืคืกืง ื–ืจื, ื ืขื™ืœื•ืช, ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื˜ืžื•ืŸ, ื–ืžืŸ ืื—ื–ื•ืจ p50/p95/p99
๐Ÿ”ง 7. "ื”ื’ื“ืจืช ื›ืœ ื›ืœื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื”ื™ื ืžื™ื™ื’ืขืช ื•ื—ื•ื–ืจืช ืขืœ ืขืฆืžื”" ืžืคืชื—ื™ื ืžืฉืชืžืฉื™ื ื‘-Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... ื›ืœ ื›ืœื™ ืฆืจื™ืš ืชืฆื•ืจื” ืฉื•ื ื” (ื ืงื•ื“ืช ืงืฆื”, ืžืคืชื—, ืžื•ื“ืœ API). ื”ื’ื“ืจื” ืžื—ื“ืฉ ื‘ืขืช ื”ื—ืœืคืช ืกืคืงื™ื ืื• ื“ื’ืžื™ื ื”ื™ื ื‘ื–ื‘ื•ื– ื–ืžืŸ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ CLI Tools** - ื“ืฃ ื™ื™ืขื•ื“ื™ ืขื ื”ื’ื“ืจื” ื‘ืœื—ื™ืฆื” ืื—ืช ืขื‘ื•ืจ Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline - **GitHub Copilot Config Generator** โ€” ืžื™ื™ืฆืจ `chatLanguageModels.json` ืขื‘ื•ืจ ืงื•ื“ VS ืขื ื‘ื—ื™ืจืช ื“ื’ืžื™ื ื‘ื›ืžื•ืช ื’ื“ื•ืœื” - **ืืฉืฃ ื”ื”ื˜ืžืขื”** โ€” ื”ื’ื“ืจื” ืžื•ื“ืจื›ืช ื‘ืช 4 ืฉืœื‘ื™ื ืœืžืฉืชืžืฉื™ื ืจืืฉื•ื ื™ื - **ื ืงื•ื“ืช ืงืฆื” ืื—ืช, ื›ืœ ื”ื“ื’ืžื™ื** - ื”ื’ื“ืจ ืืช `http://localhost:20128/v1` ืคืขื ืื—ืช, ื’ืฉ ืœ-36+ ืกืคืงื™ื
๐Ÿ”‘ 8. "ื ื™ื”ื•ืœ ืืกื™ืžื•ื ื™ OAuth ืžืžืกืคืจ ืกืคืงื™ื ื–ื” ื’ื™ื”ื ื•ื" Claude Code, Codex, Gemini CLI, Copilot - ื›ื•ืœื ืžืฉืชืžืฉื™ื ื‘-OAuth 2.0 ืขื ืืกื™ืžื•ื ื™ื ืฉืคื’ ืชื•ืงืคื. ืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœื‘ืฆืข ืื™ืžื•ืช ืžื—ื“ืฉ ื›ืœ ื”ื–ืžืŸ, ืœื”ืชืžื•ื“ื“ ืขื `client_secret is missing`, `redirect_uri_mismatch` ื•ื›ืฉืœื™ื ื‘ืฉืจืชื™ื ืžืจื•ื—ืงื™ื. OAuth ื‘-LAN/VPS ื‘ืขื™ื™ืชื™ ื‘ืžื™ื•ื—ื“. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™** - ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ื‘ืจืงืข ืœืคื ื™ ืคืงื™ืขืช ืชื•ืงืฃ - **OAuth 2.0 (PKCE) ืžื•ื‘ื ื”** - ื–ืจื™ืžื” ืื•ื˜ื•ืžื˜ื™ืช ืขื‘ื•ืจ Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow - ** OAuth ืžืจื•ื‘ื” ื—ืฉื‘ื•ื ื•ืช** - ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง ื‘ืืžืฆืขื•ืช ื—ื™ืœื•ืฅ ืืกื™ืžื•ืŸ JWT/ID - **OAuth LAN/ืชื™ืงื•ืŸ ืžืจื—ื•ืง** - ื–ื™ื”ื•ื™ IP ืคืจื˜ื™ ืขื‘ื•ืจ `redirect_uri` + ืžืฆื‘ ื›ืชื•ื‘ืช URL ื™ื“ื ื™ ืขื‘ื•ืจ ืฉืจืชื™ื ืžืจื•ื—ืงื™ื - **OAuth Behind Nginx** - ืžืฉืชืžืฉ ื‘-`window.location.origin` ืขื‘ื•ืจ ืชืื™ืžื•ืช ืคืจื•ืงืกื™ ื”ืคื•ื›ื” - **ืžื“ืจื™ืš OAuth ืžืจื—ื•ืง** - ืžื“ืจื™ืš ืฉืœื‘ ืื—ืจ ืฉืœื‘ ืœืื™ืฉื•ืจื™ Google Cloud ื‘-VPS/Docker
๐Ÿ“Š 9. "ืื ื™ ืœื ื™ื•ื“ืข ื›ืžื” ืื ื™ ืžื•ืฆื™ื ืื• ืื™ืคื”" ืžืคืชื—ื™ื ืžืฉืชืžืฉื™ื ื‘ืžืกืคืจ ืกืคืงื™ื ื‘ืชืฉืœื•ื ืืš ืื™ืŸ ืœื”ื ืจืื™ื™ื” ืื—ื™ื“ื” ืฉืœ ื”ื•ืฆืื•ืช. ืœื›ืœ ืกืคืง ื™ืฉ ืœื•ื— ืžื—ื•ื•ื ื™ื ืžืฉืœื• ืœื—ื™ื•ื‘, ืื‘ืœ ืื™ืŸ ืชืฆื•ื’ื” ืžืื•ื—ื“ืช. ืขืœื•ื™ื•ืช ื‘ืœืชื™ ืฆืคื•ื™ื•ืช ืขืœื•ืœื•ืช ืœื”ื™ืขืจื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืœื•ื— ืžื—ื•ื•ื ื™ื ืฉืœ ื ื™ืชื•ื— ืขืœื•ื™ื•ืช** - ืžืขืงื‘ ืื—ืจ ืขืœื•ื™ื•ืช ืœืคื™ ืืกื™ืžื•ืŸ ื•ื ื™ื”ื•ืœ ืชืงืฆื™ื‘ ืœื›ืœ ืกืคืง - **ืžื’ื‘ืœื•ืช ืชืงืฆื™ื‘ ืœื›ืœ ืฉื›ื‘ื”** - ืชืงืจืช ื”ื•ืฆืื” ืœื›ืœ ืฉื›ื‘ื” ืฉืžืคืขื™ืœื” ื ืคื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช - **ืชืฆื•ืจืช ืชืžื—ื•ืจ ืœืคื™ ื“ื’ื** โ€” ืžื—ื™ืจื™ื ื”ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” ืœื›ืœ ื“ื’ื - **ืกื˜ื˜ื™ืกื˜ื™ืงืช ืฉื™ืžื•ืฉ ืœื›ืœ ืžืคืชื— API** - ืกืคื™ืจืช ื‘ืงืฉื•ืช ื•ื—ื•ืชืžืช ื–ืžืŸ ืื—ืจื•ื ื” ื‘ืฉื™ืžื•ืฉ ืœื›ืœ ืžืคืชื— - **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ืื ืœื™ื˜ื™ืงืก** - ื›ืจื˜ื™ืกื™ ืกื˜ื˜ื™ืกื˜ื™ืงื”, ื˜ื‘ืœืช ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ, ื˜ื‘ืœืช ืกืคืงื™ื ืขื ืื—ื•ื–ื™ ื”ืฆืœื—ื” ื•ื”ืฉื”ื™ื™ื”
๐Ÿ› 10. "ืื ื™ ืœื ื™ื›ื•ืœ ืœืื‘ื—ืŸ ืฉื’ื™ืื•ืช ื•ื‘ืขื™ื•ืช ื‘ืฉื™ื—ื•ืช AI" ื›ืืฉืจ ืฉื™ื—ื” ื ื›ืฉืœืช, ื”-dev ืœื ื™ื•ื“ืข ืื ื–ื• ื”ื™ื™ืชื” ืžื’ื‘ืœืช ืชืขืจื™ืฃ, ืืกื™ืžื•ืŸ ืฉืคื’ ืชื•ืงืคื•, ืคื•ืจืžื˜ ืฉื’ื•ื™ ืื• ืฉื’ื™ืืช ืกืคืง. ื™ื•ืžื ื™ื ืžืคื•ืฆืœื™ื ืขืœ ืคื ื™ ืžืกื•ืคื™ื ืฉื•ื ื™ื. ืœืœื ืฆืคื™ื™ื”, ืื™ืชื•ืจ ื‘ืื’ื™ื ื”ื•ื ื ื™ืกื•ื™ ื•ื˜ืขื™ื™ื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืœื•ื— ืžื—ื•ื•ื ื™ื ืฉืœ ื™ื•ืžื ื™ื ืžืื•ื—ื“ื™ื** - 4 ื›ืจื˜ื™ืกื™ื•ืช: ื™ื•ืžื ื™ ื‘ืงืฉื•ืช, ื™ื•ืžื ื™ ืคืจื•ืงืกื™, ื™ื•ืžื ื™ ื‘ื™ืงื•ืจืช, ืžืกื•ืฃ - **ืžืฆื™ื’ ื™ื•ืžืŸ ืžืกื•ืฃ** - ืžืฆื™ื’ ื‘ื–ืžืŸ ืืžืช ื‘ืกื’ื ื•ืŸ ื˜ืจืžื™ื ืœ ืขื ืจืžื•ืช ืžืงื•ื“ื“ื•ืช ืฆื‘ืข, ื’ืœื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช, ื—ื™ืคื•ืฉ, ืกื™ื ื•ืŸ - **SQLite Proxy Logs** - ื™ื•ืžื ื™ื ืžืชืžืฉื›ื™ื ืฉืฉื•ืจื“ื™ื ืืชื—ื•ืœ ืžื—ื“ืฉ ืฉืœ ื”ืฉืจืช - **ืžื’ืจืฉ ืžืฉื—ืงื™ื ืœืชืจื’ื•ื** - 4 ืžืฆื‘ื™ ื ื™ืคื•ื™ ื‘ืื’ื™ื: ืžื’ืจืฉ ืžืฉื—ืงื™ื (ืชืจื’ื•ื ืคื•ืจืžื˜), ื‘ื•ื“ืง ืฆ'ืื˜ (ื”ืœื•ืš ื•ืฉื•ื‘), ืกืคืกืœ ื‘ื“ื™ืงื” (ืืฆื•ื•ื”), ืฆื’ ื—ื™ (ื‘ื–ืžืŸ ืืžืช) - **Request Telemetry** โ€” ื—ื‘ื™ื•ืŸ p50/p95/p99 + X-Request-Id ืžืขืงื‘ - **ืจื™ืฉื•ื ืžื‘ื•ืกืก ืงื‘ืฆื™ื ืขื ืกื™ื‘ื•ื‘** - ืžื™ื™ืจื˜ ื”ืžืกื•ืฃ ืœื•ื›ื“ ื”ื›ืœ ืœื™ื•ืžืŸ JSON ืขื ืกื™ื‘ื•ื‘ ืžื‘ื•ืกืก ื’ื•ื“ืœ
๐Ÿ—๏ธ 11. "ืคืจื™ืกื” ื•ืชื—ื–ื•ืงื” ืฉืœ ื”ืฉืขืจ ืžื•ืจื›ื‘ืช" ื”ืชืงื ื”, ื”ื’ื“ืจื” ื•ืชื—ื–ื•ืงื” ืฉืœ ืคืจื•ืงืกื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช ื‘ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช (ืžืงื•ืžื™, VPS, Docker, ืขื ืŸ) ื”ื™ื ืขืชื™ืจืช ืขื‘ื•ื“ื”. ื‘ืขื™ื•ืช ื›ืžื• ื ืชื™ื‘ื™ื ืžืงื•ื“ื“ื™ื ืงืฉื™ื—ื™ื, `EACCES` ืขืœ ืกืคืจื™ื•ืช, ื”ืชื ื’ืฉื•ื™ื•ืช ื™ืฆื™ืื•ืช ื•ื‘ื ื™ื™ื” ื‘ื™ืŸ ืคืœื˜ืคื•ืจืžื•ืช ืžื•ืกื™ืคื•ืช ื—ื™ื›ื•ืš. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื”ืชืงื ื” ื’ืœื•ื‘ืœื™ืช npm** โ€” `npm install -g omniroute && omniroute` โ€” ื‘ื•ืฆืขื” - **Docker Multi-Platform** - ืžืงื•ืจื™ AMD64 + ARM64 (Apple Silicon, AWS Graviton, Raspberry Pi) - **Docker Compose Profiles** โ€” `base` (ืœืœื ื›ืœื™ CLI) ื•-`cli` (ืขื ืงื•ื“ ืงืœื•ื“, Codex, OpenClaw) - **ืืคืœื™ืงืฆื™ื™ืช Electron Desktop** โ€” ืืคืœื™ืงืฆื™ื” ืžืงื•ืจื™ืช ืขื‘ื•ืจ Windows/macOS/Linux ืขื ืžื’ืฉ ืžืขืจื›ืช, ื”ืคืขืœื” ืื•ื˜ื•ืžื˜ื™ืช, ืžืฆื‘ ืœื ืžืงื•ื•ืŸ - **ืžืฆื‘ ื™ืฆื™ืื•ืช ืžืคื•ืฆืœื•ืช** - API ื•ืœื•ื— ืžื—ื•ื•ื ื™ื ื‘ื™ืฆื™ืื•ืช ื ืคืจื“ื•ืช ืขื‘ื•ืจ ืชืจื—ื™ืฉื™ื ืžืชืงื“ืžื™ื (ืคืจื•ืงืกื™ ื”ืคื•ืš, ืจืฉืช ืงื•ื ื˜ื™ื™ื ืจ) - **Cloud Sync** - ื”ื’ื“ืจืช ืกื ื›ืจื•ืŸ ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื ื‘ืืžืฆืขื•ืช Cloudflare Workers - **ื’ื™ื‘ื•ื™ื™ DB** - ื’ื™ื‘ื•ื™, ืฉื—ื–ื•ืจ, ื™ื™ืฆื•ื ื•ื™ื™ื‘ื•ื ืื•ื˜ื•ืžื˜ื™ ืฉืœ ื›ืœ ื”ื”ื’ื“ืจื•ืช
๐ŸŒ 12. "ื”ืžืžืฉืง ื”ื•ื ื‘ืื ื’ืœื™ืช ื‘ืœื‘ื“ ื•ื”ืฆื•ื•ืช ืฉืœื™ ืœื ืžื“ื‘ืจ ืื ื’ืœื™ืช" ืฆื•ื•ืชื™ื ื‘ืžื“ื™ื ื•ืช ืฉืื™ื ืŸ ื“ื•ื‘ืจื•ืช ืื ื’ืœื™ืช, ื‘ืžื™ื•ื—ื“ ื‘ืืžืจื™ืงื” ื”ืœื˜ื™ื ื™ืช, ืืกื™ื” ื•ืื™ืจื•ืคื”, ื ืื‘ืงื™ื ืขื ืžืžืฉืงื™ื ื‘ืื ื’ืœื™ืช ื‘ืœื‘ื“. ืžื—ืกื•ืžื™ ืฉืคื” ืžืคื—ื™ืชื™ื ืืช ื”ืื™ืžื•ืฅ ื•ืžื’ื“ื™ืœื™ื ืืช ืฉื’ื™ืื•ืช ื”ืชืฆื•ืจื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื i18n โ€” 30 ืฉืคื•ืช** โ€” ื›ืœ 500+ ื”ืžืงืฉื™ื ืžืชื•ืจื’ืžื™ื ื›ื•ืœืœ ืขืจื‘ื™ืช, ื‘ื•ืœื’ืจื™ืช, ื“ื ื™ืช, ื’ืจืžื ื™ืช, ืกืคืจื“ื™ืช, ืคื™ื ื™ืช, ืฆืจืคืชื™ืช, ืขื‘ืจื™ืช, ื”ื™ื ื“ื™ืช, ื”ื•ื ื’ืจื™ืช, ืื™ื ื“ื•ื ื–ื™ืช, ืื™ื˜ืœืงื™ืช, ื™ืคื ื™ืช, ืงื•ืจื™ืื ื™ืช, ืžืœืื™ืช, ื”ื•ืœื ื“ื™ืช, ื ื•ืจื•ื•ื’ื™ืช, ืคื•ืœื ื™ืช, ืคื•ืจื˜ื•ื’ื–ื™ืช (PT/BR), ืจื•ืžื ื™ืช, ืจื•ืกื™ืช, ืกืœื•ื‘ืงื™ืช, ืฉื•ื•ื“ื™ืช, ืชืื™ืœื ื“ื™ืช, ืกืœื•ื‘ืงื™ืช, ืฉื•ื•ื“ื™ืช, ืกื™ื ื™ืช, ืกืœื•ื‘ืงื™ืช, ื•ื™ื™ื˜ื ืื - **ืชืžื™ื›ื” ื‘-RTL** โ€” ืชืžื™ื›ื” ืžื™ืžื™ืŸ ืœืฉืžืืœ ืœืขืจื‘ื™ืช ื•ืœืขื‘ืจื™ืช - ** README ืžืจื•ื‘ื™ื ืฉืคื•ืช** - 30 ืชืจื’ื•ืžื™ ืชื™ืขื•ื“ ืžืœืื™ื - **ื‘ื•ืจืจ ืฉืคื”** - ืกืžืœ ื’ืœื•ื‘ื•ืก ื‘ื›ื•ืชืจืช ืœืžืขื‘ืจ ื‘ื–ืžืŸ ืืžืช
๐Ÿ”„ 13. "ืื ื™ ืฆืจื™ืš ื™ื•ืชืจ ืžืฆ'ืื˜ - ืื ื™ ืฆืจื™ืš ื”ื˜ืžืขื•ืช, ืชืžื•ื ื•ืช, ืื•ื“ื™ื•" AI ื–ื” ืœื ืจืง ื”ืฉืœืžืช ืฆ'ืื˜. ืžืคืชื—ื™ื ืฆืจื™ื›ื™ื ืœื™ืฆื•ืจ ืชืžื•ื ื•ืช, ืœืชืžืœืœ ืื•ื“ื™ื•, ืœื™ืฆื•ืจ ื”ื˜ืžืขื•ืช ืขื‘ื•ืจ RAG, ืœื“ืจื’ ืžื—ื“ืฉ ืžืกืžื›ื™ื ื•ืœืชืช ืชื•ื›ืŸ. ืœื›ืœ API ื™ืฉ ื ืงื•ื“ืช ืงืฆื” ื•ืคื•ืจืžื˜ ืฉื•ื ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื”ื˜ืžืขื•ืช** โ€” `/v1/embeddings` ืขื 6 ืกืคืงื™ื ื•-9+ ื“ื’ืžื™ื - **ื™ืฆื™ืจืช ืชืžื•ื ื•ืช** โ€” `/v1/images/generations` ืขื 10 ืกืคืงื™ื ื•-20+ ื“ื’ืžื™ื (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI) - **ื˜ืงืกื˜ ืœื•ื•ื™ื“ืื•** โ€” `/v1/videos/generations` โ€” ComfyUI (AnimateDiff, SVD) ื•-SD WebUI - **ื˜ืงืกื˜ ืœืžื•ื–ื™ืงื”** โ€” `/v1/music/generations` โ€” ComfyUI (ืคืชื•ื— ืื•ื“ื™ื• ื™ืฆื™ื‘, MusicGen) - **ืชืžืœื•ืœ ืื•ื“ื™ื•** โ€” `/v1/audio/transcriptions` โ€” Whisper + Nvidia NIM, HuggingFace, Qwen3 - **ื˜ืงืกื˜ ืœื“ื™ื‘ื•ืจ** โ€” `/v1/audio/speech` โ€” ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, + ืกืคืงื™ื ืงื™ื™ืžื™ื - **ืžื•ื“ืฆื™ื•ืช** โ€” `/v1/moderations` โ€” ื‘ื“ื™ืงื•ืช ื‘ื˜ื™ื—ื•ืช ืชื•ื›ืŸ - **ื“ื™ืจื•ื’ ืžื—ื“ืฉ** โ€” `/v1/rerank` โ€” ื“ื™ืจื•ื’ ืžื—ื“ืฉ ืฉืœ ืจืœื•ื•ื ื˜ื™ื•ืช ื”ืžืกืžืš - **Responses API** โ€” ืชืžื™ื›ื” ืžืœืื” ื‘-`/v1/responses` ืขื‘ื•ืจ Codex
๐Ÿงช 14. "ืื™ืŸ ืœื™ ื“ืจืš ืœื‘ื“ื•ืง ื•ืœื”ืฉื•ื•ืช ืื™ื›ื•ืช ื‘ื™ืŸ ื“ื’ืžื™ื" ืžืคืชื—ื™ื ืจื•ืฆื™ื ืœื“ืขืช ืื™ื–ื” ื“ื’ื ื”ื•ื ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ ืžืงืจื” ื”ืฉื™ืžื•ืฉ ืฉืœื”ื - ืงื•ื“, ืชืจื’ื•ื, ื”ื ืžืงื” - ืื‘ืœ ื”ื”ืฉื•ื•ืื” ื™ื“ื ื™ืช ื”ื™ื ืื™ื˜ื™ืช. ืœื ืงื™ื™ืžื™ื ื›ืœื™ eval ืžืฉื•ืœื‘ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื”ืขืจื›ื•ืช LLM** - ื‘ื“ื™ืงืช ืกื˜ ื–ื”ื‘ ืขื 10 ืžืงืจื™ื ื˜ืขื•ื ื™ื ืžืจืืฉ ื”ืžื›ืกื™ื ื‘ืจื›ื•ืช, ืžืชืžื˜ื™ืงื”, ื’ื™ืื•ื’ืจืคื™ื”, ื™ืฆื™ืจืช ืงื•ื“, ืชืื™ืžื•ืช ืœ-JSON, ืชืจื’ื•ื, ืกื™ืžื•ืŸ, ืกื™ืจื•ื‘ ื‘ื˜ื™ื—ื•ืช - **4 ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืชืืžื”** โ€” `exact`, `contains`, `regex`, `custom` (ืคื•ื ืงืฆื™ื™ืช JS) - **ืกืคืกืœ ื‘ื“ื™ืงื” ื‘ืžื’ืจืฉ ืžืฉื—ืงื™ื ืฉืœ ืžืชืจื’ื** - ื‘ื“ื™ืงื•ืช ืืฆื•ื•ื” ืขื ืžืกืคืจ ื›ื ื™ืกื•ืช ื•ื™ืฆื™ืื•ืช ืฆืคื•ื™ื•ืช, ื”ืฉื•ื•ืื” ื‘ื™ืŸ ืกืคืงื™ื - ** ื‘ื•ื“ืง ืฆ'ืื˜** - ื”ืœื•ืš ื•ืฉื•ื‘ ืžืœื ืขื ืขื™ื‘ื•ื“ ืชื’ื•ื‘ื” ื•ื™ื–ื•ืืœื™ืช - **ืžืขืงื‘ ื—ื™** - ื–ืจื ื‘ื–ืžืŸ ืืžืช ืฉืœ ื›ืœ ื”ื‘ืงืฉื•ืช ื”ื–ื•ืจืžื•ืช ื“ืจืš ื”-proxy
๐Ÿ“ˆ 15. "ืื ื™ ืฆืจื™ืš ืœืฉื ื•ืช ืงื ื” ืžื™ื“ื” ืžื‘ืœื™ ืœืื‘ื“ ื‘ื™ืฆื•ืขื™ื" ื›ื›ืœ ืฉื ืคื— ื”ื‘ืงืฉื•ืช ื’ื“ืœ, ืœืœื ืฉืžื™ืจื” ื‘ืžื˜ืžื•ืŸ, ืื•ืชืŸ ืฉืืœื•ืช ืžื™ื™ืฆืจื•ืช ืขืœื•ื™ื•ืช ื›ืคื•ืœื•ืช. ืœืœื ืื™ืžืคื•ื˜ื ืฆื™ื”, ืขื™ื‘ื•ื“ ืคืกื•ืœืช ื‘ืงืฉื•ืช ื›ืคื•ืœื•ืช. ื™ืฉ ืœื›ื‘ื“ ืืช ืžื’ื‘ืœื•ืช ื”ืชืขืจื™ืคื™ื ืœื›ืœ ืกืคืง. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืžื˜ืžื•ืŸ ืกืžื ื˜ื™** - ืžื˜ืžื•ืŸ ื“ื•-ืฉื›ื‘ืชื™ (ื—ืชื™ืžื” + ืกืžื ื˜ื™) ืžืคื—ื™ืช ืืช ื”ืขืœื•ืช ื•ื”ืฉื”ื™ื™ื” - **Request Idempotency** โ€” ื—ืœื•ืŸ ืžื ื™ืขืช ื›ืคื™ืœื•ื™ื•ืช ืฉืœ 5 ืฉื ื™ื•ืช ืœื‘ืงืฉื•ืช ื–ื”ื•ืช - **ื–ื™ื”ื•ื™ ืžื’ื‘ืœืช ืชืขืจื™ืฃ** - RPM ืœื›ืœ ืกืคืง, ืคืขืจ ืžื™ื ื™ืžืœื™ ื•ืžืขืงื‘ ืžืจื‘ื™ ื‘ื•-ื–ืžื ื™ืช - **ืžื’ื‘ืœื•ืช ืงืฆื‘ ื”ื ื™ืชื ื•ืช ืœืขืจื™ื›ื”** - ื‘ืจื™ืจื•ืช ืžื—ื“ืœ ื”ื ื™ืชื ื•ืช ืœื”ื’ื“ืจื” ื‘ื”ื’ื“ืจื•ืช โ† ื—ื•ืกืŸ ืขื ื”ืชืžื“ื” - **ืžื˜ืžื•ืŸ ืžืคืชื— API** - ืžื˜ืžื•ืŸ ื‘ืŸ 3 ืฉื›ื‘ื•ืช ืœื‘ื™ืฆื•ืขื™ ื™ื™ืฆื•ืจ - **ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช ืขื ื˜ืœืžื˜ืจื™ื”** - ื–ืžืŸ ืื—ื–ื•ืจ p50/p95/p99, ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื˜ืžื•ืŸ, ื–ืžืŸ ืคืขื•ืœื”
๐Ÿค– 16. "ืื ื™ ืจื•ืฆื” ืœืฉืœื•ื˜ ื‘ื”ืชื ื”ื’ื•ืช ื”ืžื•ื“ืœ ื‘ืื•ืคืŸ ื’ืœื•ื‘ืœื™" ืžืคืชื—ื™ื ืฉืจื•ืฆื™ื ืืช ื›ืœ ื”ืชื’ื•ื‘ื•ืช ื‘ืฉืคื” ืกืคืฆื™ืคื™ืช, ืขื ื˜ื•ืŸ ืกืคืฆื™ืคื™, ืื• ืจื•ืฆื™ื ืœื”ื’ื‘ื™ืœ ืืช ืืกื™ืžื•ื ื™ ื”ื ืžืงื”. ื”ื’ื“ืจื” ื–ื• ื‘ื›ืœ ื›ืœื™/ื‘ืงืฉื” ืื™ื ื” ืžืขืฉื™ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื”ื–ืจืงืช ื”ื ื—ื™ื™ืช ืžืขืจื›ืช** - ื”ื ื—ื™ื” ื’ืœื•ื‘ืœื™ืช ื—ืœื” ืขืœ ื›ืœ ื”ื‘ืงืฉื•ืช - **ืื™ืžื•ืช ืชืงืฆื™ื‘ ื—ืฉื™ื‘ื”** - ื‘ืงืจืช ื”ืงืฆืืช ืืกื™ืžื•ื ื™ื ื‘ื”ื™ื’ื™ื•ืŸ ืœื›ืœ ื‘ืงืฉื” (ืžืขื‘ืจ, ืื•ื˜ื•ืžื˜ื™, ืžื•ืชืื ืื™ืฉื™ืช, ืื“ืคื˜ื™ื‘ื™) - **6 ืืกื˜ืจื˜ื’ื™ื•ืช ื ื™ืชื•ื‘** - ืืกื˜ืจื˜ื’ื™ื•ืช ื’ืœื•ื‘ืœื™ื•ืช ื”ืงื•ื‘ืขื•ืช ืืช ืื•ืคืŸ ื”ืคืฆืช ื”ื‘ืงืฉื•ืช - **ื ืชื‘ ืชื•ื•ื™ื ื›ืœืœื™ื™ื** โ€” ืชื‘ื ื™ื•ืช `provider/*` ืžื ื•ืชื‘ื•ืช ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ืœื›ืœ ืกืคืง - **ื”ืคืขืœ/ื”ืฉื‘ืช ืฉื™ืœื•ื‘ ืฉืœ ื”ื—ืœืคื”** โ€” ื”ื—ืœืฃ ืฉื™ืœื•ื‘ื™ื ื™ืฉื™ืจื•ืช ืžืœื•ื— ื”ืžื—ื•ื•ื ื™ื - **ื”ื—ืœืคืช ืกืคืง** โ€” ื”ืคืขืœ/ื”ืฉื‘ืช ืืช ื›ืœ ื”ื—ื™ื‘ื•ืจื™ื ืขื‘ื•ืจ ืกืคืง ื‘ืœื—ื™ืฆื” ืื—ืช - **ืกืคืงื™ื ื—ืกื•ืžื™ื** โ€” ืืœ ืชื›ืœื•ืœ ืกืคืงื™ื ืกืคืฆื™ืคื™ื™ื ืžืจืฉื™ืžืช `/v1/models`
๐Ÿงฐ 17. "ืื ื™ ืฆืจื™ืš ื›ืœื™ MCP ื›ื™ื›ื•ืœื•ืช ืžื•ืฆืจ ืžื”ืฉื•ืจื” ื”ืจืืฉื•ื ื”" ืฉืขืจื™ AI ืจื‘ื™ื ื—ื•ืฉืคื™ื ืืช MCP ืจืง ื›ืคืจื˜ ื™ื™ืฉื•ื ื ืกืชืจ. ืฆื•ื•ืชื™ื ืฆืจื™ื›ื™ื ืฉื›ื‘ืช ืคืขื•ืœื” ื’ืœื•ื™ื” ื•ื ื™ืชื ืช ืœื ื™ื”ื•ืœ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - MCP ืžื•ืคื™ืข ื‘ื›ืจื˜ื™ืกื™ื™ืช ื”ื ื™ื•ื•ื˜ ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื•ืคืจื•ื˜ื•ืงื•ืœ ื ืงื•ื“ืช ื”ืงืฆื” - ื“ืฃ ื ื™ื”ื•ืœ MCP ื™ื™ืขื•ื“ื™ ืขื ืชื”ืœื™ืš, ื›ืœื™ื, ื”ื™ืงืคื™ื ื•ื‘ื™ืงื•ืจืช - ื”ืชื—ืœื” ืžื”ื™ืจื” ืžื•ื‘ื ื™ืช ืขื‘ื•ืจ `omniroute --mcp` ื•ื›ื ื™ืกื” ืœืœืงื•ื—
๐Ÿง  18. "ืื ื™ ืฆืจื™ืš ืชื–ืžื•ืจ A2A ืขื ื ืชื™ื‘ื™ ืžืฉื™ืžื•ืช ืกื™ื ื›ืจื•ืŸ + ื–ืจื" ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ืกื•ื›ืŸ ื–ืงื•ืงื•ืช ื”ืŸ ืœืชืฉื•ื‘ื•ืช ื™ืฉื™ืจื•ืช ื•ื”ืŸ ืœื‘ื™ืฆื•ืข ื–ืจื™ืžื” ืืจื•ืš ื˜ื•ื•ื— ืขื ื‘ืงืจืช ืžื—ื–ื•ืจ ื—ื™ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ื ืงื•ื“ืช ืงืฆื” A2A JSON-RPC (`POST /a2a`) ืขื `message/send` ื•-`message/stream` - ื”ื–ืจืžืช SSE ืขื ื”ืคืฆืช ืžืฆื‘ ืžืกื•ืฃ - ืžืžืฉืงื™ API ืฉืœ ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืžืฉื™ืžื•ืช ืขื‘ื•ืจ `tasks/get` ื•-`tasks/cancel`
๐Ÿ›ฐ๏ธ 19. "ืื ื™ ืฆืจื™ืš ื‘ืจื™ืื•ืช ืฉืœ ืชื”ืœื™ืš MCP ืืžื™ืชื™, ืžืฆื‘ ืœื ืžื ื—ืฉ" ืฆื•ื•ืชื™ื ืชืคืขื•ืœื™ื™ื ืฆืจื™ื›ื™ื ืœื“ืขืช ืื MCP ื‘ืืžืช ื—ื™, ืœื ืจืง ืื ื ื™ืชืŸ ืœื”ื’ื™ืข ืœ-API. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืงื•ื‘ืฅ ืคืขื™ืžื•ืช ืœื‘ ื‘ื–ืžืŸ ืจื™ืฆื” ืขื PID, ื—ื•ืชืžื•ืช ื–ืžืŸ, ืชื—ื‘ื•ืจื”, ืกืคื™ืจืช ื›ืœื™ื ื•ืžืฆื‘ ื”ื™ืงืฃ - MCP status API ื”ืžืฉืœื‘ ืคืขื™ืžื•ืช ืœื‘ + ืคืขื™ืœื•ืช ืื—ืจื•ื ื” - ื›ืจื˜ื™ืกื™ ืกื˜ื˜ื•ืก ืžืžืฉืง ืžืฉืชืžืฉ ืขื‘ื•ืจ ืชื”ืœื™ืš/ื–ืžืŸ ืคืขื•ืœื”/ืจืขื ื ื•ืช ืคืขื™ืžื•ืช ืœื‘
๐Ÿ“‹ 20. "ืื ื™ ืฆืจื™ืš ื‘ื™ืฆื•ืข ื›ืœื™ MCP ืฉื ื™ืชืŸ ืœื‘ื™ืงื•ืจืช" ื›ืืฉืจ ื›ืœื™ื ืžืฉืชื ื™ื ื‘ืชืฆื•ืจื” ืื• ืžืคืขื™ืœื™ื ืคืขื•ืœื•ืช ืžื‘ืฆืขื™ื•ืช, ื”ืฆื•ื•ืชื™ื ื–ืงื•ืงื™ื ืœืžืขืงื‘ ืคื•ืจื ื–ื™. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืจื™ืฉื•ื ื‘ื™ืงื•ืจืช ืžื’ื•ื‘ื” SQLite ืขื‘ื•ืจ ืงืจื™ืื•ืช ืœื›ืœื™ MCP - ืžืกื ื ื™ื ืœืคื™ ื›ืœื™, ื”ืฆืœื—ื”/ื›ื™ืฉืœื•ืŸ, ืžืคืชื— API ื•ืขื™ืžื•ื“ - ื˜ื‘ืœืช ื‘ื™ืงื•ืจืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื + ื ืงื•ื“ื•ืช ืงืฆื” ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืœืื•ื˜ื•ืžืฆื™ื”
๐Ÿ” 21. "ืื ื™ ืฆืจื™ืš ื”ืจืฉืื•ืช MCP ื‘ื˜ื•ื•ื—ื™ื ืœื›ืœ ืื™ื ื˜ื’ืจืฆื™ื”" ืœืœืงื•ื—ื•ืช ืฉื•ื ื™ื ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื’ื™ืฉื” ื‘ืขืœืช ื”ืจืฉืื•ืช ืžื™ื ื™ืžืœื™ื•ืช ืœืงื˜ื’ื•ืจื™ื•ืช ื›ืœื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - 9 ื”ื™ืงืคื™ MCP ื’ืจื’ื™ืจื™ื ืœื’ื™ืฉื” ืžื‘ื•ืงืจืช ืœื›ืœื™ - ืื›ื™ืคื” ืฉืœ ื”ื™ืงืฃ ื•ื ืจืื•ืช ื‘ืžืžืฉืง ื”ืžืฉืชืžืฉ ืฉืœ ื ื™ื”ื•ืœ MCP - ืชื ื•ื—ืช ื‘ืจื™ืจืช ืžื—ื“ืœ ื‘ื˜ื•ื—ื” ืขื‘ื•ืจ ื›ืœื™ ืขื‘ื•ื“ื” ืชืคืขื•ืœื™ื™ื
โš™๏ธ 22. "ืื ื™ ืฆืจื™ืš ื‘ืงืจื•ืช ืชืคืขื•ืœื™ื•ืช ื‘ืœื™ ืœืคืจื•ืก ืžื—ื“ืฉ" ืฆื•ื•ืชื™ื ื–ืงื•ืงื™ื ืœืฉื™ื ื•ื™ื™ื ืžื”ื™ืจื™ื ื‘ื–ืžืŸ ืจื™ืฆื” ื‘ืžื”ืœืš ืื™ืจื•ืขื™ื ืื• ืื™ืจื•ืขื™ ืขืœื•ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ื”ื—ืœืฃ ื”ืคืขืœื” ืžืฉื•ืœื‘ืช ื™ืฉื™ืจื•ืช ืžืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ MCP - ื”ื—ืœ ืคืจื•ืคื™ืœื™ ื—ื•ืกืŸ ืžื—ื‘ื™ืœื•ืช ืžื“ื™ื ื™ื•ืช ืžื•ื’ื“ืจื•ืช ืžืจืืฉ - ืืคืก ืืช ืžืฆื‘ ืžืคืกืง ื”ื—ืฉืžืœ ืžืื•ืชื• ืœื•ื— ืคืขื•ืœื•ืช
๐Ÿ”„ 23. "ืื ื™ ืฆืจื™ืš ื ืจืื•ืช ื•ื‘ื™ื˜ื•ืœ ืฉืœ ืžื—ื–ื•ืจ ื”ื—ื™ื™ื ืฉืœ ืžืฉื™ืžื•ืช A2A ื‘ืฉื™ื“ื•ืจ ื—ื™" ืœืœื ื ืจืื•ืช ืฉืœ ืžื—ื–ื•ืจ ื—ื™ื™ื, ืื™ืจื•ืขื™ ืžืฉื™ืžื•ืช ื”ื•ืคื›ื™ื ืงืฉื™ื ืœื‘ื“ื™ืงื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืจื™ืฉื•ื ืžืฉื™ืžื•ืช/ืกื™ื ื•ืŸ ืœืคื™ ืžืฆื‘/ืžื™ื•ืžื ื•ืช ืขื ืขื™ืžื•ื“ - ืคื™ืจื•ื˜ ืขืœ ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ืžืฉื™ืžื•ืช, ืื™ืจื•ืขื™ื ื•ื—ืคืฆื™ื - ื ืงื•ื“ืช ืงืฆื” ืœื‘ื™ื˜ื•ืœ ืžืฉื™ืžื•ืช ื•ืคืขื•ืœืช ืžืžืฉืง ืžืฉืชืžืฉ ืขื ืื™ืฉื•ืจ
๐ŸŒŠ 24. "ืื ื™ ืฆืจื™ืš ืžื“ื“ื™ ืกื˜ืจื™ืžื™ื ื’ ืคืขื™ืœื™ื ืขื‘ื•ืจ ื˜ืขื™ื ืช A2A" ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ื‘ืกื˜ืจื™ืžื™ื ื’ ื“ื•ืจืฉื•ืช ืชื•ื‘ื ื” ืชืคืขื•ืœื™ืช ืœื’ื‘ื™ ื—ื™ื‘ื•ืจื™ื ื‘ืžืงื‘ื™ืœ ื•ื—ื™ื‘ื•ืจื™ื ื—ื™ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืžื•ื ื™ ื–ืจืžื™ื ืคืขื™ืœื™ื ืžืฉื•ืœื‘ื™ื ื‘ืกื˜ื˜ื•ืก A2A - ื—ื•ืชืžืช ื”ื–ืžืŸ ื”ืื—ืจื•ื ื” ืฉืœ ื”ืžืฉื™ืžื” ื•ืกืคื™ืจื•ืช ืœื›ืœ ืžื“ื™ื ื” - ื›ืจื˜ื™ืกื™ ืœื•ื— ืžื—ื•ื•ื ื™ื A2A ืœื ื™ื˜ื•ืจ ืคืขื•ืœื•ืช ื‘ื–ืžืŸ ืืžืช
๐Ÿชช 25. "ืื ื™ ืฆืจื™ืš ื’ื™ืœื•ื™ ืกื•ื›ืŸ ืกื˜ื ื“ืจื˜ื™ ืขื‘ื•ืจ ืœืงื•ื—ื•ืช" ืœืงื•ื—ื•ืช ื—ื™ืฆื•ื ื™ื™ื ื•ืžืชื–ืžืจื™ื ื–ืงื•ืงื™ื ืœืžื˜ื-ื ืชื•ื ื™ื ื”ื ื™ืชื ื™ื ืœืงืจื™ืืช ืžื›ื•ื ื” ืœืฆื•ืจืš ื”ืฆื˜ืจืคื•ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ื›ืจื˜ื™ืก ืกื•ื›ืŸ ื—ืฉื•ืฃ ื‘-`/.well-known/agent.json` - ื™ื›ื•ืœื•ืช ื•ืžื™ื•ืžื ื•ื™ื•ืช ื”ืžื•ืฆื’ื•ืช ื‘ืžืžืฉืง ื”ืžืฉืชืžืฉ ืœื ื™ื”ื•ืœ - API ืœืกื˜ื˜ื•ืก A2A ื›ื•ืœืœ ืžื˜ื ื ืชื•ื ื™ื ืฉืœ ื’ื™ืœื•ื™ ืœืื•ื˜ื•ืžืฆื™ื”
๐Ÿงญ 26. "ืื ื™ ืฆืจื™ืš ื’ื™ืœื•ื™ ืคืจื•ื˜ื•ืงื•ืœ ื‘-UX ืฉืœ ื”ืžื•ืฆืจ" ืื ืžืฉืชืžืฉื™ื ืœื ื™ื›ื•ืœื™ื ืœื’ืœื•ืช ืžืฉื˜ื—ื™ ืคืจื•ื˜ื•ืงื•ืœ, ื”ืื™ืžื•ืฅ ื•ื”ืชืžื™ื›ื” ื™ื•ืจื“ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืขืจื›ื™ื ื‘ืกืจื’ืœ ื”ืฆื“ ืขื‘ื•ืจ MCP ื•-A2A - ื›ืจื˜ื™ืกื™ื™ืช ืคืจื•ื˜ื•ืงื•ืœื™ื ืฉืœ ื“ืฃ ื ืงื•ื“ื•ืช ืงืฆื” ืขื ื”ืชื—ืœื” ืžื”ื™ืจื” ื•ืžืฆื‘ - ืงื™ืฉื•ืจื™ื ืžืกืงื™ืจื” ื›ืœืœื™ืช ืœืœื•ื—ื•ืช ื ื™ื”ื•ืœ ื™ื™ืขื•ื“ื™ื™ื
๐Ÿงช 27. "ืื ื™ ืฆืจื™ืš ืื™ืžื•ืช ืคืจื•ื˜ื•ืงื•ืœ ืžืงืฆื” ืœืงืฆื” ืขื ืœืงื•ื—ื•ืช ืืžื™ืชื™ื™ื" ื‘ื“ื™ืงื•ืช ืžื“ื•ืžื” ืื™ื ืŸ ืžืกืคื™ืงื•ืช ื›ื“ื™ ืœืืžืช ืชืื™ืžื•ืช ืคืจื•ื˜ื•ืงื•ืœ ืœืคื ื™ ื”ืฉื—ืจื•ืจ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ื—ื‘ื™ืœืช E2E ื”ืžืืชื—ืœืช ืืคืœื™ืงืฆื™ื” ื•ืžืฉืชืžืฉืช ื‘ื”ืขื‘ืจืช ืœืงื•ื— MCP SDK ืืžื™ืชื™ืช - ื‘ื“ื™ืงื•ืช ืœืงื•ื— A2A ืœืื™ืชื•ืจ, ืœืฉืœื•ื—, ืœื”ื–ืจื™ื, ืœืงื‘ืœ ื•ืœื‘ื˜ืœ ื–ืจื™ืžื•ืช - ืฆืœื‘ ื”ืฆื”ืจื•ืช ืžื•ืœ ื‘ื™ืงื•ืจืช MCP ื•ืžืฉื™ืžื•ืช A2A APIs
๐Ÿ“ก 28. "ืื ื™ ืฆืจื™ืš ืฆืคื™ื™ื” ืžืื•ื—ื“ืช ื‘ื›ืœ ื”ืžืžืฉืงื™ื" ืคื™ืฆื•ืœ ืฆืคื™ื•ืช ืœืคื™ ืคืจื•ื˜ื•ืงื•ืœ ื™ื•ืฆืจ ื›ืชืžื™ื ืขื™ื•ื•ืจื™ื ื•-MTTR ืืจื•ืš ื™ื•ืชืจ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื/ื™ื•ืžื ื™ื/ื ื™ืชื•ื— ืžืื•ื—ื“ื™ื ื‘ืžื•ืฆืจ ืื—ื“ - ื‘ืจื™ืื•ืช + ื‘ื™ืงื•ืจืช + ื˜ืœืžื˜ืจื™ื™ืช ื‘ืงืฉื” ืขืœ ืคื ื™ ืฉื›ื‘ื•ืช OpenAI, MCP ื•-A2A - APIs ืชืคืขื•ืœื™ื™ื ืœืกื˜ื˜ื•ืก ื•ืื•ื˜ื•ืžืฆื™ื”
๐Ÿ’ผ 29. "ืื ื™ ืฆืจื™ืš ื–ืžืŸ ืจื™ืฆื” ืื—ื“ ืขื‘ื•ืจ ืคืจื•ืงืกื™ + ื›ืœื™ื + ืชื–ืžื•ืจ ืกื•ื›ืŸ" ื”ืคืขืœืช ืฉื™ืจื•ืชื™ื ื ืคืจื“ื™ื ืจื‘ื™ื ืžื’ื“ื™ืœื” ืืช ื”ืขืœื•ืช ื”ืชืคืขื•ืœื™ืช ื•ืืช ืžืฆื‘ื™ ื”ื›ืฉืœ. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืคืจื•ืงืกื™ ืชื•ืื OpenAI, ืฉืจืช MCP ื•ืฉืจืช A2A ื‘ืขืจื™ืžื” ืื—ืช - ืื™ืžื•ืช ืžืฉื•ืชืฃ, ื—ื•ืกืŸ, ืžืื’ืจ ื ืชื•ื ื™ื ื•ืฆืคื™ื™ื” - ืžื•ื“ืœ ืžื“ื™ื ื™ื•ืช ืขืงื‘ื™ ื‘ื›ืœ ืžืฉื˜ื—ื™ ื”ืื™ื ื˜ืจืืงืฆื™ื”
๐Ÿš€ 30. "ืื ื™ ืฆืจื™ืš ืœืฉืœื•ื— ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืกื•ื›ื ื™ื•ืช ืœืœื ื”ืชืคืฉื˜ื•ืช ืงื•ื“ ื“ื‘ืง" ืฆื•ื•ืชื™ื ืžืื‘ื“ื™ื ืžื”ื™ืจื•ืช ื‘ืขืช ืชืคื™ืจืช ืฉื™ืจื•ืชื™ื ื•ืชืกืจื™ื˜ื™ื ืื“-ื”ื•ืง ืžืจื•ื‘ื™ื. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - ืืกื˜ืจื˜ื’ื™ื™ืช ื ืงื•ื“ื•ืช ืงืฆื” ืื—ื™ื“ื” ืขื‘ื•ืจ ืœืงื•ื—ื•ืช ื•ืกื•ื›ื ื™ื - ืžืžืฉืงื™ ืžืฉืชืžืฉ ืžื•ื‘ื ื™ื ืœื ื™ื”ื•ืœ ืคืจื•ื˜ื•ืงื•ืœ ื•ื ืชื™ื‘ื™ ืื™ืžื•ืช ืขืฉืŸ - ื™ืกื•ื“ื•ืช ืžื•ื›ื ื™ื ืœื™ื™ืฆื•ืจ (ืื‘ื˜ื—ื”, ืจื™ืฉื•ื, ื—ื•ืกืŸ, ื’ื™ื‘ื•ื™)
### ืกืคืจื™ ื”ืคืขืœื” ืœื“ื•ื’ืžื” (ืžืงืจื™ ืฉื™ืžื•ืฉ ืžืฉื•ืœื‘ื™ื) **Playbook A: ืžืงืกื•ื ืžื ื•ื™ ื‘ืชืฉืœื•ื + ื’ื™ื‘ื•ื™ ื–ื•ืœ** ```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: ืขืจื™ืžืช ืงื™ื“ื•ื“ ื‘ืขืœื•ืช ืืคืกื™ืช** ```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** ```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: ืกื•ื›ืŸ ืžื‘ืฆืข ืขื 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/mcp and /dashboard/a2a 4) Control incidents with resilience profile + task cancellation ``` --- ## โšก ื”ืชื—ืœื” ืžื”ื™ืจื” **1. ื”ืชืงืŸ ื‘ืจื—ื‘ื™ ื”ืขื•ืœื:** ```bash npm install -g omniroute omniroute ``` ๐ŸŽ‰ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื ืคืชื— ื‘-`http://localhost:20128` | ืคืงื•ื“ื” | ืชื™ืื•ืจ | | ----------------------- | --------------------------------- | | `omniroute` | ื”ืชื—ืœ ืฉืจืช (ื™ืฆื™ืืช ื‘ืจื™ืจืช ืžื—ื“ืœ 20128) | | `omniroute --port 3000` | ื”ืฉืชืžืฉ ื‘ื™ืฆื™ืื” ืžื•ืชืืžืช ืื™ืฉื™ืช | | `omniroute --no-open` | ืืœ ืชืคืชื— ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื“ืคื“ืคืŸ | | `omniroute --help` | ื”ืฆื’ ืขื–ืจื” | **2. ื—ื‘ืจ ืกืคืง ื—ื™ื ืžื™:** ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืงื™ื โ† ื”ืชื—ื‘ืจ **ืงื•ื“ ืงืœื•ื“** ืื• **ืื ื˜ื™ ื›ื‘ื™ื“ื”** โ† ื”ืชื—ื‘ืจื•ืช OAuth โ† ื‘ื•ืฆืข! **3. ื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”-CLI ืฉืœืš:** ``` Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings: Endpoint: http://localhost:20128/v1 API Key: [copy from dashboard] Model: if/kimi-k2-thinking ``` **ื–ื”ื• ื–ื”!** ื”ืชื—ืœ ืœืงื•ื“ื“ ืขื ื“ื’ืžื™ AI ื‘ื—ื™ื ื. **ืืœื˜ืจื ื˜ื™ื‘ื” - ื”ืคืขืœ ืžื”ืžืงื•ืจ:** ```bash cp .env.example .env npm install PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev ``` --- ## ๐Ÿณ ื“ื•ืงืจ OmniRoute ื–ืžื™ืŸ ื›ืชืžื•ื ืช Docker ืฆื™ื‘ื•ืจื™ืช ื‘-[Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute). **ืจื™ืฆื” ืžื”ื™ืจื”:** ```bash docker run -d \ --name omniroute \ --restart unless-stopped \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latest ``` **ืขื ืงื•ื‘ืฅ ืกื‘ื™ื‘ื”:** ```bash # Copy and edit .env first cp .env.example .env docker run -d \ --name omniroute \ --restart unless-stopped \ --env-file .env \ -p 20128:20128 \ -v omniroute-data:/app/data \ diegosouzapw/omniroute:latest ``` **ืฉื™ืžื•ืฉ ื‘-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 ``` | ืชืžื•ื ื” | ืชื’ | ื’ื•ื“ืœ | ืชื™ืื•ืจ | | ------------------------ | -------- | ------ | ---------------------- | | `diegosouzapw/omniroute` | `latest` | ~250MB | ื”ืžื”ื“ื•ืจื” ื”ื™ืฆื™ื‘ื” ื”ืื—ืจื•ื ื” | | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | ื’ืจืกื” ื ื•ื›ื—ื™ืช | --- --- ## ๐Ÿ–ฅ๏ธ > ๐Ÿ†• **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux. - ๐Ÿ–ฅ๏ธ **Native Window** โ€” Dedicated app window with system tray integration - ๐Ÿ”„ **Auto-Start** โ€” Launch OmniRoute on system login - ๐Ÿ”” **Native Notifications** โ€” Get alerts for quota exhaustion or provider issues - โšก **One-Click Install** โ€” NSIS (Windows), DMG (macOS), AppImage (Linux) - ๐ŸŒ **Offline Mode** โ€” Works fully offline with bundled server ```bash npm run electron:dev # Development mode npm run electron:build # Current platform npm run electron:build:win # Windows (.exe) npm run electron:build:mac # macOS (.dmg) npm run electron:build:linux # Linux (.AppImage) ``` ๐Ÿ“– Full documentation: [`electron/README.md`](electron/README.md) --- ## ๐Ÿ’ฐ ืชืžื—ื•ืจ ื‘ืžื‘ื˜ ื—ื˜ื•ืฃ | ืฉื›ื‘ื” | ืกืคืง | ืขืœื•ืช | ืื™ืคื•ืก ืžื›ืกื” | ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ | | --------------- | ---------------- | ----------------------- | ------------------------ | ------------------------ | | **๐Ÿ’ณ ืžื ื•ื™** | ืงืœื•ื“ ืงื•ื“ (ืคืจื•) | 20 ื“ื•ืœืจ ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ื›ื‘ืจ ื ืจืฉืžืช | | | ืงื•ื“ืงืก (ืคืœื•ืก/ืคืจื•) | $20-200 ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ืžืฉืชืžืฉื™ OpenAI | | | Gemini CLI | **ื—ื™ื ื** | 180K/Mo + 1K/ื™ื•ื | ื›ึผึนืœ ืึถื—ึธื“! | | | GitHub Copilot | $10-19 ืœื—ื•ื“ืฉ | ื—ื•ื“ืฉื™ | ืžืฉืชืžืฉื™ GitHub | | **๐Ÿ”‘ ืžืคืชื— API** | NVIDIA NIM | **ื—ื™ื ื** (1000 ืงืจื“ื™ื˜ื™ื) | ื—ื“ ืคืขืžื™ | ื‘ื“ื™ืงืช ืฉื›ื‘ื•ืช ื—ื™ื ื | | | DeepSeek | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | ื”ืžื—ื™ืจ/ืื™ื›ื•ืช ื”ื˜ื•ื‘ื™ื ื‘ื™ื•ืชืจ | | | ื’ืจื•ืง | ืฉื›ื‘ื” ื—ื™ื ื + ื‘ืชืฉืœื•ื | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | ื”ืกืงื” ืžื”ื™ืจื” ื‘ืžื™ื•ื—ื“ | | | xAI (Grok) | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | ื“ื’ืžื™ ื’ืจื•ืง | | | ืžื™ืกื˜ืจืœ | ืฉื›ื‘ื” ื—ื™ื ื + ื‘ืชืฉืœื•ื | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | AI ืื™ืจื•ืคืื™ | | | OpenRouter | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | 100+ ื“ื’ืžื™ื | | **๐Ÿ’ฐ ื–ื•ืœ** | GLM-4.7 | $0.6/1 ืžื™ืœื™ื•ืŸ | ื›ืœ ื™ื•ื 10:00 | ื’ื™ื‘ื•ื™ ืชืงืฆื™ื‘ื™ | | | MiniMax M2.1 | $0.2/1 ืžื™ืœื™ื•ืŸ | ื’ืœื’ื•ืœ ืฉืœ 5 ืฉืขื•ืช | ื”ืืคืฉืจื•ืช ื”ื–ื•ืœื” ื‘ื™ื•ืชืจ | | | ืงื™ืžื™ K2 | 9 $ ืœื—ื•ื“ืฉ ื“ื™ืจื” | 10 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ืœื—ื•ื“ืฉ | ืขืœื•ืช ืฆืคื•ื™ื” | | **๐Ÿ†“ ื—ื™ื ื** | iFlow | $0 | ืœืœื ื”ื’ื‘ืœื” | 8 ื“ื’ืžื™ื ื—ื™ื ื | | | ืงื•ื•ืŸ | $0 | ืœืœื ื”ื’ื‘ืœื” | 3 ื“ื’ืžื™ื ื—ื™ื ื | | | ืงื™ืจื• | $0 | ืœืœื ื”ื’ื‘ืœื” | ืงืœื•ื“ ื—ื•ืคืฉื™ | **๐Ÿ’ก ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืชื—ืœ ืขื Gemini CLI (180K ื—ื™ื ื/ื—ื•ื“ืฉ) + ืฉื™ืœื•ื‘ ืฉืœ iFlow (ืœืœื ื”ื’ื‘ืœื” ื‘ื—ื™ื ื) = ืขืœื•ืช ืฉืœ $0! --- ## ๐Ÿ’ก ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช ### ๐Ÿง  ื ื™ืชื•ื‘ ืœื™ื‘ื” ื•ืžื•ื“ื™ืขื™ืŸ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ----------------------------- | -------------------------------------------------------------------------------- | | ๐ŸŽฏ **Smart 4-tier Fallback** | ืžืกืœื•ืœ ืื•ื˜ื•ืžื˜ื™: ืžื ื•ื™ โ†’ ืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื | | ๐Ÿ“Š **ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช** | ืกืคื™ืจืช ืืกื™ืžื•ื ื™ื ื—ื™ื” + ืื™ืคื•ืก ืกืคื™ืจื” ืœืื—ื•ืจ ืœื›ืœ ืกืคืง | | ๐Ÿ”„ **ืชืจื’ื•ื ืคื•ืจืžื˜** | OpenAI โ†” ืงืœื•ื“ โ†” ืชืื•ืžื™ื โ†” ืกืžืŸ โ†” Kiro ื—ืœืงื” + ื—ื™ื˜ื•ื™ ืชื’ื•ื‘ื” | | ๐Ÿ‘ฅ **ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** | ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง ืขื ื‘ื—ื™ืจื” ื—ื›ืžื” | | ๐Ÿ”„ **ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™** | ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ืขื ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ | | ๐ŸŽจ **ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | 6 ืืกื˜ืจื˜ื’ื™ื•ืช: ืžื™ืœื•ื™ ืจืืฉื•ืŸ, ืขื’ื•ืœ ืจื•ื‘ื™ืŸ, p2c, ืืงืจืื™, ืคื—ื•ืช ื‘ืฉื™ืžื•ืฉ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืœืขืœื•ืช | | ๐Ÿงฉ **ื“ื’ืžื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | ื”ื•ืกืฃ ื›ืœ ืžื–ื”ื” ื“ื’ื ืœื›ืœ ืกืคืง | | ๐ŸŒ **ื ืชื‘ ืชื•ื•ื™ื ื›ืœืœื™ื™ื** โ€‹โ€‹ | ื ืชื‘ ื“ืคื•ืกื™ `provider/*` ืœื›ืœ ืกืคืง ื‘ืื•ืคืŸ ื“ื™ื ืžื™ | | ๐Ÿง  **ืชืงืฆื™ื‘ ื—ืฉื™ื‘ื”** | ืžืฆื‘ื™ ืžืขื‘ืจ, ืื•ื˜ื•ืžื˜ื™, ืžื•ืชืืžื™ื ืื™ืฉื™ืช ื•ื”ืชืืžื” ืœืžื•ื“ืœื™ื ืฉืœ ื—ืฉื™ื‘ื” | | ๐Ÿ”€ **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) | | โšก **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models | | ๐Ÿ’ฌ **ื”ื–ืจืงืช ืžืขืจื›ืช ืžื™ื™ื“ื™ืช** | ื”ื•ื“ืขืช ืžืขืจื›ืช ื’ืœื•ื‘ืœื™ืช ื”ื•ื—ืœื” ื‘ื›ืœ ื”ื‘ืงืฉื•ืช | | ๐Ÿ“„ **Responses API** | ืชืžื™ื›ื” ืžืœืื” ืฉืœ OpenAI Responses API (`/v1/responses`) ืขื‘ื•ืจ Codex | ### ๐ŸŽต ืžืžืฉืงื™ API ืจื‘-ืžื•ื“ืืœื™ื™ื | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------- | --------------------------------------------- | | ๐Ÿ–ผ๏ธ **ื™ืฆื™ืจืช ืชืžื•ื ื•ืช** | `/v1/images/generations` โ€” 4 ืกืคืงื™ื, 9+ ื“ื’ืžื™ื | | ๐Ÿ“ **ื”ื˜ื‘ืขื•ืช** | `/v1/embeddings` โ€” 6 ืกืคืงื™ื, 9+ ื“ื’ืžื™ื | | ๐ŸŽค **ืชืžืœื•ืœ ืื•ื“ื™ื•** | `/v1/audio/transcriptions` โ€” ืชื•ืื ืœื—ื™ืฉื” | | ๐Ÿ”Š **ื˜ืงืกื˜ ืœื“ื™ื‘ื•ืจ** | `/v1/audio/speech` โ€” ืกื™ื ืชื–ืช ืื•ื“ื™ื• ืžืจื•ื‘ื” ืกืคืงื™ื | | ๐Ÿ›ก๏ธ **ืžื ื—ื™ื** | `/v1/moderations` โ€” ื‘ื“ื™ืงื•ืช ื‘ื˜ื™ื—ื•ืช ืชื•ื›ืŸ | | ๐Ÿ”€ **ื“ื™ืจื•ื’ ืžื—ื“ืฉ** | `/v1/rerank` โ€” ื“ื™ืจื•ื’ ืžื—ื“ืฉ ืฉืœ ืจืœื•ื•ื ื˜ื™ื•ืช ื”ืžืกืžืš | ### ๐Ÿ›ก๏ธ ื—ื•ืกืŸ ื•ื‘ื™ื˜ื—ื•ืŸ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------------ | ---------------------------------------------------------------------------- | | ๐Ÿ”Œ **ืžืคืกืง ืžืขื’ืœื™ื** | ืคืชื™ื—ื”/ืกื’ื™ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืœื›ืœ ืกืคืง ืขื ืขืจื›ื™ ืกืฃ ื”ื ื™ืชื ื™ื ืœื”ื’ื“ืจื” | | ๐Ÿ›ก๏ธ **ืขื“ืจ ื ื’ื“ ืจืขืžื™ื** | Mutex + ืžื’ื‘ืœืช ืงืฆื‘ ืกืžืคื•ืจ ืขื‘ื•ืจ ืกืคืงื™ ืžืคืชื— API | | ๐Ÿง  **ืžื˜ืžื•ืŸ ืกืžื ื˜ื™** | ืžื˜ืžื•ืŸ ื“ื•-ืฉื›ื‘ืชื™ (ื—ืชื™ืžื” + ืกืžื ื˜ื™) ืžืคื—ื™ืช ืืช ื”ืขืœื•ืช ื•ื”ืฉื”ื™ื™ื” | | โšก **ื‘ืงืฉ ืื™ืžืคื•ื˜ื ืฆื™ื”** | ื—ืœื•ืŸ ื‘ื™ื˜ื•ืœ 5s ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื›ืคื•ืœื•ืช | | ๐Ÿ”’ **ื–ื™ื•ืฃ ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข TLS** | ืขื•ืงืฃ ื–ื™ื”ื•ื™ ื‘ื•ื˜ ืžื‘ื•ืกืก TLS ื‘ืืžืฆืขื•ืช wreq-js | | ๐ŸŒ **ืกื™ื ื•ืŸ IP** | ืจืฉื™ืžืช ื”ืจืฉืื•ืช/ืจืฉื™ืžืช ื—ืกื™ืžื•ืช ืขื‘ื•ืจ ื‘ืงืจืช ื’ื™ืฉื” ืœ-API | | ๐Ÿ“Š **ืžื’ื‘ืœื•ืช ืชืขืจื™ืคื™ื ื”ื ื™ืชื ื•ืช ืœืขืจื™ื›ื”** | RPM ื ื™ืชืŸ ืœื”ื’ื“ืจื”, ืคืขืจ ืžื™ื ื™ืžืœื™ ื•ืžืงืกื™ืžื•ื ื‘ืžืงื‘ื™ืœ ื‘ืจืžืช ื”ืžืขืจื›ืช | | ๐Ÿ’พ **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness | | ๐Ÿ”„ **Token Refresh Resilience** | Per-provider circuit breaker (5 failsโ†’30min) + 30s timeout per attempt | | ๐Ÿ›ก **ื”ื’ื ืช ื ืงื•ื“ืช ืงืฆื” API** | Auth gating + ื—ืกื™ืžืช ืกืคืง ืขื‘ื•ืจ ื ืงื•ื“ืช ื”ืงืฆื” `/models` | | ๐Ÿ”’ **ื ืจืื•ืช ืคืจื•ืงืกื™** | ืชื’ื™ื ืžืงื•ื“ื“ื™ื ื‘ืฆื‘ืข: ๐ŸŸข ื’ืœื•ื‘ืœื™, ๐ŸŸก ืกืคืง, ๐Ÿ”ต ืœื›ืœ ื—ื™ื‘ื•ืจ ืขื ืชืฆื•ื’ืช IP | | ๐ŸŒ **ืชืฆื•ืจืช ืคืจื•ืงืกื™ ื‘ืฉืœื•ืฉ ืจืžื•ืช** | ื”ื’ื“ืจ ืคืจื•ืงืกื™ ื‘ืจืžื” ื’ืœื•ื‘ืœื™ืช, ืœื›ืœ ืกืคืง ืื• ืœื›ืœ ื—ื™ื‘ื•ืจ | ### ๐Ÿ“Š ื™ื›ื•ืœืช ืชืฆืคื™ืช ื•ื ื™ืชื•ื— | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------- | ---------------------------------------------------------------------- | | ๐Ÿ“ **ื‘ืงืฉ ืจื™ืฉื•ื** | ืžืฆื‘ ื ื™ืคื•ื™ ื‘ืื’ื™ื ืขื ื™ื•ืžื ื™ ื‘ืงืฉื•ืช/ืชื’ื•ื‘ื•ืช ืžืœืื™ื | | ๐Ÿ’พ **ื™ื•ืžื ื™ ืคืจื•ืงืกื™ ืฉืœ SQLite** | ื™ื•ืžื ื™ ืคืจื•ืงืกื™ ืžืชืžืฉื›ื™ื ืฉื•ืจื“ื™ื ืืชื—ื•ืœ ืžื—ื“ืฉ ืฉืœ ื”ืฉืจืช | | ๐Ÿ“Š **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ืื ืœื™ื˜ื™ืงืก** | ืžื•ืคืขืœ ืžื—ื“ืฉ ื‘-Recharts: ื›ืจื˜ื™ืกื™ ืกื˜ื˜ื™ืกื˜ื™ืงื”, ื˜ื‘ืœืช ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ, ื˜ื‘ืœืช ืกืคืงื™ื | | ๐Ÿ“ˆ **ืžืขืงื‘ ื”ืชืงื“ืžื•ืช** | ื”ืฆื˜ืจืคื•ืช ืœืื™ืจื•ืขื™ ื”ืชืงื“ืžื•ืช SSE ืœืกื˜ืจื™ืžื™ื ื’ | | ๐Ÿงช **LM Evaluations** | ื‘ื“ื™ืงืช ืกื˜ ื–ื”ื‘ ืขื 4 ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืชืืžื” | | ๐Ÿ” **ื‘ืงืฉ ื˜ืœืžื˜ืจื™ื”** | ืฆื‘ื™ืจืช ื–ืžืŸ ืื—ื–ื•ืจ p50/p95/p99 + ืžืขืงื‘ ืื—ืจ X-Request-Id | | ๐Ÿ“‹ **ืœื•ื— ืžื—ื•ื•ื ื™ื ื™ื•ืžื ื™** | ืขืžื•ื“ ืžืื•ื—ื“ ื‘ืŸ 4 ืœืฉื•ื ื™ื•ืช: ื™ื•ืžื ื™ ื‘ืงืฉื•ืช, ื™ื•ืžื ื™ ืคืจื•ืงืกื™, ื™ื•ืžื ื™ ื‘ื™ืงื•ืจืช, ืžืกื•ืฃ | | ๐Ÿ–ฅ๏ธ **ืžืฆื™ื’ ื™ื•ืžืŸ ืžืกื•ืฃ** | ืžืฆื™ื’ ื‘ืกื’ื ื•ืŸ ื˜ืจืžื™ื ืœ ื‘ื–ืžืŸ ืืžืช ืขื ืžืกื ืŸ ืจืžื•ืช, ื—ื™ืคื•ืฉ, ื’ืœื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช | | ๐Ÿ“‘ **ืจื™ืฉื•ื ืžื‘ื•ืกืก ืงื‘ืฆื™ื** | ืžื™ื™ืจื˜ ืžืกื•ืฃ ืœื•ื›ื“ ืืช ื›ืœ ื”ืคืœื˜ ืœืงื•ื‘ืฅ ื™ื•ืžืŸ JSON ืขื ืกื™ื‘ื•ื‘ | | ๐Ÿฅ **ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช** | ื–ืžืŸ ืคืขื™ืœื•ืช ืžืขืจื›ืช, ืžืฆื‘ื™ ืžืคืกืง ื–ืจื, ื ืขื™ืœื•ืช, ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื˜ืžื•ืŸ | | ๐Ÿ’ฐ **ืžืขืงื‘ ืขืœื•ื™ื•ืช** | ื ื™ื”ื•ืœ ืชืงืฆื™ื‘ + ืชืฆื•ืจืช ืชืžื—ื•ืจ ืœืคื™ ื“ื’ื | ### โ˜๏ธ ืคืจื™ืกื” ื•ืกื ื›ืจื•ืŸ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ---------------------------------- | --------------------------------------------------------------------- | | ๐Ÿ’พ **ืกื ื›ืจื•ืŸ ืขื ืŸ** | ืกื ื›ืจื•ืŸ ืชืฆื•ืจื” ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื ื‘ืืžืฆืขื•ืช Cloudflare Workers | | ๐ŸŒ **ืคืจื•ืก ื‘ื›ืœ ืžืงื•ื** | Localhost, VPS, Docker, Cloudflare Workers | | ๐Ÿ”‘ **ื ื™ื”ื•ืœ ืžืคืชื—ื•ืช API** | ืฆื•ืจ, ืกื•ื‘ื‘ ื•ื”ื™ืงืฃ ืžืคืชื—ื•ืช API ืœื›ืœ ืกืคืง | | ๐Ÿง™ **ืืฉืฃ ื”ืขืœื™ื™ื” ืœืžื˜ื•ืก** | ื”ื’ื“ืจื” ืžื•ื“ืจื›ืช ื‘ืช 4 ืฉืœื‘ื™ื ืœืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื | | ๐Ÿ”ง **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ื›ืœื™ CLI** | ื”ื’ื“ืจ ื‘ืœื—ื™ืฆื” ืื—ืช ืืช Claude, Codex, Cline, OpenClaw, Kilo, Antigravity | | ๐Ÿ”„ **ื’ื™ื‘ื•ื™ื™ื ืฉืœ DB** | ื’ื™ื‘ื•ื™, ืฉื—ื–ื•ืจ, ื™ื™ืฆื•ื ื•ื™ื™ื‘ื•ื โ€‹โ€‹ืื•ื˜ื•ืžื˜ื™ ืขื‘ื•ืจ ื›ืœ ื”ื”ื’ื“ืจื•ืช | | ๐ŸŒ **ื‘ื™ื ืœืื•ืžื™ื•ืช** | i18n ืžืœื ืขื next-intl โ€” ืชืžื™ื›ื” ื‘ืื ื’ืœื™ืช + ืคื•ืจื˜ื•ื’ื–ื™ืช (ื‘ืจื–ื™ืœ) | | ๐ŸŒ **ื‘ื•ืจืจ ืฉืคื”** | ืกืžืœ ื’ืœื•ื‘ื•ืก ื‘ื›ื•ืชืจืช ืœืžืขื‘ืจ ืฉืคื” ื‘ื–ืžืŸ ืืžืช (๐Ÿ‡บ๐Ÿ‡ธ/๐Ÿ‡ง๐Ÿ‡ท) | | ๐Ÿ“‚ **ืกืคืจื™ื™ืช ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | `DATA_DIR` env var ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ `~/.omniroute` ื ืชื™ื‘ ืื—ืกื•ืŸ |
๐Ÿ“– ืคืจื˜ื™ ืชื›ื•ื ื” ### ๐ŸŽฏ 4 ืฉื›ื‘ื•ืช ืกืชื™ืจื” ื—ื›ืžื” ืฆื•ืจ ืฉื™ืœื•ื‘ื™ื ืขื ื ืคื™ืœื” ืื•ื˜ื•ืžื˜ื™ืช: ``` Combo: "my-coding-stack" 1. cc/claude-opus-4-6 (your subscription) 2. nvidia/llama-3.3-70b (free NVIDIA API) 3. glm/glm-4.7 (cheap backup, $0.6/1M) 4. if/kimi-k2-thinking (free fallback) โ†’ Auto switches when quota runs out or errors occur ``` ### ๐Ÿ“Š ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช - ืฆืจื™ื›ืช ืืกื™ืžื•ื ื™ื ืœื›ืœ ืกืคืง - ืืคืก ืกืคื™ืจื” ืœืื—ื•ืจ (5 ืฉืขื•ืช, ื™ื•ืžื™, ืฉื‘ื•ืขื™) - ื”ืขืจื›ืช ืขืœื•ื™ื•ืช ืขื‘ื•ืจ ืฉื›ื‘ื•ืช ื‘ืชืฉืœื•ื - ื“ื•ื—ื•ืช ื”ื•ืฆืื•ืช ื—ื•ื“ืฉื™ื™ื ### ๐Ÿ”„ ืชืจื’ื•ื ืคื•ืจืžื˜ ืชืจื’ื•ื ื—ืœืง ื‘ื™ืŸ ืคื•ืจืžื˜ื™ื: - **OpenAI** โ†” **ืงืœื•ื“** โ†” **ืชืื•ืžื™ื** โ†” **ืชื’ื•ื‘ื•ืช OpenAI** - ื›ืœื™ ื”-CLI ืฉืœืš ืฉื•ืœื— ืคื•ืจืžื˜ OpenAI โ†’ OmniRoute ืžืชืจื’ื โ†’ ื”ืกืคืง ืžืงื‘ืœ ืคื•ืจืžื˜ ืžืงื•ืจื™ - ืขื•ื‘ื“ ืขื ื›ืœ ื›ืœื™ ื”ืชื•ืžืš ื‘ื ืงื•ื“ื•ืช ืงืฆื” ืžื•ืชืืžื•ืช ืื™ืฉื™ืช ืฉืœ OpenAI - **ื—ื™ื˜ื•ื™ ืชื’ื•ื‘ื”** - ืžืกื™ืจ ืฉื“ื•ืช ืœื ืกื˜ื ื“ืจื˜ื™ื™ื ืœืฆื•ืจืš ืชืื™ืžื•ืช ืงืคื“ื ื™ืช ืฉืœ OpenAI SDK - **ื ื•ืจืžืœื™ื–ืฆื™ื” ืฉืœ ืชืคืงื™ื“ื™ื** โ€” `developer` โ†’ `system` ืขื‘ื•ืจ ืœื-OpenAI; `system` โ†’ `user` ืขื‘ื•ืจ ื“ื’ืžื™ GLM/ERNIE - **ื—ื™ืœื•ืฅ ืชื’ ื—ืฉื™ื‘ื”** โ€” `` ื‘ืœื•ืงื™ื โ†’ `reasoning_content` ืœืžื•ื“ืœื™ื ื—ื•ืฉื‘ื™ื - **ืคืœื˜ ืžื•ื‘ื ื”** โ€” `json_schema` โ†’ `responseMimeType`/`responseSchema` ืฉืœ Gemini ### ๐Ÿ‘ฅ ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช - ื”ื•ืกืฃ ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง - ื ื™ืชื•ื‘ ืกื‘ื‘ ืื•ื˜ื•ืžื˜ื™ ืื• ืžื‘ื•ืกืก ืขื“ื™ืคื•ืช - ื—ื–ืจื” ืœื—ืฉื‘ื•ืŸ ื”ื‘ื ื›ืืฉืจ ืื—ื“ ืžื’ื™ืข ืœืžื›ืกื” ### ๐Ÿ”„ ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™ - ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ืœืคื ื™ ืคืงื™ืขืช ื”ืชื•ืงืฃ - ืื™ืŸ ืฆื•ืจืš ื‘ืื™ืžื•ืช ืžื—ื“ืฉ ื™ื“ื ื™ - ื—ื•ื•ื™ื” ื—ืœืงื” ื‘ื›ืœ ื”ืกืคืงื™ื ### ๐ŸŽจ ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช - ืฆื•ืจ ืฉื™ืœื•ื‘ื™ ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื” - 6 ืืกื˜ืจื˜ื’ื™ื•ืช: ืžื™ืœื•ื™ ืจืืฉื•ืŸ, ืขื’ื•ืœ, ื›ื•ื— ืžืฉืชื™ ื‘ื—ื™ืจื•ืช, ืืงืจืื™, ืคื—ื•ืช ื‘ืฉื™ืžื•ืฉ, ืื•ืคื˜ื™ืžื™ื–ืฆื™ื™ืช ืขืœื•ืช - ืฉืชืฃ ืฉื™ืœื•ื‘ื™ื ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื ืขื Cloud Sync ### ๐Ÿฅ ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช - ืžืฆื‘ ืžืขืจื›ืช (ื–ืžืŸ ืคืขื™ืœื•ืช, ื’ืจืกื”, ืฉื™ืžื•ืฉ ื‘ื–ื™ื›ืจื•ืŸ) - ืžืฆื‘ื™ ืžืคืกืง ืœื›ืœ ืกืคืง (ืกื’ื•ืจ/ืคืชื•ื—/ื—ืฆื™ ืคืชื•ื—) - ืžืฆื‘ ืžื’ื‘ืœืช ืชืขืจื™ืฃ ื•ื ืขื™ืœื” ืืงื˜ื™ื‘ื™ืช - ืกื˜ื˜ื™ืกื˜ื™ืงืช ืžื˜ืžื•ืŸ ื—ืชื™ืžื” - ื˜ืœืžื˜ืจื™ื™ืช ืื—ื–ื•ืจ (p50/p95/p99) + ืžื˜ืžื•ืŸ ืคืงื•ื“ื•ืช - ืืคืก ืžืฆื‘ ื‘ืจื™ืื•ืชื™ ื‘ืœื—ื™ืฆื” ืื—ืช ### ๐Ÿ”ง ืžื’ืจืฉ ืžืฉื—ืงื™ื ืœืžืชืจื’ืžื™ื OmniRoute ื›ื•ืœืœ ืžื’ืจืฉ ืžืฉื—ืงื™ ืžืชืจื’ืžื™ื ืžื•ื‘ื ื” ืจื‘ ืขื•ืฆืžื” ืขื **4 ืžืฆื‘ื™ื** ืœื ื™ืคื•ื™ ื‘ืื’ื™ื, ื‘ื“ื™ืงื” ื•ื ื™ื˜ื•ืจ ืชืจื’ื•ืžื™ API: | ืžืฆื‘ | ืชื™ืื•ืจ | | ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **๐Ÿ’ป ืžื’ืจืฉ ืžืฉื—ืงื™ื** | ืชืจื’ื•ื ืคื•ืจืžื˜ ื™ืฉื™ืจ - ื”ื“ื‘ืง ื›ืœ ื’ื•ืฃ ื‘ืงืฉืช API ื•ืจืื” ื‘ืื•ืคืŸ ืžื™ื™ื“ื™ ื›ื™ืฆื“ OmniRoute ืžืชืจื’ื ืื•ืชื• ื‘ื™ืŸ ืคื•ืจืžื˜ื™ื ืฉืœ ืกืคืงื™ื (OpenAI โ†” Claude โ†” Gemini โ†” Responses API). ื›ื•ืœืœ ืชื‘ื ื™ื•ืช ืœื“ื•ื’ืžื” ื•ื–ื™ื”ื•ื™ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืคื•ืจืžื˜ื™ื. | | **๐Ÿ’ฌ ื‘ื•ื“ืง ืฆ'ืื˜** | ืฉืœื— ื‘ืงืฉื•ืช ืฆ'ืื˜ ืืžื™ืชื™ื•ืช ื“ืจืš OmniRoute ื•ืจืื” ืืช ื”ืžืกืœื•ืœ ื”ืžืœื ื”ืœื•ืš ื•ืฉื•ื‘: ื”ืงืœื˜ ืฉืœืš, ื”ื‘ืงืฉื” ื”ืžืชื•ืจื’ืžืช, ืชื’ื•ื‘ืช ื”ืกืคืง ื•ื”ืชื’ื•ื‘ื” ื”ืžืชื•ืจื’ืžืช ื—ื–ืจื”. ืœื ื™ืกื•ืœื ื‘ืคื– ืขื‘ื•ืจ ืื™ืžื•ืช ื ื™ืชื•ื‘ ืžืฉื•ืœื‘. | | **๐Ÿงช ืกืคืกืœ ืžื‘ื—ืŸ** | ืžืฆื‘ ื‘ื“ื™ืงืช ืืฆื•ื•ื” - ื”ื’ื“ื™ืจื• ืžืงืจื™ ื‘ื“ื™ืงื” ืžืจื•ื‘ื™ื ืขื ืชืฉื•ืžื•ืช ื•ืชืคื•ืงื•ืช ืฆืคื•ื™ื•ืช ืฉื•ื ื•ืช, ื”ืคืขืœ ืืช ื›ื•ืœื ื‘ื‘ืช ืื—ืช ื•ื”ืฉื•ื•ื” ืชื•ืฆืื•ืช ื‘ื™ืŸ ืกืคืงื™ื ื•ื“ื’ืžื™ื. | | **๐Ÿ“ฑ ืฆื’ ื—ื™** | ื ื™ื˜ื•ืจ ื‘ืงืฉื•ืช ื‘ื–ืžืŸ ืืžืช - ืฆืคื” ื‘ื‘ืงืฉื•ืช ื ื›ื ืกื•ืช ื›ืฉื”ืŸ ื–ื•ืจืžื•ืช ื“ืจืš OmniRoute, ืจืื” ืชืจื’ื•ืžื™ ืคื•ืจืžื˜ื™ื ื”ืžืชืจื—ืฉื™ื ื‘ืฉื™ื“ื•ืจ ื—ื™ ื•ื–ื™ื”ื•ื™ ื‘ืขื™ื•ืช ื‘ืื•ืคืŸ ืžื™ื™ื“ื™. | **ื’ื™ืฉื”:** ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืžืชืจื’ื (ืกืจื’ืœ ืฆื“) ### ๐Ÿ’พ ืกื ื›ืจื•ืŸ ืขื ืŸ - ืกื ื›ืจื•ืŸ ืกืคืงื™ื, ืฉื™ืœื•ื‘ื™ื ื•ื”ื’ื“ืจื•ืช ื‘ื™ืŸ ืžื›ืฉื™ืจื™ื - ืกื ื›ืจื•ืŸ ืจืงืข ืื•ื˜ื•ืžื˜ื™ - ืื—ืกื•ืŸ ืžื•ืฆืคืŸ ืžืื•ื‘ื˜ื—
## ๐Ÿงช ื”ืขืจื›ื•ืช (ื”ืขืจื›ื•ืช) OmniRoute ื›ื•ืœืœ ืžืกื’ืจืช ื”ืขืจื›ื” ืžื•ื‘ื ื™ืช ืœื‘ื“ื™ืงืช ืื™ื›ื•ืช ืชื’ื•ื‘ืช LLM ืžื•ืœ ืกื˜ ืžื•ื–ื”ื‘. ื’ืฉ ืืœื™ื• ื“ืจืš **Analytics โ†’ Evals** ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื. ### ืกื˜ ืžื•ื–ื”ื‘ ืžื•ื‘ื ื” ื”-"OmniRoute Golden Set" ื”ื ื˜ืขืŸ ืžืจืืฉ ืžื›ื™ืœ 10 ืžืงืจื™ ื‘ื“ื™ืงื” ื”ืžื›ืกื™ื: - ื‘ืจื›ื•ืช, ืžืชืžื˜ื™ืงื”, ื’ื™ืื•ื’ืจืคื™ื”, ื™ืฆื™ืจืช ืงื•ื“ - ืชืื™ืžื•ืช ืœืคื•ืจืžื˜ JSON, ืชืจื’ื•ื, ืกื™ืžื•ืŸ - ืกื™ืจื•ื‘ ื‘ื˜ื™ื—ื•ืชื™ (ืชื•ื›ืŸ ืžื–ื™ืง), ืกืคื™ืจื”, ื”ื™ื’ื™ื•ืŸ ื‘ื•ืœื™ืื ื™ ### ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืขืจื›ื” | ืืกื˜ืจื˜ื’ื™ื” | ืชื™ืื•ืจ | ื“ื•ื’ืžื” | | ---------- | ------------------------------------------ | -------------------------------- | | `exact` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ื‘ื“ื™ื•ืง | `"4"` | | `contains` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ื›ื™ืœ ืชืช ืžื—ืจื•ื–ืช (ืœื ืชืœื•ื™ ืจื™ืฉื™ื•ืช) | `"Paris"` | | `regex` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ืœื“ืคื•ืก ื”ืจืงืก | `"1.*2.*3"` | | `custom` | ืคื•ื ืงืฆื™ื™ืช JS ืžื•ืชืืžืช ืžื—ื–ื™ืจื” true/false | `(output) => output.length > 10` | --- ## ๐Ÿ“– ืžื“ืจื™ืš ื”ืชืงื ื”
๐Ÿ’ณ ืกืคืงื™ ืžื ื•ื™ื™ื ### ืงื•ื“ ืงืœื•ื“ (ืคืจื•/ืžืงืก) ```bash 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 ``` **ื˜ื™ืค ืžืงืฆื•ืขืŸ:** ื”ืฉืชืžืฉ ื‘-Opus ืœืžืฉื™ืžื•ืช ืžื•ืจื›ื‘ื•ืช, ื‘ืกื•ื ื˜ ืœืžื”ื™ืจื•ืช. OmniRoute ืขื•ืงื‘ ืื—ืจ ืžื›ืกื” ืœื›ืœ ื“ื’ื! ### OpenAI Codex (ืคืœื•ืก/ืคืจื•) ```bash Dashboard โ†’ Providers โ†’ Connect Codex โ†’ OAuth login (port 1455) โ†’ 5-hour + weekly reset Models: cx/gpt-5.2-codex cx/gpt-5.1-codex-max ``` ### Gemini CLI (180K ื‘ื—ื™ื ื ืœื—ื•ื“ืฉ!) ```bash Dashboard โ†’ Providers โ†’ Connect Gemini CLI โ†’ Google OAuth โ†’ 180K completions/month + 1K/day Models: gc/gemini-3-flash-preview gc/gemini-2.5-pro ``` **ื”ืขืจืš ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ:** ืฉื›ื‘ืช ื—ื™ื ื ืขื ืงื™ืช! ื”ืฉืชืžืฉ ื‘ื–ื” ืœืคื ื™ ืฉื›ื‘ื•ืช ื‘ืชืฉืœื•ื. ### GitHub Copilot ```bash Dashboard โ†’ Providers โ†’ Connect GitHub โ†’ OAuth via GitHub โ†’ Monthly reset (1st of month) Models: gh/gpt-5 gh/claude-4.5-sonnet gh/gemini-3-pro ```
๐Ÿ”‘ ืกืคืงื™ ืžืคืชื— API ### NVIDIA NIM (1000 ืงืจื“ื™ื˜ื™ื ื‘ื—ื™ื ื!) 1. ื”ื™ืจืฉื: [build.nvidia.com](https://build.nvidia.com) 2. ืงื‘ืœ ืžืคืชื— API ื‘ื—ื™ื ื (ื›ื•ืœืœ 1000 ืงืจื“ื™ื˜ื™ื ืœื”ืกืงื”) 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† NVIDIA NIM: - ืžืคืชื— API: `nvapi-your-key` **ื“ื’ืžื™ื:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` ื•ืขื•ื“ 50+ **ื˜ื™ืค ืžืงืฆื•ืขื™:** API ืชื•ืื OpenAI - ืขื•ื‘ื“ ื‘ืฆื•ืจื” ื—ืœืงื” ืขื ืชืจื’ื•ื ื”ืคื•ืจืžื˜ ืฉืœ OmniRoute! ### DeepSeek 1. ื”ื™ืจืฉื: [platform.deepseek.com](https://platform.deepseek.com) 2. ืงื‘ืœ ืžืคืชื— API 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† DeepSeek **ื“ื’ืžื™ื:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder` ### Groq (ืจืžื” ื—ื™ื ื ื–ืžื™ื ื”!) 1. ื”ื™ืจืฉื: [console.groq.com](https://console.groq.com) 2. ืงื‘ืœ ืžืคืชื— API (ื›ืœื•ืœ ืฉื›ื‘ืช ื—ื™ื ื) 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† Groq **ื“ื’ืžื™ื:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b` **ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืกืงื” ืžื”ื™ืจื” ื‘ืžื™ื•ื—ื“ - ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืœืงื™ื“ื•ื“ ื‘ื–ืžืŸ ืืžืช! ### OpenRouter (100+ ื“ื’ืžื™ื) 1. ื”ื™ืจืฉื: [openrouter.ai](https://openrouter.ai) 2. ืงื‘ืœ ืžืคืชื— API 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืกืคืง โ† OpenRouter **ื“ื’ืžื™ื:** ื’ื™ืฉื” ืœ-100+ ื“ื’ืžื™ื ืžื›ืœ ื”ืกืคืงื™ื ื”ื’ื“ื•ืœื™ื ื‘ืืžืฆืขื•ืช ืžืคืชื— API ื™ื—ื™ื“.
๐Ÿ’ฐ ืกืคืงื™ื ื–ื•ืœื™ื (ื’ื™ื‘ื•ื™) ### GLM-4.7 (ืื™ืคื•ืก ื™ื•ืžื™, $0.6/1 ืžื™ืœื™ื•ืŸ) 1. ื”ื™ืจืฉื: [Zhipu AI](https://open.bigmodel.cn/) 2. ืงื‘ืœ ืžืคืชื— API ืž-Coding Plan 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API: - ืกืคืง: `glm` - ืžืคืชื— API: `your-key` **ื”ืฉืชืžืฉ:** `glm/glm-4.7` **ื˜ื™ืค ืœืžืงืฆื•ืขื ื™ื:** ืชื•ื›ื ื™ืช ืงื™ื“ื•ื“ ืžืฆื™ืขื” ืžื›ืกื” ืฉืœ 3ร— ื‘ืขืœื•ืช ืฉืœ 1/7! ืื™ืคื•ืก ื›ืœ ื™ื•ื 10:00 ื‘ื‘ื•ืงืจ. ### MiniMax M2.1 (ืื™ืคื•ืก ืฉืœ 5 ืฉืขื•ืช, $0.20/1 ืžื™ืœื™ื•ืŸ ื“ื•ืœืจ) 1. ื”ื™ืจืฉื: [MiniMax](https://www.minimax.io/) 2. ืงื‘ืœ ืžืคืชื— API 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API **ื”ืฉืชืžืฉ:** `minimax/MiniMax-M2.1` **ื˜ื™ืค ืžืงืฆื•ืขื™:** ื”ืืคืฉืจื•ืช ื”ื–ื•ืœื” ื‘ื™ื•ืชืจ ืœื”ืงืฉืจ ืืจื•ืš (1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื)! ### Kimi K2 (ื“ื™ืจื” ืฉืœ $9 ืœื—ื•ื“ืฉ) 1. ื”ื™ืจืฉื: [Moonshot AI](https://platform.moonshot.ai/) 2. ืงื‘ืœ ืžืคืชื— API 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API **ื”ืฉืชืžืฉ:** `kimi/kimi-latest` **ื˜ื™ืค ืžืงืฆื•ืขื™:** 9$ ืงื‘ื•ืข ืœื—ื•ื“ืฉ ืขื‘ื•ืจ 10 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื = 0.90$/1 ืžื™ืœื™ื•ืŸ ืขืœื•ืช ืืคืงื˜ื™ื‘ื™ืช!
๐Ÿ†“ ืกืคืงื™ื ื‘ื—ื™ื ื (ื’ื™ื‘ื•ื™ ื—ื™ืจื•ื) ### iFlow (8 ื“ื’ืžื™ื ื‘ื—ื™ื ื) ```bash Dashboard โ†’ Connect iFlow โ†’ iFlow OAuth login โ†’ Unlimited usage Models: if/kimi-k2-thinking if/qwen3-coder-plus if/glm-4.7 if/minimax-m2 if/deepseek-r1 ``` ### Qwen (3 ื“ื’ืžื™ื ื‘ื—ื™ื ื) ```bash Dashboard โ†’ Connect Qwen โ†’ Device code authorization โ†’ Unlimited usage Models: qw/qwen3-coder-plus qw/qwen3-coder-flash ``` ### ืงื™ืจื• (ืงืœื•ื“ ื‘ื—ื™ื ื) ```bash Dashboard โ†’ Connect Kiro โ†’ AWS Builder ID or Google/GitHub โ†’ Unlimited usage Models: kr/claude-sonnet-4.5 kr/claude-haiku-4.5 ```
๐ŸŽจ ืฆื•ืจ ืฉื™ืœื•ื‘ื™ื ### ื“ื•ื’ืžื” 1: ื”ื’ื“ืœืช ืžื ื•ื™ โ† ื’ื™ื‘ื•ื™ ื–ื•ืœ ``` 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 ``` ### ื“ื•ื’ืžื” 2: ื—ื™ื ื ื‘ืœื‘ื“ (ืขืœื•ืช ืืคืก) ``` 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! ```
๐Ÿ”ง ืฉื™ืœื•ื‘ CLI ### ืกืžืŸ IDE ``` Settings โ†’ Models โ†’ Advanced: OpenAI API Base URL: http://localhost:20128/v1 OpenAI API Key: [from OmniRoute dashboard] Model: cc/claude-opus-4-6 ``` ### ืงืœื•ื“ ืงื•ื“ ื”ืฉืชืžืฉ ื‘ื“ืฃ **ื›ืœื™ CLI** ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื‘ื•ืจ ืชืฆื•ืจื” ื‘ืœื—ื™ืฆื” ืื—ืช, ืื• ืขืจื•ืš ืืช `~/.claude/settings.json` ื‘ืื•ืคืŸ ื™ื“ื ื™. ### Codex CLI ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### OpenClaw **ืืคืฉืจื•ืช 1 - ืœื•ื— ืžื—ื•ื•ื ื™ื (ืžื•ืžืœืฅ):** ``` Dashboard โ†’ CLI Tools โ†’ OpenClaw โ†’ Select Model โ†’ Apply ``` **ืืคืฉืจื•ืช 2 โ€” ื™ื“ื ื™:** ืขืจื•ืš `~/.openclaw/openclaw.json`: ```json { "models": { "providers": { "omniroute": { "baseUrl": "http://127.0.0.1:20128/v1", "apiKey": "sk_omniroute", "api": "openai-completions" } } } } ``` > **ื”ืขืจื”:** OpenClaw ืขื•ื‘ื“ ืจืง ืขื OmniRoute ืžืงื•ืžื™. ื”ืฉืชืžืฉ ื‘-`127.0.0.1` ื‘ืžืงื•ื ื‘-`localhost` ื›ื“ื™ ืœื”ื™ืžื ืข ืžื‘ืขื™ื•ืช ื‘ืจื–ื•ืœื•ืฆื™ื” ืฉืœ 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 ```
--- ## ๐Ÿ› ืคืชืจื•ืŸ ื‘ืขื™ื•ืช
ืœื—ืฅ ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ื”ืžื“ืจื™ืš ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช **"ืžื•ื“ืœ ื”ืฉืคื” ืœื ืกื™ืคืง ื”ื•ื“ืขื•ืช"** - ืžื™ืฆืชื” ืžื›ืกืช ื”ืกืคืง โ† ื‘ื“ื•ืง ืืช ืขื•ืงื‘ ื”ืžื›ืกื•ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื - ืคืชืจื•ืŸ: ื”ืฉืชืžืฉ ื‘-combo fallback ืื• ืขื‘ื•ืจ ืœืฉื›ื‘ื” ื–ื•ืœื” ื™ื•ืชืจ **ื”ื’ื‘ืœืช ืชืขืจื™ืคื™ื** - ืžื›ืกืช ืžื ื•ื™ื™ื ื ื’ืžืจืช โ† Fallback ืœ-GLM/MiniMax - ื”ื•ืกืฃ ืฉื™ืœื•ื‘: `cc/claude-opus-4-6 โ†’ glm/glm-4.7 โ†’ if/kimi-k2-thinking` **ืคื’ ืชื•ืงืคื• ืฉืœ ืืกื™ืžื•ืŸ OAuth** - ืจืขื ื•ืŸ ืื•ื˜ื•ืžื˜ื™ ืขืœ ื™ื“ื™ OmniRoute - ืื ื”ื‘ืขื™ื•ืช ื ืžืฉื›ื•ืช: ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืง โ† ื”ืชื—ื‘ืจ ืžื—ื“ืฉ **ืขืœื•ื™ื•ืช ื’ื‘ื•ื”ื•ืช** - ื‘ื“ื•ืง ืกื˜ื˜ื™ืกื˜ื™ืงืช ืฉื™ืžื•ืฉ ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ† ืขืœื•ื™ื•ืช - ื”ื—ืœืฃ ืืช ื”ื“ื’ื ื”ืจืืฉื™ ืœ-GLM/MiniMax - ื”ืฉืชืžืฉ ื‘ืฉื›ื‘ื” ื—ื™ื ืžื™ืช (Gemini CLI, iFlow) ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ืœื ืงืจื™ื˜ื™ื•ืช **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื ืคืชื— ื‘ื™ืฆื™ืื” ืฉื’ื•ื™ื”** - ื”ื’ื“ืจ `PORT=20128` ื•`NEXT_PUBLIC_BASE_URL=http://localhost:20128` **ืฉื’ื™ืื•ืช ืกื ื›ืจื•ืŸ ื‘ืขื ืŸ** - ืืžืช `BASE_URL` ื ืงื•ื“ื•ืช ืœืžื•ืคืข ื”ืจื™ืฆื” ืฉืœืš - ืืžืช `CLOUD_URL` ื ืงื•ื“ื•ืช ืœื ืงื•ื“ืช ื”ืงืฆื” ื”ืฆืคื•ื™ื” ืฉืœืš ื‘ืขื ืŸ - ืฉืžื•ืจ ืขืœ ืขืจื›ื™ `NEXT_PUBLIC_*` ืžื™ื•ืฉืจื™ื ืขื ืขืจื›ื™ ืฆื“ ื”ืฉืจืช **ื”ื›ื ื™ืกื” ื”ืจืืฉื•ื ื” ืœื ืขื•ื‘ื“ืช** - ื‘ื“ื•ืง ืืช `INITIAL_PASSWORD` ื‘-`.env` - ืื ืœื ืžื•ื’ื“ืจืช, ืกื™ืกืžืช ื”ื—ืœืคื” ื”ื™ื `123456` **ืœืœื ื™ื•ืžื ื™ ื‘ืงืฉื•ืช** - ื”ื’ื“ืจ `ENABLE_REQUEST_LOGS=true` ื‘-`.env` **ื‘ื“ื™ืงืช ื—ื™ื‘ื•ืจ ืžืจืื” "ืœื ื—ื•ืงื™" ืขื‘ื•ืจ ืกืคืงื™ื ืชื•ืืžื™ OpenAI** - ืกืคืงื™ื ืจื‘ื™ื ืื™ื ื ื—ื•ืฉืคื™ื ื ืงื•ื“ืช ืงืฆื” `/models` - OmniRoute v1.0.6+ ื›ื•ืœืœ ืื™ืžื•ืช ื—ื•ื–ืจ ื‘ืืžืฆืขื•ืช ื”ืฉืœืžืช ืฆ'ืื˜ - ื•ื“ื ืฉื›ืชื•ื‘ืช ื”ืืชืจ ื”ื‘ืกื™ืกื™ืช ื›ื•ืœืœืช ืืช ื”ืกื™ื•ืžืช `/v1` ### ๐Ÿ” OAuth > **โš ๏ธ ื—ืฉื•ื‘ ืขื‘ื•ืจ ืฉื™ืžื•ืฉ ื‘-OmniRoute ืขื ืžืจื—ื•ืง VPS/Docker/ืฉืจืช** ### ื”ืื ืืคืฉืจ ืœืขืฉื•ืช ืื ื˜ื™ ื›ื‘ื™ื“ื” / CLI ืžื–ืœ ืชืื•ืžื™ื ืขืœ ืฉื™ืจื•ืชื™ื ืžืจื•ื—ืงื™ื? ืฉื™ืžื•ืฉ ื‘-**Antigravity** ื•-**Gemini CLI** ื‘ืฉื™ืžื•ืฉ ื‘-**Google OAuth 2.0** ืขื‘ื•ืจ ืื•ื˜ื ื˜ื™ืงื”. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs prรฉ-cadastradas no Google Cloud Console do aplicativo. As credenciais OAuth embutidas no OmniRoute estรฃo cadastradas **apenas para `localhost`**. Quando vocรช acessa o OmniRoute em um servidor remoto (ืœื“ื•ื’ืžื”: `https://omniroute.meuservidor.com`), o Google rejeita a autenticaรงรฃo com: ``` Error 400: redirect_uri_mismatch ``` ### ืคืชืจื•ืŸ: ื”ื’ื“ืจ ืืช ื”ืชืฆื•ืจื” ืฉืœ OAuth ืงืจื ื‘ื“ื™ื•ืง ืืช **OAuth 2.0 Client ID** ืœืœื Google Cloud Console com a URI do seu service. #### ืคืกื• ืืคืก **1. ื’ื™ืฉื” ืœ-Google Cloud Console** ืื‘ืจื”: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials) **2. Crie um novo OAuth 2.0 ืžื–ื”ื” ืœืงื•ื—** - ืœื—ืฅ ืขืœ **"+ ืฆื•ืจ ืื™ืฉื•ืจื™ื"** โ†’ **"ื–ื™ื”ื•ื™ ืœืงื•ื— OAuth"** - ื˜ื™ืคื• ื“ื” ืืคืœื™ืงื˜ื™ื‘ื™: **"ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜"** - ืฉื: escolha qualquer nome (ืœื“ื•ื’ืžื”: `OmniRoute Remote`) **3. Adicone ื›ื›ืชื•ื‘ื•ืช URI ืžื•ืจืฉื•ืช ืœื”ืคื ื™ื” ืžื—ื“ืฉ** ืื™ืŸ ืงืžืคื• **"ื›ืชื•ื‘ื•ืช URI ืžื•ืจืฉื•ืช ืœื”ืคื ื™ื” ืžื—ื“ืฉ"**, adicione: ``` https://seu-servidor.com/callback ``` > Substitua `seu-servidor.com` pelo domรญnio ืื• IP do seu servidor (ื›ื•ืœืœ ื porta se necessรกrio, ืœืžืฉืœ: `http://45.33.32.156:20128/callback`). **4. ืฉืžื•ืจ ืืช ื”ืขื•ืชืง ื›-credenciais** ืืครณืก ืงืจื™ืืจ, o Google mostrarรก o **ื–ื™ื”ื•ื™ ืœืงื•ื—** ืื• **ืกื•ื“ ืœืงื•ื—**. **5. ื”ื’ื“ืจ ื›-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** ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืงื™ื โ† ืื ื˜ื™ ื›ื‘ื™ื“ื” (ืื• Gemini CLI) โ† OAuth Agora o Google redirecionarรก corretamente para `https://seu-servidor.com/callback` e autenticaรงรฃo funcionarรก. --- ### ื–ืžื ื™ ืคืชืจื•ืŸ ืœืขืงื™ืคืช ื”ื‘ืขื™ื” Se nรฃo quiser criar credenciais prรณprias agora, ainda รฉ possรญvel usar o fluxo **manual de URL**: 1. O OmniRoute abrirรก a URL de autorizaรงรฃo do Google 2. Apรณs vocรช autorizar, o Google tentarรก redirecionar para `localhost` (que falha no servidor remoto) 3. **ื”ืขืชืง ื›ืชื•ื‘ืช URL ืžืœืื”** da barra de endereรง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. ืœื—ืฅ ืขืœ **"ื”ืชื—ื‘ืจ"** > ืคืชืจื•ืŸ ืขืงื™ืคืช ื”ื‘ืขื™ื” ืื• ืงื•ื“ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ื›ืชื•ื‘ืช ื”-URL ืื• ืขืฆืžืื™ืช ืœื”ืคื ื•ืช ืืช ื”ื—ืฉื‘ื•ืŸ ืื• ืœื.
--- ## ๐Ÿ› ๏ธ - **ื–ืžืŸ ืจื™ืฆื”**: Node.js 18โ€“22 LTS (โš ๏ธ Node.js 24+ **ืœื ื ืชืžืš** - `better-sqlite3` ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืžืงื•ืจื™ื™ื ืื™ื ื ืชื•ืืžื™ื) - **ืฉืคื”**: TypeScript 5.9 โ€” **100% TypeScript** ืขืœ ืคื ื™ `src/` ื•`open-sse/` (v1.0.6) - **ืžืกื’ืจืช**: Next.js 16 + React 19 + Tailwind CSS 4 - **ืžืกื“ ื ืชื•ื ื™ื**: LowDB (JSON) + SQLite (ืžืฆื‘ ืชื—ื•ื + ื™ื•ืžื ื™ proxy) - **ืกื˜ืจื™ืžื™ื ื’**: ืื™ืจื•ืขื™ื ืฉื ืฉืœื—ื• ืขืœ ื™ื“ื™ ืฉืจืช (SSE) - **ืื™ืฉื•ืจ**: OAuth 2.0 (PKCE) + JWT + ืžืคืชื—ื•ืช API - **ื‘ื“ื™ืงื•ืช**: ืจืฅ ืžื‘ื—ืŸ Node.js (ื‘ื“ื™ืงื•ืช 368+ ื™ื—ื™ื“ื•ืช) - **CI/CD**: ืคืขื•ืœื•ืช GitHub (ืคืจืกื•ื ืื•ื˜ื•ืžื˜ื™ ืฉืœ npm + Docker Hub ื‘ืฉื—ืจื•ืจ) - **ืืชืจ**: [omniroute.online](https://omniroute.online) - **ื—ื‘ื™ืœื”**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute) - **ื“ื•ืงืจ**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute) - **ื—ื•ืกืŸ**: ืžืคืกืง ืžืขื’ืœื™ื, ื’ื™ื‘ื•ื™ ืืงืกืคื•ื ื ืฆื™ืืœื™, ืขื“ืจ ื ื’ื“ ืจืขืžื™ื, ื–ื™ื•ืฃ TLS --- ## ๐Ÿ“– ืชื™ืขื•ื“ | ืžืกืžืš | ืชื™ืื•ืจ | | -------------------------------------------- | ----------------------------------------- | | [User Guide](docs/USER_GUIDE.md) | ืกืคืงื™ื, ืฉื™ืœื•ื‘ื™ื, ืฉื™ืœื•ื‘ CLI, ืคืจื™ืกื” | | [API Reference](docs/API_REFERENCE.md) | ื›ืœ ื ืงื•ื“ื•ืช ื”ืงืฆื” ืขื ื“ื•ื’ืžืื•ืช | | [Troubleshooting](docs/TROUBLESHOOTING.md) | ื‘ืขื™ื•ืช ื•ืคืชืจื•ื ื•ืช ื ืคื•ืฆื™ื | | [Architecture](docs/ARCHITECTURE.md) | ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขืจื›ืช ื•ืคื ื™ื | | [Contributing](CONTRIBUTING.md) | ืžืขืจืš ืคื™ืชื•ื— ื•ื”ื ื—ื™ื•ืช | | [OpenAPI Spec](docs/openapi.yaml) | ืžืคืจื˜ OpenAPI 3.0 | | [Security Policy](SECURITY.md) | ื“ื™ื•ื•ื— ืขืœ ืคื’ื™ืขื•ืช ื•ื ื”ืœื™ ืื‘ื˜ื—ื” | | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | ืžื“ืจื™ืš ืฉืœื: ื”ื’ื“ืจื•ืช VM + nginx + Cloudflare | | [Features Gallery](docs/FEATURES.md) | ืกื™ื•ืจ ื—ื–ื•ืชื™ ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื ืฆื™ืœื•ืžื™ ืžืกืš | ### ๐Ÿ“ธ ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื
ืœื—ืฅ ื›ื“ื™ ืœืจืื•ืช ืฆื™ืœื•ืžื™ ืžืกืš ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื | ืขืžื•ื“ | ืฆื™ืœื•ื ืžืกืš | | --------------- | ------------------------------------------------- | | **ืกืคืงื™ื** | ![Providers](docs/screenshots/01-providers.png) | | **ืฉื™ืœื•ื‘ื™ื** | ![Combos](docs/screenshots/02-combos.png) | | **ืื ืœื™ื˜ื™ืงื”** | ![Analytics](docs/screenshots/03-analytics.png) | | **ื‘ืจื™ืื•ืช** | ![Health](docs/screenshots/04-health.png) | | **ืžืชืจื’ื** | ![Translator](docs/screenshots/05-translator.png) | | **ื”ื’ื“ืจื•ืช** | ![Settings](docs/screenshots/06-settings.png) | | **ื›ืœื™ CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) | | **ื™ื•ืžื ื™ ืฉื™ืžื•ืฉ** | ![Usage](docs/screenshots/08-usage.png) | | **ื ืงื•ื“ืช ืงืฆื”** | ![Endpoint](docs/screenshots/09-endpoint.png) |
--- ## ๐Ÿ—บ๏ธ ืœ-OmniRoute ื™ืฉ **210+ ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช** ืœืื•ืจืš ืฉืœื‘ื™ ืคื™ืชื•ื— ืžืจื•ื‘ื™ื. ืœื”ืœืŸ ืชื—ื•ืžื™ ื”ืžืคืชื—: | ืงื˜ื’ื•ืจื™ื” | ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช | ื”ื‘ื”ืจื” | | --------------------- | --------------- | ---------------------------------------------------------------------------------------- | | ๐Ÿง  **ื ื™ืชื•ื‘ ื•ืžื•ื“ื™ืขื™ืŸ** | 25+ | ื ื™ืชื•ื‘ ืขื ื–ืžืŸ ื”ืื—ื–ื•ืจ ื”ื ืžื•ืš ื‘ื™ื•ืชืจ, ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื, ื‘ื“ื™ืงื” ืžื•ืงื“ืžืช ืฉืœ ืžื›ืกื”, ื‘ื—ื™ืจืช ื—ืฉื‘ื•ืŸ P2C | | ๐Ÿ”’ **ืื‘ื˜ื—ื” ื•ืชืื™ืžื•ืช** | 20+ | ื”ืงืฉื—ืช SSRF, ื”ืกื•ื•ืื” ืฉืœ ืื™ืฉื•ืจื™ื, ื”ื’ื‘ืœืช ืงืฆื‘ ืœื›ืœ ื ืงื•ื“ืช ืงืฆื”, ื”ื™ืงืฃ ืžืคืชื— ื ื™ื”ื•ืœ | | ๐Ÿ“Š **ืฆืคื™ื•ืช** | 15+ | ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ OpenTelemetry, ื ื™ื˜ื•ืจ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช, ืžืขืงื‘ ืขืœื•ื™ื•ืช ืœื›ืœ ื“ื’ื | | ๐Ÿ”„ **ืฉื™ืœื•ื‘ื™ ืกืคืงื™ื** | 20+ | ืจื™ืฉื•ื ืžื•ื“ืœื™ื ื“ื™ื ืžื™ื™ื, ืฆื™ื ื•ืŸ ืกืคืงื™ื, Codex ืžืจื•ื‘ื” ื—ืฉื‘ื•ื ื•ืช, ื ื™ืชื•ื— ืžื›ืกืช Copilot | | โšก **ื‘ื™ืฆื•ืขื™ื** | 15+ | ืฉื›ื‘ืช ืžื˜ืžื•ืŸ ื›ืคื•ืœื”, ืžื˜ืžื•ืŸ ื”ื ื—ื™ื”, ืžื˜ืžื•ืŸ ืชื’ื•ื‘ื”, ืกื˜ืจื™ืžื™ื ื’ Keepalive, API ืืฆื•ื•ื” | | ๐ŸŒ **ืžืขืจื›ืช ืืงื•ืœื•ื’ื™ืช** | 10+ | WebSocket API, ื˜ืขื™ื ื” ื—ื•ื–ืจืช ืฉืœ ืชืฆื•ืจื”, ื—ื ื•ืช ืชืฆื•ืจื” ืžื‘ื•ื–ืจืช, ืžืฆื‘ ืžืกื—ืจื™ | ### ๐Ÿ”œ ื‘ืงืจื•ื‘ - ๐Ÿ”— **ืฉื™ืœื•ื‘ OpenCode** - ืชืžื™ื›ื” ื‘ืกืคืง ืžืงื•ืจื™ ืขื‘ื•ืจ IDE ืงื™ื“ื•ื“ AI ืฉืœ OpenCode - ๐Ÿ”— **TRAE Integration** โ€” ืชืžื™ื›ื” ืžืœืื” ื‘ืžืกื’ืจืช ื”ืคื™ืชื•ื— ืฉืœ TRAE AI - ๐Ÿ“ฆ **ืืฆื•ื•ื” API** - ืขื™ื‘ื•ื“ ืืฆื•ื•ื” ืืกื™ื ื›ืจื•ื ื™ ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื‘ื›ืžื•ืช ื’ื“ื•ืœื” - ๐ŸŽฏ **ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื** โ€” ื‘ืงืฉื•ืช ื ื™ืชื•ื‘ ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืชื’ื™ื ื•ืžื˜ื ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช - ๐Ÿ’ฐ **ืืกื˜ืจื˜ื’ื™ื™ืช ื”ืขืœื•ืช ื”ื ืžื•ื›ื” ื‘ื™ื•ืชืจ** โ€” ื‘ื—ืจ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืกืคืง ื”ื–ืžื™ืŸ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ > ๐Ÿ“ ืžืคืจื˜ื™ ืชื›ื•ื ื” ืžืœืื™ื ื–ืžื™ื ื™ื ื‘-[link](docs/new-features/) (217 ืžืคืจื˜ื™ื ืžืคื•ืจื˜ื™ื) --- ## ๐Ÿ‘ฅ ืชื•ืจืžื™ื [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors) ### ื›ื™ืฆื“ ืœืชืจื•ื 1. ืžื–ืœื’ ืืช ื”ืžืื’ืจ 2. ืฆื•ืจ ืืช ืขื ืฃ ื”ืชื›ื•ื ื” ืฉืœืš (`git checkout -b feature/amazing-feature`) 3. ื‘ืฆืข ืืช ื”ืฉื™ื ื•ื™ื™ื ืฉืœืš (`git commit -m 'Add amazing feature'`) 4. ื“ื—ืฃ ืœืกื ื™ืฃ (`git push origin feature/amazing-feature`) 5. ืคืชื—ื• ื‘ืงืฉืช ืžืฉื™ื›ื” ืจืื” [CONTRIBUTING.md](CONTRIBUTING.md) ืœื”ื ื—ื™ื•ืช ืžืคื•ืจื˜ื•ืช. ### ืฉื—ืจื•ืจ ื’ืจืกื” ื—ื“ืฉื” ```bash # Create a release โ€” npm publish happens automatically gh release create v1.0.6 --title "v1.0.6" --generate-notes ``` --- ## ๐Ÿ“Š ื”ื™ืกื˜ื•ืจื™ื™ืช ื›ื•ื›ื‘ื™ื Star History Chart --- ## ๐Ÿ™ ืชื•ื“ื•ืช ืชื•ื“ื” ืžื™ื•ื—ื“ืช ืœ**[9router](https://github.com/decolua/9router)** ืžืืช **[decolua](https://github.com/decolua)** - ื”ืคืจื•ื™ืงื˜ ื”ืžืงื•ืจื™ ืฉื”ื™ื•ื•ื” ื”ืฉืจืื” ืœืžื–ืœื’ ื”ื–ื”. OmniRoute ื‘ื•ื ื” ืขืœ ื”ื‘ืกื™ืก ื”ืžื“ื”ื™ื ื”ื–ื” ืขื ืชื›ื•ื ื•ืช ื ื•ืกืคื•ืช, ืžืžืฉืงื™ API ืจื‘-ืžื•ื“ืืœื™ื™ื ื•ืฉื›ืชื•ื‘ ืžืœื ืฉืœ TypeScript. ืชื•ื“ื” ืžื™ื•ื—ื“ืช ืœ**[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - ื”ื™ื™ืฉื•ื ื”ืžืงื•ืจื™ ืฉืœ Go ืฉื™ืžืฉ ื”ืฉืจืื” ืœื™ืฆื™ืืช JavaScript ื”ื–ื•. --- ## ๐Ÿ“„ ืจื™ืฉื™ื•ืŸ ืจื™ืฉื™ื•ืŸ MIT - ืจืื” [LICENSE](LICENSE) ืœืคืจื˜ื™ื. ---
ื ื‘ื ื” ืขื โค๏ธ ืœืžืคืชื—ื™ื ืฉืžืงื•ื“ื“ื™ื 24/7
omniroute.online