# ๐Ÿš€ OmniRoute โ€” ืฉืขืจ ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ื”ื—ื™ื ืžื™ืช ### ืœืขื•ืœื ืืœ ืชืคืกื™ืง ืœืงื•ื“. ื ื™ืชื•ื‘ ื—ื›ื ืœื“ื’ืžื™ ื‘ื™ื ื” ืžืœืื›ื•ืชื™ืช **ื‘ื—ื™ื ื ื•ื‘ืขืœื•ืช ื ืžื•ื›ื”** ืขื ื—ื–ืจื” ืื•ื˜ื•ืžื˜ื™ืช. _ืฉืจืช ื”-API ื”ืื•ื ื™ื‘ืจืกืœื™ ืฉืœืš - ื ืงื•ื“ืช ืงืฆื” ืื—ืช, 67+ ืกืคืงื™ื, ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื”. ืขื›ืฉื™ื• ืขื ืชื–ืžื•ืจ ืกื•ื›ื ื™ื **MCP & A2A**._ **ื”ืฉืœืžื•ืช ืฆ'ืื˜ โ€ข ื”ื˜ืžืขื•ืช โ€ข ื™ืฆื™ืจืช ืชืžื•ื ื•ืช โ€ข ื•ื™ื“ืื• โ€ข ืžื•ื–ื™ืงื” โ€ข ืื•ื“ื™ื• โ€ข ื“ื™ืจื•ื’ ืžื—ื“ืฉ โ€ข **ื—ื™ืคื•ืฉ ืื™ื ื˜ืจื ื˜** โ€ข ืฉืจืช MCP โ€ข ืคืจื•ื˜ื•ืงื•ืœ A2A โ€ข 100% TypeScript** ---
[![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute) [![npm downloads](https://img.shields.io/npm/dm/omniroute?color=cb3837&logo=npm&label=npm%20downloads)](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) [![Docker Pulls](https://img.shields.io/docker/pulls/diegosouzapw/omniroute?logo=docker&color=2496ED&label=docker%20pulls)](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)
๐ŸŒ **ื–ืžื™ืŸ ื‘:** ๐Ÿ‡บ๐Ÿ‡ธ [English](README.md) | ๐Ÿ‡ง๐Ÿ‡ท [Portuguรชs (Brasil)](docs/i18n/pt-BR/README.md) | ๐Ÿ‡ช๐Ÿ‡ธ [Espaรฑol](docs/i18n/es/README.md) | ๐Ÿ‡ซ๐Ÿ‡ท [Franรงais](docs/i18n/fr/README.md) | ๐Ÿ‡ฎ๐Ÿ‡น [Italiano](docs/i18n/it/README.md) | ๐Ÿ‡ท๐Ÿ‡บ [ะ ัƒััะบะธะน](docs/i18n/ru/README.md) | ๐Ÿ‡จ๐Ÿ‡ณ [ไธญๆ–‡ (็ฎ€ไฝ“)](docs/i18n/zh-CN/README.md) | ๐Ÿ‡ฉ๐Ÿ‡ช [Deutsch](docs/i18n/de/README.md) | ๐Ÿ‡ฎ๐Ÿ‡ณ [เคนเคฟเคจเฅเคฆเฅ€](docs/i18n/in/README.md) | ๐Ÿ‡น๐Ÿ‡ญ [เน„เธ—เธข](docs/i18n/th/README.md) | ๐Ÿ‡บ๐Ÿ‡ฆ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](docs/i18n/uk-UA/README.md) | ๐Ÿ‡ธ๐Ÿ‡ฆ [ุงู„ุนุฑุจูŠุฉ](docs/i18n/ar/README.md) | ๐Ÿ‡ฏ๐Ÿ‡ต [ๆ—ฅๆœฌ่ชž](docs/i18n/ja/README.md) | ๐Ÿ‡ป๐Ÿ‡ณ [Tiแบฟng Viแป‡t](docs/i18n/vi/README.md) | ๐Ÿ‡ง๐Ÿ‡ฌ [ะ‘ัŠะปะณะฐั€ัะบะธ](docs/i18n/bg/README.md) | ๐Ÿ‡ฉ๐Ÿ‡ฐ [Dansk](docs/i18n/da/README.md) | ๐Ÿ‡ซ๐Ÿ‡ฎ [Suomi](docs/i18n/fi/README.md) | ๐Ÿ‡ฎ๐Ÿ‡ฑ [ืขื‘ืจื™ืช](docs/i18n/he/README.md) | ๐Ÿ‡ญ๐Ÿ‡บ [Magyar](docs/i18n/hu/README.md) | ๐Ÿ‡ฎ๐Ÿ‡ฉ [Bahasa Indonesia](docs/i18n/id/README.md) | ๐Ÿ‡ฐ๐Ÿ‡ท [ํ•œ๊ตญ์–ด](docs/i18n/ko/README.md) | ๐Ÿ‡ฒ๐Ÿ‡พ [Bahasa Melayu](docs/i18n/ms/README.md) | ๐Ÿ‡ณ๐Ÿ‡ฑ [Nederlands](docs/i18n/nl/README.md) | ๐Ÿ‡ณ๐Ÿ‡ด [Norsk](docs/i18n/no/README.md) | ๐Ÿ‡ต๐Ÿ‡น [Portuguรชs (Portugal)](docs/i18n/pt/README.md) | ๐Ÿ‡ท๐Ÿ‡ด [Romรขnฤƒ](docs/i18n/ro/README.md) | ๐Ÿ‡ต๐Ÿ‡ฑ [Polski](docs/i18n/pl/README.md) | ๐Ÿ‡ธ๐Ÿ‡ฐ [Slovenฤina](docs/i18n/sk/README.md) | ๐Ÿ‡ธ๐Ÿ‡ช [Svenska](docs/i18n/sv/README.md) | ๐Ÿ‡ต๐Ÿ‡ญ [Filipino](docs/i18n/phi/README.md) | ๐Ÿ‡จ๐Ÿ‡ฟ [ฤŒeลกtina](docs/i18n/cs/README.md) --- ## ๐Ÿ†• ืžื” ื—ื“ืฉ ื‘ื’ืจืกื” 3.0.0 > **ืžืฉื“ืจื’ื™ื ืžื’ืจืกื” 2.9.5?** โ€” ืขื™ื™ืŸ ื‘-[full CHANGELOG](CHANGELOG.md#300--2026-03-22-release-candidate--not-yet-merged-to-main) ืœื›ืœ ื”ืฉื™ื ื•ื™ื™ื. | ืื–ื•ืจ | ืฉื ื” | | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ | | ๐Ÿ”’ **CodeQL Security** | ืชื•ืงืŸ ื™ื•ืชืจ ืž-10 ื”ืชืจืื•ืช CodeQL: ืคื•ืœื™ื ื•ื-redos, unsecure-randomness, ืชื™ืงื•ืŸ ื”ื–ืจืงืช ืžืขื˜ืคืช | | โœ… **ืื™ืžื•ืช ืžืกืœื•ืœ** | ื›ืœ 176 ืžืกืœื•ืœื™ ื”-API ืžืื•ืžืชื™ื ื›ืขืช ืขื ืกื›ื™ืžื•ืช Zod + `validateBody()` โ€” ืžืขื‘ืจื™ CI `check:route-validation:t06` | | ๐Ÿ› **ื”ื“ืœืคืช ืชื’ omniModel** | ืชื’ื™ `` ืคื ื™ืžื™ื™ื ืื™ื ื ื“ื•ืœืคื™ื ื™ื•ืชืจ ืœืœืงื•ื—ื•ืช ื‘ืชื’ื•ื‘ื•ืช ื”ื–ืจืžืช SSE (#585) | | ๐Ÿ”‘ **Registered Keys API** | ื”ืงืฆืื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืžืคืชื—ื•ืช API ื‘ืืžืฆืขื•ืช `POST /api/v1/registered-keys` ืขื ืื›ื™ืคืช ืžื›ืกื•ืช ืœื›ืœ ืกืคืง/ื—ืฉื‘ื•ืŸ, ืื™ืžืคื•ื˜ื ืฆื™ื”, ืื—ืกื•ืŸ SHA-256 ื•ื“ื™ื•ื•ื— ืื•ืคืฆื™ื•ื ืœื™ ืขืœ ื‘ืขื™ื•ืช GitHub | | ๐ŸŽจ **ืื™ื™ืงื•ื ื™ ืกืคืง** | ื™ื•ืชืจ ืž-130 ืกืžืœื™ ืœื•ื’ื• ืฉืœ ืกืคืงื™ื ื‘ืืžืฆืขื•ืช `@lobehub/icons` (SVG) ืขื PNG โ†’ ืฉืจืฉืจืช ื—ื™ืœื•ืคื™ืŸ ื’ื ืจื™ืช | | ๐Ÿ”„ **ืกื ื›ืจื•ืŸ ืื•ื˜ื•ืžื˜ื™ ื“ื’ื** | ืžืชื–ืžืŸ 24 ืฉืขื•ืช ื•ืžืžืฉืง ืžืฉืชืžืฉ ื™ื“ื ื™ ื›ื“ื™ ืœืกื ื›ืจืŸ ืจืฉื™ืžื•ืช ื“ื’ืžื™ื ืขื‘ื•ืจ ืกืคืงื™ื ืžื•ื‘ื ื™ื ื•ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืชื•ืืžื™ OpenAI | | ๐ŸŒ **OpenCode Zen/Go** | ืฉื ื™ ืกืคืงื™ื ื—ื“ืฉื™ื ืž-@kang-heewon ื“ืจืš PR #530: ืฉื›ื‘ืช ื—ื™ื ื + ืฉื›ื‘ืช ืžื ื•ื™ ื“ืจืš `OpencodeExecutor` | | ๐Ÿ› **Gemini CLI OAuth** | ืฉื’ื™ืื” ื ื™ืชื ืช ืœืคืขื•ืœื” ื›ืืฉืจ `GEMINI_OAUTH_CLIENT_SECRET` ื—ืกืจ ื‘-Docker (ื”ื™ื™ืชื” ืฉื’ื™ืื” ืกืชืžื™ืช ืฉืœ Google) | | ๐Ÿ› **ืชืฆื•ืจืช OpenCode** | `saveOpenCodeConfig()` ื›ื•ืชื‘ ื›ืขืช ื›ืจืื•ื™ TOML ืœ-`XDG_CONFIG_HOME` | | ๐Ÿ› **ืขืงื™ืคืช ื“ื’ื ืžื•ืฆืžื“** | `body.model` ืžื•ื’ื“ืจ ื›ืจืื•ื™ ืœ-`pinnedModel` ืขืœ ื”ื’ื ืช ื”ืงืฉืจ ืžื˜ืžื•ืŸ | | ๐Ÿ› **ืงื•ื“ืงืก/ืœื•ืœืืช ืงืœื•ื“** | `tool_result` ื‘ืœื•ืงื™ื ืžื•ืžืจื™ื ื›ืขืช ืœื˜ืงืกื˜ ื›ื“ื™ ืœืขืฆื•ืจ ืœื•ืœืื•ืช ืื™ื ืกื•ืคื™ื•ืช | | ๐Ÿ› **ื”ืคื ื™ื” ืžื—ื“ืฉ ืœื›ื ื™ืกื”** | ื”ื›ื ื™ืกื” ืœื ืงื•ืคืืช ืขื•ื“ ืœืื—ืจ ื“ื™ืœื•ื’ ืขืœ ื”ื’ื“ืจืช ื”ืกื™ืกืžื” | | ๐Ÿ› **ื ืชื™ื‘ื™ ื—ืœื•ื ื•ืช** | ื ืชื™ื‘ื™ MSYS2/Git-Bash (`/c/...`) ืžื ื•ืจืžืœื™ื ืœ-`C:\...` ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ | --- ## ๐Ÿ–ผ๏ธ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื”ืจืืฉื™
OmniRoute Dashboard
--- ## ๐Ÿ“ธ ืชืฆื•ื’ื” ืžืงื“ื™ืžื” ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื
ืœื—ืฅ ื›ื“ื™ ืœืจืื•ืช ืฆื™ืœื•ืžื™ ืžืกืš ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื | ืขืžื•ื“ | ืฆื™ืœื•ื ืžืกืš | | --------------- | ------------------------------------------------- | | **ืกืคืงื™ื** | ![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) | | **ื ืงื•ื“ื•ืช ืงืฆื”** | ![Endpoints](docs/screenshots/09-endpoint.png) |
--- ### ๐Ÿค– ืกืคืง 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__OMNI_TOKEN_466, โ€”limited one config ืžื›ืกื” --- ## ๐Ÿค” ืœืžื” 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) - **ืชื•ืจื**: ืจืื” [CONTRIBUTING.md](CONTRIBUTING.md), ืคืชื— ื™ื—ืกื™ ืฆื™ื‘ื•ืจ ืื• ื‘ื—ืจ `good first issue` - **ืคืจื•ื™ืงื˜ ืžืงื•ืจื™**: [9router by decolua](https://github.com/decolua/9router) ### ๐Ÿ› ืžื“ื•ื•ื—ื™ื ืขืœ ื‘ืื’? ื‘ืขืช ืคืชื™ื—ืช ื‘ืขื™ื”, ื”ืคืขืœ ืืช ืคืงื•ื“ืช ืžื™ื“ืข ืžืขืจื›ืช ื•ืฆืจืฃ ืืช ื”ืงื•ื‘ืฅ ืฉื ื•ืฆืจ: ```bash npm run system-info ``` ื–ื” ื™ื•ืฆืจ `system-info.txt` ืขื ื’ืจืกืช Node.js, ื’ืจืกืช OmniRoute, ืคืจื˜ื™ ืžืขืจื›ืช ื”ื”ืคืขืœื”, ื›ืœื™ CLI ืžื•ืชืงื ื™ื (iflow, gemini, claude, codex, antigravity, droid ื•ื›ื•'), ืกื˜ื˜ื•ืก Docker/PM2 ื•ื—ื‘ื™ืœื•ืช ืžืขืจื›ืช - ื›ืœ ืžื” ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ื›ื“ื™ ืœืฉื—ื–ืจ ืืช ื”ื‘ืขื™ื” ื‘ืžื”ื™ืจื•ืช. ืฆืจืฃ ืืช ื”ืงื•ื‘ืฅ ื™ืฉื™ืจื•ืช ืœื‘ืขื™ื™ืช GitHub ืฉืœืš. --- ## ๐Ÿ”„ ืื™ืš ื–ื” ืขื•ื‘ื“ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 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 ืขื‘ื•ืจ ื›ืœ 67+ ื”ืกืคืงื™ื - **ืชืจื’ื•ื ืคื•ืจืžื˜** โ€” ืื•ื˜ื•ืžื˜ื™ ื•ืฉืงื•ืฃ: 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. "ืกืคืง ื”-AI ืฉืœื™ ื—ื•ืกื ืืช ื”ืื–ื•ืจ/ื”ืžื“ื™ื ื” ืฉืœื™" ืกืคืงื™ื ื›ืžื• 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` ื›ื“ื™ ืœืขืงื•ืฃ ืืช ื–ื™ื”ื•ื™ ื”ื‘ื•ื˜ื™ื - **๐Ÿ” ื”ืชืืžืช ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข ืฉืœ CLI** - ืžืกื“ืจ ืžื—ื“ืฉ ื›ื•ืชืจื•ืช ื•ืฉื“ื•ืช ื’ื•ืฃ ื›ื“ื™ ืœื”ืชืื™ื ืœื—ืชื™ืžื•ืช ื‘ื™ื ืืจื™ื•ืช ืžืงื•ืจื™ื•ืช ืฉืœ CLI, ื•ืžืคื—ื™ืช ื‘ืื•ืคืŸ ื“ืจืกื˜ื™ ืืช ื”ืกื™ื›ื•ืŸ ืœืกื™ืžื•ืŸ ื—ืฉื‘ื•ืŸ. ื”-IP ืฉืœ ื”-proxy ื ืฉืžืจ - ืืชื” ืžืงื‘ืœ ื’ื ืžื™ืกื•ืš **ื•** IP ื‘ื•-ื–ืžื ื™ืช
๐Ÿ†“ 4. "ืื ื™ ืจื•ืฆื” ืœื”ืฉืชืžืฉ ื‘-AI ืœืงื™ื“ื•ื“ ืื‘ืœ ืื™ืŸ ืœื™ ื›ืกืฃ" ืœื ื›ื•ืœื ื™ื›ื•ืœื™ื ืœืฉืœื 20-200 $ ืœื—ื•ื“ืฉ ืขื‘ื•ืจ ืžื ื•ื™ื™ AI. ืกื˜ื•ื“ื ื˜ื™ื, ืžืคืชื—ื™ื ืžืžื“ื™ื ื•ืช ืžืชืคืชื—ื•ืช, ื—ื•ื‘ื‘ื™ื ื•ืคืจื™ืœื ืกืจื™ื ืฆืจื™ื›ื™ื ื’ื™ืฉื” ืœื“ื’ืžื™ื ืื™ื›ื•ืชื™ื™ื ื‘ืขืœื•ืช ืืคืกื™ืช. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ืกืคืงื™ ืฉื›ื‘ืช ื—ื™ื ื ืžื•ื‘ื ื™ืช** - ืชืžื™ื›ื” ืžืงื•ืจื™ืช ืขื‘ื•ืจ 100% ืกืคืงื™ื ื—ื™ื ืžื™ื™ื: iFlow (5 ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื” ื“ืจืš OAuth: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen (4 unlimited-qwens,-rs) qwen3-coder-flash, qwen3-coder-next, vision-model), Kiro (ืงืœื•ื“ + AWS Builder ID ื‘ื—ื™ื ื), Gemini CLI (180K ืืกื™ืžื•ื ื™ื/ื—ื•ื“ืฉ ื—ื™ื ื) - **Ollama Cloud** - ื“ื’ืžื™ Ollama ื”ืžืชืืจื—ื™ื ื‘ืขื ืŸ ื‘-`api.ollama.com` ืขื ืฉื›ื‘ืช "ืฉื™ืžื•ืฉ ืงืœ" ื‘ื—ื™ื ื; ื”ืฉืชืžืฉ ื‘ืงื™ื“ื•ืžืช `ollamacloud/` - **ืฉื™ืœื•ื‘ื™ื ื‘ื—ื™ื ื ื‘ืœื‘ื“** โ€” ืฉืจืฉืจืช `gc/gemini-3-flash โ†’ if/kimi-k2-thinking โ†’ qw/qwen3-coder-plus` = $0 ืœื—ื•ื“ืฉ ืขื ืืคืก ื–ืžืŸ ื”ืฉื‘ืชื” - **ื’ื™ืฉื” ื—ื•ืคืฉื™ืช ืœ-NVIDIA NIM** - ื’ื™ืฉื” ื—ื•ืคืฉื™ืช ืฉืœ ~40 RPM ืœ-dev-forever ืœ-70+ ื“ื’ืžื™ื ื‘ื›ืชื•ื‘ืช build.nvidia.com (ืžืขื‘ืจ ืžื ืงื•ื“ื•ืช ื–ื›ื•ืช ืœืžื’ื‘ืœื•ืช ืชืขืจื™ืฃ ื˜ื”ื•ืจื•ืช) - **ืืกื˜ืจื˜ื’ื™ื™ืช ืื•ืคื˜ื™ืžื™ื–ืฆื™ื” ืœืขืœื•ืช** โ€” ืืกื˜ืจื˜ื’ื™ื™ืช ื ื™ืชื•ื‘ ืฉื‘ื•ื—ืจืช ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืกืคืง ื”ื–ืžื™ืŸ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ
๐Ÿ”’ 5. "ืื ื™ ืฆืจื™ืš ืœื”ื’ืŸ ืขืœ ืฉืขืจ ื”ื‘ื™ื ื” ื”ืžืœืื›ื•ืชื™ืช ืฉืœื™ ืžื’ื™ืฉื” ืœื ืžื•ืจืฉื™ืช" ื‘ืขืช ื—ืฉื™ืคืช ืฉืขืจ AI ืœืจืฉืช (LAN, VPS, Docker), ื›ืœ ืžื™ ืฉื™ืฉ ืœื• ืืช ื”ื›ืชื•ื‘ืช ื™ื›ื•ืœ ืœืฆืจื•ืš ืืช ื”ืืกื™ืžื•ื ื™ื/ืžื›ืกื” ืฉืœ ื”ืžืคืชื—. ืœืœื ื”ื’ื ื”, ืžืžืฉืงื™ API ื—ืฉื•ืคื™ื ืœืฉื™ืžื•ืฉ ืœืจืขื”, ื”ื–ืจืงื” ืžื”ื™ืจื” ื•ื ื™ืฆื•ืœ ืœืจืขื”. **ืื™ืš OmniRoute ืคื•ืชืจ ืืช ื–ื”:** - **ื ื™ื”ื•ืœ ืžืคืชื—ื•ืช API** - ื™ืฆื™ืจื”, ืกื™ื‘ื•ื‘ ื•ื”ื™ืงืฃ ืœื›ืœ ืกืคืง ืขื ืขืžื•ื“ `/dashboard/api-manager` ื™ื™ืขื•ื“ื™ - **ื”ืจืฉืื•ืช ื‘ืจืžืช ื”ื“ื’ื** - ื”ื’ื‘ืœ ืžืคืชื—ื•ืช API ืœื“ื’ืžื™ื ืกืคืฆื™ืคื™ื™ื (`openai/*`, ื“ืคื•ืกื™ ืชื•ื•ื™ื ื›ืœืœื™ื™ื), ืขื ื”ืœื—ืฆืŸ 'ืืคืฉืจ ื”ื›ืœ/ื”ื’ื‘ืœ' - **API Endpoint Protection** โ€” ื“ืจื•ืฉ ืžืคืชื— ืขื‘ื•ืจ `/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` ืคืขื ืื—ืช, ื’ืฉ ืœ-67+ ืกืคืงื™ื
๐Ÿ”‘ 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 ืขื ืกื™ื‘ื•ื‘ ืžื‘ื•ืกืก ื’ื•ื“ืœ - **ื“ื•ื— ืžื™ื“ืข ืžืขืจื›ืช** โ€” `npm run system-info` ื™ื•ืฆืจ `system-info.txt` ืขื ื”ืกื‘ื™ื‘ื” ื”ืžืœืื” ืฉืœืš (ื’ืจืกืช ืฆื•ืžืช, ื’ืจืกืช OmniRoute, ืžืขืจื›ืช ื”ืคืขืœื”, ื›ืœื™ CLI, ืกื˜ื˜ื•ืก Docker/PM2). ืฆืจืฃ ืื•ืชื• ื‘ืขืช ื“ื™ื•ื•ื— ืขืœ ื‘ืขื™ื•ืช ืœื‘ื“ื™ืงื” ืžื™ื™ื“ื™ืช.
๐Ÿ—๏ธ 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, **Inworld**, **Cartesia**, **PlayHT**, + ืกืคืงื™ื ืงื™ื™ืžื™ื - **ืžื ื—ื™ื** โ€” `/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 ืคื•ืชืจ ืืช ื–ื”:** - ื“ืฃ **ื ืงื•ื“ื•ืช ืงืฆื”** ืžืื•ื—ื“ ืขื ื›ืจื˜ื™ืกื™ื•ืช ืขื‘ื•ืจ ื ืงื•ื“ื•ืช Proxy, MCP, A2A ื•-API - ื—ื™ืœื•ืคื™ ืžืฆื‘ ืฉื™ืจื•ืช ืžื•ื˜ื‘ืข (ืžืงื•ื•ืŸ/ืœื ืžืงื•ื•ืŸ) ืขื‘ื•ืจ 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/endpoint (MCP and A2A tabs) 4) Toggle services via inline status controls ``` --- ## ๐Ÿ†“ ื”ืชื—ืœ ื‘ื—ื™ื ื - ืขืœื•ืช ืชืฆื•ืจื” ืืคืกื™ืช > ื”ื’ื“ืจ ืงื™ื“ื•ื“ AI ืชื•ืš ื“ืงื•ืช ื‘-**$0 ืœื—ื•ื“ืฉ**. ื—ื‘ืจ ืืช ื”ื—ืฉื‘ื•ื ื•ืช ื”ื—ื™ื ืžื™ื™ื ื”ืืœื” ื•ื”ืฉืชืžืฉ ื‘ืฉื™ืœื•ื‘ ื”ืžื•ื‘ื ื” ืฉืœ **Free Stack**. | ืฉืœื‘ | ืคืขื•ืœื” | ืกืคืงื™ื ืœื ื ืขื•ืœื™ื | | --- | ----------------------------------------------- | ------------------------------------------------------------------ | | 1 | ื”ืชื—ื‘ืจ **Kiro** (AWS Builder ID OAuth) | ืงืœื•ื“ ืกื•ื ื˜ื” 4.5, ื”ื™ื™ืงื• 4.5 โ€” **ืœืœื ื”ื’ื‘ืœื”** | | 2 | ื—ื‘ืจ ืืช **iFlow** (Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... โ€” **ืœืœื ื”ื’ื‘ืœื”** | | 3 | ื—ื‘ืจ **Qwen** (ืงื•ื“ ืžื›ืฉื™ืจ) | qwen3-coder-plus, qwen3-coder-flash... โ€” **ืœืœื ื”ื’ื‘ืœื”** | | 4 | ื—ื‘ืจ ืืช **Gemini CLI** (Google OAuth) | gemini-3-flash, gemini-2.5-pro โ€” **180K/mo ื—ื™ื ื** | | 5 | `/dashboard/combos` โ†’ ืชื‘ื ื™ืช ืขืจื™ืžื” ื—ื™ื ื ($0)\*\* | Round-robin ื›ืœ ื”ืกืคืงื™ื ื‘ื—ื™ื ื ืื•ื˜ื•ืžื˜ื™ืช | **ื›ื•ื•ื ื• ื›ืœ IDE/CLI ืœ:** `http://localhost:20128/v1` ยท ืžืคืชื— API: `any-string` ยท ื‘ื•ืฆืข. > **ื›ื™ืกื•ื™ ื ื•ืกืฃ ืื•ืคืฆื™ื•ื ืœื™ (ื’ื ื‘ื—ื™ื ื):** ืžืคืชื— API ืฉืœ Groq (30 ืกืœ"ื“ ื—ื™ื ื), NVIDIA NIM (40 ืกืœ"ื“ ื—ื™ื ื, 70+ ื“ื’ืžื™ื), Cerebras (1M tok/day), ืžืคืชื— LongCat API (50M tokens/day!), Cloudflare Workers AI (10K Neurons/day, 50+ ื“ื’ืžื™ื). ## โšก ื”ืชื—ืœื” ืžื”ื™ืจื” ### 1) ื”ืชืงืŸ ื•ื”ืคืขืœ ```bash npm install -g omniroute omniroute ``` > **ืžืฉืชืžืฉื™ pnpm:** ื”ืคืขืœ ืืช `pnpm approve-builds -g` ืœืื—ืจ ื”ื”ืชืงื ื” ื›ื“ื™ ืœืืคืฉืจ ืกืงืจื™ืคื˜ื™ื ืžืงื•ืจื™ื™ื ืœื‘ื ื™ื™ื” ื”ื ื“ืจืฉื™ื ืขืœ ื™ื“ื™ `better-sqlite3` ื•`@swc/core`: > > ```bash > pnpm install -g omniroute > pnpm approve-builds -g # Select all packages โ†’ approve > omniroute > ``` ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ื ืคืชื— ื‘-`http://localhost:20128` ื•ื›ืชื•ื‘ืช ื”-API ื”ื‘ืกื™ืกื™ืช ื”ื™ื `http://localhost:20128/v1`. | ืคืงื•ื“ื” | ืชื™ืื•ืจ | | ----------------------- | ----------------------------------------------------- | | `omniroute` | ื”ืชื—ืœ ืฉืจืช (`PORT=20128`, API ื•ืœื•ื— ืžื—ื•ื•ื ื™ื ื‘ืื•ืชื” ื™ืฆื™ืื”) | | `omniroute --port 3000` | ื”ื’ื“ืจ ื™ืฆื™ืืช ืงื ื•ื ื™ืช/API ืœ-3000 | | `omniroute --mcp` | ื”ืคืขืœ ืืช ืฉืจืช MCP (ืชืขื‘ื•ืจืช stdio) | | `omniroute --no-open` | ืืœ ืชืคืชื— ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ื“ืคื“ืคืŸ | | `omniroute --help` | ื”ืฆื’ ืขื–ืจื” | ืžืฆื‘ ื™ืฆื™ืื•ืช ืžืคื•ืฆืœื•ืช ืื•ืคืฆื™ื•ื ืœื™: ```bash PORT=20128 DASHBOARD_PORT=20129 omniroute # API: http://localhost:20128/v1 # Dashboard: http://localhost:20129 ``` ### 2) ื—ื‘ืจ ืกืคืงื™ื ื•ืฆื•ืจ ืืช ืžืคืชื— ื”-API ืฉืœืš 1. ืคืชื— ืืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ†’ `Providers` ื•ื—ื‘ืจ ืœืคื—ื•ืช ืกืคืง ืื—ื“ (OAuth ืื• ืžืคืชื— API). 2. ืคืชื— ืืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ†’ `Endpoints` ื•ืฆื•ืจ ืžืคืชื— API. 3. (ืื•ืคืฆื™ื•ื ืœื™) ืคืชื— ืืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื โ† `Combos` ื•ื”ื’ื“ืจ ืืช ืฉืจืฉืจืช ื”ื”ื—ืœืคื” ืฉืœืš. ### 3) ื›ื•ื•ืŸ ืืช ื›ืœื™ ื”ืงื™ื“ื•ื“ ืฉืœืš ืืœ OmniRoute ```txt Base URL: http://localhost:20128/v1 API Key: [copy from Endpoint page] Model: if/kimi-k2-thinking (or any provider/model prefix) ``` ืขื•ื‘ื“ ืขื Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode ื•-SDK ืชื•ืืžื™ OpenAI. ### 4) ืืคืฉืจ ื•ืœืืžืช ืคืจื•ื˜ื•ืงื•ืœื™ื (v2.0) **MCP (ืขื‘ื•ืจ ืคืขื•ืœื•ืช ืžื•ื ืขื•ืช ื›ืœื™ื):** ```bash omniroute --mcp ``` ืœืื—ืจ ืžื›ืŸ ื—ื‘ืจ ืืช ืœืงื•ื— ื”-MCP ืฉืœืš ื“ืจืš `stdio` ื•ื‘ื“ื•ืง ื›ืœื™ื ื›ืžื•: - `omniroute_get_health` - `omniroute_list_combos` **A2A (ืขื‘ื•ืจ ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ืกื•ื›ืŸ ืœืกื•ื›ืŸ):** ```bash curl http://localhost:20128/.well-known/agent.json ``` ```bash curl -X POST http://localhost:20128/a2a \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}' ``` ### 5) ืืžืช ื”ื›ืœ ืžืงืฆื” ืœืงืฆื” (ืžื•ืžืœืฅ) ```bash npm run test:protocols:e2e ``` ื—ื‘ื™ืœื” ื–ื• ืžืืžืชืช ื–ืจื™ืžื•ืช ืืžื™ืชื™ื•ืช ืฉืœ MCP ื•-A2A ืžื•ืœ ืืคืœื™ืงืฆื™ื” ืคื•ืขืœืช. ### ื—ืœื•ืคื”: ื”ืคืขืœ ืžื”ืžืงื•ืจ ```bash cp .env.example .env npm install PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 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 | ื’ืจืกื” ื ื•ื›ื—ื™ืช | --- ## ๐Ÿ–ฅ๏ธ ืืคืœื™ืงืฆื™ื™ืช ืฉื•ืœื—ืŸ ื”ืขื‘ื•ื“ื” - ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ ื•ืคื•ืขืœ ืชืžื™ื“ > ๐Ÿ†• **ื—ื“ืฉ!** OmniRoute ื–ืžื™ืŸ ื›ืขืช ื›**ื™ื™ืฉื•ื ืฉื•ืœื—ืŸ ืขื‘ื•ื“ื” ืžืงื•ืจื™** ืขื‘ื•ืจ Windows, macOS ื•-Linux. ื”ืคืขืœ ืืช OmniRoute ื›ืืคืœื™ืงืฆื™ื” ืขืฆืžืื™ืช ืœืฉื•ืœื—ืŸ ื”ืขื‘ื•ื“ื” - ืœืœื ืžืกื•ืฃ, ืœืœื ื“ืคื“ืคืŸ, ืœืœื ืฆื•ืจืš ื‘ืื™ื ื˜ืจื ื˜ ืขื‘ื•ืจ ื“ื’ืžื™ื ืžืงื•ืžื™ื™ื. ื”ืืคืœื™ืงืฆื™ื” ืžื‘ื•ืกืกืช ืืœืงื˜ืจื•ื ื™ื ื›ื•ืœืœืช: - ๐Ÿ–ฅ๏ธ **ื—ืœื•ืŸ ืžืงื•ืจื™** โ€” ื—ืœื•ืŸ ืืคืœื™ืงืฆื™ื” ื™ื™ืขื•ื“ื™ ืขื ืฉื™ืœื•ื‘ ืžื’ืฉ ื”ืžืขืจื›ืช - ๐Ÿ”„ **ื”ืชื—ืœ ืื•ื˜ื•ืžื˜ื™** โ€” ื”ืคืขืœ ืืช OmniRoute ื‘ื›ื ื™ืกื” ืœืžืขืจื›ืช - ๐Ÿ”” **ื”ืชืจืื•ืช ืžืงื•ืžื™ื•ืช** - ืงื‘ืœ ื”ืชืจืื•ืช ืขืœ ืžื™ืฆื•ื™ ื”ืžื›ืกื” ืื• ื‘ืขื™ื•ืช ื‘ืกืคืง - โšก **ื”ืชืงื ื” ื‘ืœื—ื™ืฆื” ืื—ืช** - NSIS (Windows), DMG (macOS), AppImage (Linux) - ๐ŸŒ **ืžืฆื‘ ืœื ืžืงื•ื•ืŸ** - ืขื•ื‘ื“ ื‘ืžืฆื‘ ืœื ืžืงื•ื•ืŸ ืœื—ืœื•ื˜ื™ืŸ ืขื ืฉืจืช ืžืฆื•ืจืฃ ### ื”ืชื—ืœื” ืžื”ื™ืจื” ```bash # Development mode npm run electron:dev # Build for your platform npm run electron:build # Current platform npm run electron:build:win # Windows (.exe) npm run electron:build:mac # macOS (.dmg) โ€” x64 & arm64 npm run electron:build:linux # Linux (.AppImage) ``` ### ืžื’ืฉ ืžืขืจื›ืช ื›ืืฉืจ ืžืžื•ื–ืขืจ, OmniRoute ื—ื™ ื‘ืžื’ืฉ ื”ืžืขืจื›ืช ืฉืœืš ืขื ืคืขื•ืœื•ืช ืžื”ื™ืจื•ืช: - ืคืชื— ืืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื - ืฉื ื” ื™ืฆื™ืืช ืฉืจืช - ืฆื ืžื”ืืคืœื™ืงืฆื™ื” ๐Ÿ“– ืชื™ืขื•ื“ ืžืœื: [**OMNI_TOKEN_153**](electron/README.md) --- ## ๐Ÿ’ฐ ืชืžื—ื•ืจ ื‘ืžื‘ื˜ ื—ื˜ื•ืฃ | ืฉื›ื‘ื” | ืกืคืง | ืขืœื•ืช | ืื™ืคื•ืก ืžื›ืกื” | ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ ืขื‘ื•ืจ | | --------------- | --------------------------- | ---------------------------------- | ------------------------ | ------------------------------------------- | | **๐Ÿ’ณ ืžื ื•ื™** | ืงืœื•ื“ ืงื•ื“ (ืคืจื•) | 20 ื“ื•ืœืจ ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ื›ื‘ืจ ื ืจืฉืžืช | | | ืงื•ื“ืงืก (ืคืœื•ืก/ืคืจื•) | $20-200 ืœื—ื•ื“ืฉ | 5 ืฉืขื•ืช + ืฉื‘ื•ืขื™ | ืžืฉืชืžืฉื™ OpenAI | | | Gemini CLI | **ื—ื™ื ื** | 180K/Mo + 1K/ื™ื•ื | ื›ึผึนืœ ืึถื—ึธื“! | | | GitHub Copilot | 10-19 ื“ื•ืœืจ ืœื—ื•ื“ืฉ | ื—ื•ื“ืฉื™ | ืžืฉืชืžืฉื™ GitHub | | **๐Ÿ”‘ ืžืคืชื— API** | NVIDIA NIM | **ื—ื™ื ื** (ืคื™ืชื•ื— ืœื ืฆื—) | ~40 ืกืœ"ื“ | 70+ ื“ื’ืžื™ื ืคืชื•ื—ื™ื | | | ืžื•ื—ื™ืŸ | **ื—ื™ื ื** (1 ืžื™ืœื™ื•ืŸ ื˜ื•ืงื™/ื™ื•ื) | 60K TPM / 30 RPM | ื”ืžื”ื™ืจ ื‘ืขื•ืœื | | | ื’ืจื•ืง | **ื—ื™ื ื** (30 ืกืœ"ื“) | 14.4K RPD | ืœืืžื”/ื’'ืžื” ืžื”ื™ืจื” ื‘ืžื™ื•ื—ื“ | | | DeepSeek V3.2 | $0.27/$1.10 ืœื›ืœ ืžื™ืœื™ื•ืŸ | ืื™ืŸ | ื ื™ืžื•ืง ื”ืžื—ื™ืจ/ืื™ื›ื•ืช ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ | | | xAI Grok-4 ืžื”ื™ืจ | **$0.20/$0.50 ืœื›ืœ ืžื™ืœื™ื•ืŸ** ๐Ÿ†• | ืื™ืŸ | ื”ืžื”ื™ืจื” ื‘ื™ื•ืชืจ + ืงืจื™ืืช ื›ืœื™, ืื•ืœื˜ืจื” ื ืžื•ื›ื” | | | xAI Grok-4 (ืกื˜ื ื“ืจื˜ื™) | $0.20/$1.50 ืœื›ืœ ืžื™ืœื™ื•ืŸ ๐Ÿ†• | ืื™ืŸ | ืกืคื™ื ืช ื”ื“ื’ืœ ืฉืœ ื”ื™ื’ื™ื•ืŸ ืž-xAI | | | ืžื™ืกื˜ืจืœ | ื ื™ืกื™ื•ืŸ ื—ื™ื ื + ื‘ืชืฉืœื•ื | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | AI ืื™ืจื•ืคืื™ | | | OpenRouter | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | 100+ ื“ื’ืžื™ื ืื’ืจ. | | **๐Ÿ’ฐ ื–ื•ืœ** | GLM-5 (ื“ืจืš Z.AI) ๐Ÿ†• | $0.5/1 ืžื™ืœื™ื•ืŸ | ื›ืœ ื™ื•ื 10:00 | ืคืœื˜ 128K, ืกืคื™ื ืช ื”ื“ื’ืœ ื”ื—ื“ืฉื” ื‘ื™ื•ืชืจ | | | GLM-4.7 | $0.6/1 ืžื™ืœื™ื•ืŸ | ื›ืœ ื™ื•ื 10:00 | ื’ื™ื‘ื•ื™ ืชืงืฆื™ื‘ื™ | | | MiniMax M2.5 ๐Ÿ†• | $0.3/1 ืžื™ืœื™ื•ืŸ ืงืœื˜ | ื’ืœื’ื•ืœ ืฉืœ 5 ืฉืขื•ืช | ื ื™ืžื•ืง + ืžืฉื™ืžื•ืช ืกื•ื›ืŸ | | | MiniMax M2.1 | $0.2/1 ืžื™ืœื™ื•ืŸ | ื’ืœื’ื•ืœ ืฉืœ 5 ืฉืขื•ืช | ื”ืืคืฉืจื•ืช ื”ื–ื•ืœื” ื‘ื™ื•ืชืจ | | | Kimi K2.5 (Moonshot API) ๐Ÿ†• | ืชืฉืœื•ื ืœืคื™ ืฉื™ืžื•ืฉ | ืื™ืŸ | ื’ื™ืฉื” ื™ืฉื™ืจื” ืœ-Monshot API | | | ืงื™ืžื™ K2 | 9 $ ืœื—ื•ื“ืฉ ื“ื™ืจื” | 10 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ืœื—ื•ื“ืฉ | ืขืœื•ืช ืฆืคื•ื™ื” | | **๐Ÿ†“ ื—ื™ื ื** | iFlow | **$0** | ืœืœื ื”ื’ื‘ืœื” | 5 ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื” | | | ืงื•ื•ืŸ | **$0** | ืœืœื ื”ื’ื‘ืœื” | 4 ื“ื’ืžื™ื ืœืœื ื”ื’ื‘ืœื” | | | ืงื™ืจื• | **$0** | ืœืœื ื”ื’ื‘ืœื” | ืงืœื•ื“ ืกื•ื ื˜ื”/ื”ื™ื™ืงื• (AWS Builder) | | | LongCat Flash-Lite ๐Ÿ†• | **$0** (50 ืžื™ืœื™ื•ืŸ ื˜ื•ืงื™ ืœื™ื•ื ๐Ÿ”ฅ) | 1 RPS | ื”ืžื›ืกื” ื”ื—ื™ื ืžื™ืช ื”ื’ื“ื•ืœื” ื‘ื™ื•ืชืจ ืขืœ ืคื ื™ ื›ื“ื•ืจ ื”ืืจืฅ | | | ื”ืื‘ืงื•ืช AI ๐Ÿ†• | **$0** (ืื™ืŸ ืฆื•ืจืš ื‘ืžืคืชื—) | 1 req/15s | GPT-5, ืงืœื•ื“, DeepSeek, Llama 4 | | | Cloudflare Workers AI ๐Ÿ†• | **$0** (10K ื ื•ื™ืจื•ื ื™ื ืœื™ื•ื) | ~150 resp/ื™ื•ื | 50+ ื“ื’ืžื™ื, ื™ืชืจื•ืŸ ืขื•ืœืžื™ | | | Scaleway AI ๐Ÿ†• | **$0** (1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ื‘ืกืš ื”ื›ืœ) | ืชืขืจื™ืฃ ืžื•ื’ื‘ืœ | EU/GDPR, Qwen3 235B, Llama 70B | > ๐Ÿ†• **ื“ื’ืžื™ื ื—ื“ืฉื™ื ืฉื ื•ืกืคื• (ืžืจืฅ 2026):** ืžืฉืคื—ืช Grok-4 Fast ื‘-$0.20/$0.50/M (ืžื•ื“ื“ ื‘-1143ms - ืžื”ื™ืจ ื™ื•ืชืจ ื‘-30% ืž-Gemini 2.5 Flash), GLM-5 ื“ืจืš Z.AI ืขื ืคืœื˜ ืฉืœ 128K, ื ื™ืžื•ืง ืฉืœ MiniMax M2.5, KimiSeek pr. API ื™ืฉื™ืจ. **๐Ÿ’ก ืขืจื™ืžืช ืžืฉื•ืœื‘ืช ืฉืœ $0 - ื”ื”ื’ื“ืจื” ื”ืžืœืื” ื‘ื—ื™ื ื:** ``` # ๐Ÿ†“ Ultimate Free Stack 2026 โ€” 11 Providers, $0 Forever Kiro (kr/) โ†’ Claude Sonnet/Haiku UNLIMITED iFlow (if/) โ†’ kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED LongCat Lite (lc/) โ†’ LongCat-Flash-Lite โ€” 50M tokens/day ๐Ÿ”ฅ Pollinations (pol/) โ†’ GPT-5, Claude, DeepSeek, Llama 4 โ€” no key needed Qwen (qw/) โ†’ qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED Gemini (gemini/) โ†’ Gemini 2.5 Flash โ€” 1,500 req/day free API key Cloudflare AI (cf/) โ†’ Llama 70B, Gemma 3, Mistral โ€” 10K Neurons/day Scaleway (scw/) โ†’ Qwen3 235B, Llama 70B โ€” 1M free tokens (EU) Groq (groq/) โ†’ Llama/Gemma ultra-fast โ€” 14.4K req/day NVIDIA NIM (nvidia/) โ†’ 70+ open models โ€” 40 RPM forever Cerebras (cerebras/) โ†’ Llama/Qwen world-fastest โ€” 1M tok/day ``` **ืขืœื•ืช ืืคืกื™ืช. ืœืขื•ืœื ืœื ืžืคืกื™ืง ืœืงื•ื“ื“.** ื”ื’ื“ืจ ื–ืืช ื›ืžืฉื•ืœื‘ืช OmniRoute ืื—ืช ื•ื›ืœ ื”ื›ืฉืœื™ื ื—ื•ื–ืจื™ื ืžืชืจื—ืฉื™ื ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ - ืืฃ ืคืขื ืื™ืŸ ื”ื—ืœืคื” ื™ื“ื ื™ืช. --- --- ## ๐Ÿ†“ ื“ื’ืžื™ื ื‘ื—ื™ื ื โ€” ืžื” ืฉืืชื” ืžืงื‘ืœ ื‘ืคื•ืขืœ > ื›ืœ ื”ื“ื’ืžื™ื ืœืžื˜ื” ื”ื **100% ื—ื™ื ื ืœืœื ืฆื•ืจืš ื‘ื›ืจื˜ื™ืก ืืฉืจืื™**. OmniRoute ืžื ืชื‘ ืžืกืœื•ืœื™ื ืื•ื˜ื•ืžื˜ื™ื™ื ื‘ื™ื ื™ื”ื ื›ืืฉืจ ืžื›ืกื” ืื—ืช ื ื’ืžืจืช - ืฉืœื‘ ืืช ื›ื•ืœื ืœืฉื™ืœื•ื‘ ื‘ืœืชื™ ืฉื‘ื™ืจ ืฉืœ $0. ### ๐Ÿ”ต ืžื•ื“ืœื™ื ืฉืœ CLAUDE (ื“ืจืš Kiro โ€” ืžื–ื”ื” AWS Builder) | ื“ื’ื | ืงื™ื“ื•ืžืช | ื”ื’ื‘ืœื” | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | | ------------------- | ------ | ------------- | --------------------- | | `claude-sonnet-4.5` | `kr/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ืžื›ืกื” ื™ื•ืžื™ืช ืžื“ื•ื•ื—ืช | | `claude-haiku-4.5` | `kr/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ืžื›ืกื” ื™ื•ืžื™ืช ืžื“ื•ื•ื—ืช | | `claude-opus-4.6` | `kr/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื•ืคื•ืก ืื—ืจื•ืŸ ื“ืจืš ืงื™ืจื• | ### ื“ื’ืžื™ IFLOW (OAuth ื‘ื—ื™ื ื - ืœืœื ื›ืจื˜ื™ืก ืืฉืจืื™) | ื“ื’ื | ืงื™ื“ื•ืžืช | ื”ื’ื‘ืœื” | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | | ------------------ | ------ | ------------- | -------------- | | `kimi-k2-thinking` | `if/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `qwen3-coder-plus` | `if/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `deepseek-r1` | `if/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `minimax-m2.1` | `if/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `kimi-k2` | `if/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | ### ๐ŸŸก ืžื•ื“ืœื™ื ืฉืœ QWEN (ืื™ืžื•ืช ืงื•ื“ ืžื›ืฉื™ืจ) | ื“ื’ื | ืงื™ื“ื•ืžืช | ื”ื’ื‘ืœื” | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | | ------------------- | ------ | ------------- | ------------------- | | `qwen3-coder-plus` | `qw/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `qwen3-coder-flash` | `qw/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `qwen3-coder-next` | `qw/` | **ืœืœื ื”ื’ื‘ืœื”** | ืื™ืŸ ื›ื•ื‘ืข ืžื“ื•ื•ื— | | `vision-model` | `qw/` | **ืœืœื ื”ื’ื‘ืœื”** | Multimodal (ืชืžื•ื ื•ืช) | ### GEMINI CLI (Google OAuth) | ื“ื’ื | ืงื™ื“ื•ืžืช | ื”ื’ื‘ืœื” | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | | ------------------------ | ------ | --------------------------- | ----------- | | `gemini-3-flash-preview` | `gc/` | **180K tok/ื—ื•ื“ืฉ** + 1K ืœื™ื•ื | ืื™ืคื•ืก ื—ื•ื“ืฉื™ | | `gemini-2.5-pro` | `gc/` | 180K/ื—ื•ื“ืฉ (ื‘ืจื™ื›ื” ืžืฉื•ืชืคืช) | ืื™ื›ื•ืช ื’ื‘ื•ื”ื” | ### โšซ NVIDIA NIM (ืžืคืชื— API ื‘ื—ื™ื ื โ€” build.nvidia.com) | ืฉื›ื‘ื” | ืžื’ื‘ืœื” ื™ื•ืžื™ืช | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | ื”ืขืจื•ืช | | ------------ | ------------- | ------------ | ------------------------------------------------ | | ื—ื™ื ื (ืคื™ืชื•ื—) | ืœืœื ื›ื•ื‘ืข ืกืžืœื™ | **~40 ืกืœ"ื“** | 70+ ื“ื’ืžื™ื; ืžืขื‘ืจ ืœืžื’ื‘ืœื•ืช ืชืขืจื™ืคื™ื ื˜ื”ื•ืจื•ืช ืืžืฆืข 2025 | ื“ื’ืžื™ื ืคื•ืคื•ืœืจื™ื™ื ื‘ื—ื™ื ื: `moonshotai/kimi-k2.5` (Kimi K2.5), `z-ai/glm4.7` (GLM 4.7), `deepseek-ai/deepseek-v3.2` (DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1` ### โšช CEREBRAS (ืžืคืชื— API ื‘ื—ื™ื ื โ€” inference.cerebras.ai) | ืฉื›ื‘ื” | ืžื’ื‘ืœื” ื™ื•ืžื™ืช | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | ื”ืขืจื•ืช | | ---- | -------------------------- | ---------------- | ------------------------------------- | | ื—ื™ื ื | **1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ืœื™ื•ื** | 60K TPM / 30 RPM | ืžืกืงื ืช LLM ื”ืžื”ื™ืจื” ื‘ืขื•ืœื; ืžืชืืคืก ืžื“ื™ ื™ื•ื | ื–ืžื™ืŸ ื‘ื—ื™ื ื: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b` ### ๐Ÿ”ด GROQ (ืžืคืชื— API ื‘ื—ื™ื ื โ€” console.groq.com) | ืฉื›ื‘ื” | ืžื’ื‘ืœื” ื™ื•ืžื™ืช | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | ื”ืขืจื•ืช | | ---- | ------------- | ------------ | --------------------------------------- | | ื—ื™ื ื | **14.4K RPD** | 30 ืกืœ"ื“ ืœื“ื’ื | ืœืœื ื›ืจื˜ื™ืก ืืฉืจืื™; 429 ืขืœ ื”ื’ื‘ืœื”, ืœื ืžื—ื•ื™ื‘ | ื–ืžื™ืŸ ื‘ื—ื™ื ื: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3` ### ๐Ÿ”ด LONGCAT AI (ืžืคืชื— API ื‘ื—ื™ื ื โ€” longcat.chat) ๐Ÿ†• | ื“ื’ื | ืงื™ื“ื•ืžืช | ืžื›ืกื” ื™ื•ืžื™ืช ื—ื™ื ื | ื”ืขืจื•ืช | | ----------------------------- | ------ | ------------------------- | --------------------------------- | | `LongCat-Flash-Lite` | `lc/` | **50 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื** ๐Ÿ’ฅ | ื”ืžื›ืกื” ื”ื—ื™ื ืžื™ืช ื”ื’ื“ื•ืœื” ื‘ื™ื•ืชืจ ืื™ ืคืขื | | `LongCat-Flash-Chat` | `lc/` | 500K ืืกื™ืžื•ื ื™ื | ืฆ'ืื˜ ืžืจื•ื‘ื” ืคื ื™ื•ืช | | `LongCat-Flash-Thinking` | `lc/` | 500K ืืกื™ืžื•ื ื™ื | ื ื™ืžื•ืง / CoT | | `LongCat-Flash-Thinking-2601` | `lc/` | 500K ืืกื™ืžื•ื ื™ื | ื’ืจืกื” ื™ื ื•ืืจ 2026 | | `LongCat-Flash-Omni-2603` | `lc/` | 500K ืืกื™ืžื•ื ื™ื | ืžื•ืœื˜ื™ืžื•ื“ืืœื™ | > 100% ื‘ื—ื™ื ื ื‘ื–ืžืŸ ื‘ื˜ื ืฆื™ื‘ื•ืจื™ืช. ื”ื™ืจืฉื ื‘-[longcat.chat](https://longcat.chat) ื‘ืืžืฆืขื•ืช ื“ื•ื"ืœ ืื• ื˜ืœืคื•ืŸ. ืžืืคืก ืžื“ื™ ื™ื•ื 00:00 UTC. ### ๐ŸŸข POLLINATIONS AI (ืœื ื ื“ืจืฉ ืžืคืชื— API) ๐Ÿ†• | ื“ื’ื | ืงื™ื“ื•ืžืช | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | ืกืคืง ืžืื—ื•ืจื™ | | ---------- | ------ | ----------- | ---------------- | | `openai` | `pol/` | 1 req/15s | GPT-5 | | `claude` | `pol/` | 1 req/15s | ื”ืื ืชืจื•ืคื™ ืงืœื•ื“ | | `gemini` | `pol/` | 1 req/15s | Google Gemini | | `deepseek` | `pol/` | 1 req/15s | DeepSeek V3 | | `llama` | `pol/` | 1 req/15s | ืžื˜ื” ืœืืžื” 4 ืฆื•ืคื™ืช | | `mistral` | `pol/` | 1 req/15s | Mistral AI | > โœจ **ืืคืก ื—ื™ื›ื•ืš:** ืœืœื ื”ืจืฉืžื”, ืœืœื ืžืคืชื— API. ื”ื•ืกืฃ ืืช ืกืคืง ื”ื”ืื‘ืงื•ืช ืขื ืฉื“ื” ืžืคืชื— ืจื™ืง ื•ื–ื” ื™ืคืขืœ ืžื™ื“. ### ๐ŸŸ  CLOUDFLARE WORKERS AI (ืžืคืชื— API ื‘ื—ื™ื ื โ€” cloudflare.com) ๐Ÿ†• | ืฉื›ื‘ื” | ื ื•ื™ืจื•ื ื™ื ื™ื•ืžื™ื™ื | ืฉื™ืžื•ืฉ ืฉื•ื•ื” ืขืจืš | ื”ืขืจื•ืช | | ---- | --------------- | --------------------------------------- | ---------------------- | | ื—ื™ื ื | **10,000** | ~150 LLM resp / 500s ืื•ื“ื™ื• / 15K ื”ื˜ืžืขื•ืช | ื™ืชืจื•ืŸ ืขื•ืœืžื™, 50+ ื“ื’ืžื™ื | ื“ื’ืžื™ื ืคื•ืคื•ืœืจื™ื™ื ื‘ื—ื™ื ื: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo` (ืฉืžืข ื‘ื—ื™ื ื!), `@cf/qwen/qwen2.5-coder-15b-instruct` > ื“ื•ืจืฉ ืงื•ื“ API + ืžื–ื”ื” ื—ืฉื‘ื•ืŸ ืž-[dash.cloudflare.com](https://dash.cloudflare.com). ืื—ืกืŸ ืืช ืžื–ื”ื” ื”ื—ืฉื‘ื•ืŸ ื‘ื”ื’ื“ืจื•ืช ื”ืกืคืง. ### ๐ŸŸฃ SCALEWAY AI (1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื ื‘ื—ื™ื ื โ€” scaleway.com) ๐Ÿ†• | ืฉื›ื‘ื” | ืžื›ืกื” ื—ื™ื ื | ืžื™ืงื•ื | ื”ืขืจื•ืช | | ---- | --------------------- | ----------------------- | ----------------------------- | | ื—ื™ื ื | **1 ืžื™ืœื™ื•ืŸ ืืกื™ืžื•ื ื™ื** | ๐Ÿ‡ซ๐Ÿ‡ท ืคืจื™ื–, ื”ืื™ื—ื•ื“ ื”ืื™ืจื•ืคื™ | ืื™ืŸ ืฆื•ืจืš ื‘ื›ืจื˜ื™ืก ืืฉืจืื™ ื‘ืžื’ื‘ืœื•ืช | ื–ืžื™ืŸ ื‘ื—ื™ื ื: `qwen3-235b-a22b-instruct-2507` (Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324` > ืชื•ืื ืœืื™ื—ื•ื“ ื”ืื™ืจื•ืคื™/GDPR. ืงื‘ืœ ืžืคืชื— API ื‘-[console.scaleway.com](https://console.scaleway.com). > **๐Ÿ’ก ืขืจื™ืžืช ื”ื—ื™ื ืžื™ื•ืช ื”ืื•ืœื˜ื™ืžื˜ื™ื‘ื™ืช (11 ืกืคืงื™ื, $0 ืœื ืฆื—):** > > ``` > Kiro (kr/) โ†’ Claude Sonnet/Haiku UNLIMITED > iFlow (if/) โ†’ kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED > LongCat Lite (lc/) โ†’ LongCat-Flash-Lite โ€” 50M tokens/day ๐Ÿ”ฅ > Pollinations (pol/) โ†’ GPT-5, Claude, DeepSeek, Llama 4 โ€” no key needed > Qwen (qw/) โ†’ qwen3-coder models UNLIMITED > Gemini (gemini/) โ†’ Gemini 2.5 Flash โ€” 1,500 req/day free > Cloudflare AI (cf/) โ†’ 50+ models โ€” 10K Neurons/day > Scaleway (scw/) โ†’ Qwen3 235B, Llama 70B โ€” 1M free tokens (EU) > Groq (groq/) โ†’ Llama/Gemma โ€” 14.4K req/day ultra-fast > NVIDIA NIM (nvidia/) โ†’ 70+ open models โ€” 40 RPM forever > Cerebras (cerebras/) โ†’ Llama/Qwen world-fastest โ€” 1M tok/day > ``` ## ๐ŸŽ™๏ธ ืžืฉื•ืœื‘ืช ืชืžืœื•ืœ ื—ื™ื ื > ืชืžืœืœ ื›ืœ ืื•ื“ื™ื•/ื•ื™ื“ืื• ืชืžื•ืจืช **$0** โ€” ืœื™ื“ื™ื ื‘-Deepgram ืขื 200$ ื‘ื—ื™ื ื, AssemblyAI 50$ ื—ื–ืจื”, Groq Whisper ื›ื’ื™ื‘ื•ื™ ื—ื™ืจื•ื ื‘ืœืชื™ ืžื•ื’ื‘ืœ. | ืกืคืง | ืงืจื“ื™ื˜ื™ื ื—ื™ื ื | ื”ื“ื•ื’ืžื ื™ืช ื”ื˜ื•ื‘ื” ื‘ื™ื•ืชืจ | ืžื’ื‘ืœืช ืฉื™ืขื•ืจ | | ----------------- | --------------------- | --------------------------------------- | ------------------------------ | | **Deepgram** | **$200 ื—ื™ื ื** (ื”ืจืฉืžื”) | `nova-3` โ€” ื”ื“ื™ื•ืง ื”ื˜ื•ื‘ ื‘ื™ื•ืชืจ, 30+ ืฉืคื•ืช | ืื™ืŸ ืžื’ื‘ืœืช RPM ืขืœ ื–ื™ื›ื•ื™ื™ื ื‘ื—ื™ื ื | | ๐Ÿ”ต **AssemblyAI** | **$50 ื—ื™ื ื** (ื”ืจืฉืžื”) | `universal-3-pro` โ€” ืคืจืงื™ื, ืกื ื˜ื™ืžื ื˜, PII | ืื™ืŸ ืžื’ื‘ืœืช RPM ืขืœ ื–ื™ื›ื•ื™ื™ื ื‘ื—ื™ื ื | | ๐Ÿ”ด **ื’ืจื•ืง** | **ื—ื•ืคืฉื™ ืœื ืฆื—** | `whisper-large-v3` โ€” OpenAI Whisper | 30 ืกืœ"ื“ (ืงืฆื‘ ืžื•ื’ื‘ืœ) | **ืฉื™ืœื•ื‘ ืžื•ืฆืข ื‘-`/dashboard/combos`:** ``` Name: free-transcription Strategy: Priority Nodes: [1] deepgram/nova-3 โ†’ uses $200 free first [2] assemblyai/universal-3-pro โ†’ fallback when Deepgram credits run out [3] groq/whisper-large-v3 โ†’ free forever, emergency fallback ``` ืœืื—ืจ ืžื›ืŸ ื‘-`/dashboard/media` โ† ื›ืจื˜ื™ืกื™ื™ืช **ืชืžืœื•ืœ**: ื”ืขืœื” ื›ืœ ืงื•ื‘ืฅ ืฉืžืข ืื• ื•ื™ื“ืื• โ† ื‘ื—ืจ ืืช ื ืงื•ื“ืช ื”ืงืฆื” ื”ืžืฉื•ืœื‘ืช ืฉืœืš โ† ืงื‘ืœ ืชืžืœื•ืœ ื‘ืคื•ืจืžื˜ื™ื ื ืชืžื›ื™ื. ## ๐Ÿ’ก ืชื›ื•ื ื•ืช ืขื™ืงืจื™ื•ืช OmniRoute v2.0 ื‘ื ื•ื™ื” ื›ืคืœื˜ืคื•ืจืžื” ืชืคืขื•ืœื™ืช, ืœื ืจืง ื›ืคืจื•ืงืกื™ ืžืžืกืจ. ### ๐Ÿ†• ื—ื“ืฉ - ืฉื™ืคื•ืจื™ื ื‘ื”ืฉืจืืช ClawRouter (ืžืจืฅ 2026) | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ----------------------------- | --------------------------------------------------------------------------------------- | | โšก **Grok-4 Fast Family** | ื“ื’ืžื™ xAI ื‘-$0.20/$0.50/M โ€” ืžื“ื“ 1143ms (ืžื”ื™ืจ ื™ื•ืชืจ ื‘-30% ืž-Gemini 2.5 Flash) | | ๐Ÿง  **GLM-5 ื“ืจืš Z.AI** | ื”ืงืฉืจ ืคืœื˜ ืฉืœ 128K, $0.5/1 ืžื™ืœื™ื•ืŸ - ืกืคื™ื ืช ื”ื“ื’ืœ ื”ื—ื“ืฉื” ื‘ื™ื•ืชืจ ืžืžืฉืคื—ืช GLM | | ๐Ÿ”ฎ **MiniMax M2.5** | ื ื™ืžื•ืง + ืžืฉื™ืžื•ืช ืกื•ื›ืŸ ื‘-$0.30/1M โ€” ืฉื“ืจื•ื’ ืžืฉืžืขื•ืชื™ ืž-M2.1 | | ๐ŸŽฏ **ื“ื’ืœ ืงื•ืจื ืœื›ืœ ื“ื’ื** | ืœื›ืœ ื“ื’ื `toolCalling: true/false` ื‘ืจื™ืฉื•ื โ€” ืื•ื˜ื•ืงื•ืžื‘ื• ืžื“ืœื’ืช ืขืœ ื“ื’ืžื™ื ืฉืื™ื ื ืžืกื•ื’ืœื™ื ืœื›ืœื™ื | | ๐ŸŒ **ื–ื™ื”ื•ื™ ื›ื•ื•ื ื•ืช ืจื‘ ืœืฉื•ื ื™** | ืžื™ืœื•ืช ืžืคืชื— PT/ZH/ES/AR ื‘ื ื™ืงื•ื“ AutoCombo โ€” ื‘ื—ื™ืจืช ื“ื’ืžื™ื ื˜ื•ื‘ื” ื™ื•ืชืจ ืœืชื•ื›ืŸ ืฉืื™ื ื• ืื ื’ืœื™ | | ๐Ÿ“Š **ื”ืกืชื’ืœื•ืช ืžื•ื ืขื•ืช ื‘ื ืฆ'ืžืจืง** | ื–ืžืŸ ืื—ื–ื•ืจ ืืžื™ืชื™ ืฉืœ p95 ืžื”ื–ื ื•ืช ืžืฉื•ืœื‘ื•ืช ืฉืœ ื‘ืงืฉื•ืช ื—ื™ื•ืช - AutoCombo ืœื•ืžื“ ืžื ืชื•ื ื™ื ื‘ืคื•ืขืœ | | ๐Ÿ” **ื‘ืงืฉ ื‘ื™ื˜ื•ืœ ื›ืคื™ืœื•ืช** | ื—ืœื•ืŸ ื‘ื™ื˜ื•ืœ ื‘ื™ื˜ื•ืœ ืžื‘ื•ืกืก-hash - ื‘ื˜ื•ื— ืžืจื•ื‘ื” ืกื•ื›ื ื™ื, ืžื•ื ืข ื—ื™ื•ื‘ื™ื ื›ืคื•ืœื™ื | | ๐Ÿ”Œ **ืืกื˜ืจื˜ื’ื™ื™ืช ื ืชื‘ ืžืชื—ื‘ืจ** | ืžืžืฉืง `RouterStrategy` ื ื™ืชืŸ ืœื”ืจื—ื‘ื” โ€” ื”ื•ืกืฃ ืœื•ื’ื™ืงืช ื ื™ืชื•ื‘ ืžื•ืชืืžืช ืื™ืฉื™ืช ื‘ืชื•ืจ ืชื•ืกืคื™ื | ### ๐Ÿš€ ื’ืจืกื” ืงื•ื“ืžืช 2.0.9+ โ€” ืžื’ืจืฉ ืžืฉื—ืงื™ื, CLI ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข ื•-ACP | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ๐ŸŽฎ **ืžื’ืจืฉ ืžืฉื—ืงื™ื ื“ื’ื** | ื“ืฃ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืœื‘ื“ื™ืงืช ื›ืœ ื“ื’ื ื™ืฉื™ืจื•ืช - ื‘ื•ืจืจื™ ืกืคืง/ื“ื’ื/ื ืงื•ื“ืช ืงืฆื”, ืขื•ืจืš ืžื•ื ืงื•, ืกื˜ืจื™ืžื™ื ื’, ื‘ื™ื˜ื•ืœ, ืชื–ืžื•ืŸ | | ๐Ÿ” **CLI ื”ืชืืžืช ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข** | ืกื“ืจ ื›ื•ืชืจืช/ื’ื•ืฃ ืœืคื™ ืกืคืง ื›ื“ื™ ืœื”ืชืื™ื ื—ืชื™ืžื•ืช CLI ืžืงื•ืจื™ื•ืช - ื”ื—ืœืฃ ืœืคื™ ืกืคืง ื‘ื”ื’ื“ืจื•ืช > ืื‘ื˜ื—ื”. **IP ื”-proxy ืฉืœืš ื ืฉืžืจ** | | ๐Ÿค **ืชืžื™ื›ื” ื‘-ACP (ืคืจื•ื˜ื•ืงื•ืœ ืœืงื•ื— ืฉืœ ืกื•ื›ืŸ)** | ื’ื™ืœื•ื™ ืกื•ื›ืŸ CLI (Codex, Claude, Goose, Gemini CLI, OpenClaw + 9 ื ื•ืกืคื™ื), ืžื‘ืฉืจ ืชื”ืœื™ืš, ื ืงื•ื“ืช ืงืฆื” `/api/acp/agents` | | ๐Ÿค– **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ืกื•ื›ื ื™ ื”-ACP** | ื ื™ืคื•ื™ ื‘ืื’ื™ื โ€บ ื“ืฃ ืกื•ื›ื ื™ื - ืจืฉืช ืฉืœ 14 ืกื•ื›ื ื™ื ืขื ืกื˜ื˜ื•ืก ื”ืชืงื ื”, ื’ืจืกื”, ื˜ื•ืคืก ืกื•ื›ืŸ ืžื•ืชืื ืื™ืฉื™ืช ืขื‘ื•ืจ ื›ืœ ื›ืœื™ CLI. ืžืฉืชืžืฉื™ **OpenCode** ืžืงื‘ืœื™ื ื›ืคืชื•ืจ "ื”ื•ืจื“ opencode.json" ืฉื™ื•ืฆืจ ืื•ื˜ื•ืžื˜ื™ืช ืชืฆื•ืจื” ืžื•ื›ื ื” ืœืฉื™ืžื•ืฉ ืขื ื›ืœ ื”ื“ื’ืžื™ื ื”ื–ืžื™ื ื™ื. | | ๐Ÿ”ง **ื“ื’ื ืžื•ืชืื ืื™ืฉื™ืช `apiFormat` ื ื™ืชื•ื‘** | ืžื•ื“ืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืขื `apiFormat: "responses"` ื ื•ืชื‘ื™ื ื›ืขืช ื›ื”ืœื›ื” ืืœ ืžืชืจื’ื ื”-API ืฉืœ Responses | | ๐Ÿข **ื‘ื™ื“ื•ื“ ืกื‘ื™ื‘ืช ืขื‘ื•ื“ื” ื‘ืงื•ื“ืงืก** | ืกื‘ื™ื‘ื•ืช ืขื‘ื•ื“ื” ืžืจื•ื‘ื•ืช ืฉืœ Codex ืœื›ืœ ื“ื•ืืจ ืืœืงื˜ืจื•ื ื™ - OAuth ืžืคืจื™ื“ ื ื›ื•ืŸ ื‘ื™ืŸ ื—ื™ื‘ื•ืจื™ื ืœืคื™ ืžื–ื”ื” ืกื‘ื™ื‘ืช ืขื‘ื•ื“ื” | | ๐Ÿ”„ **ืขื“ื›ื•ืŸ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ืืœืงื˜ืจื•ื ื™ื** | ืืคืœื™ืงืฆื™ื™ืช ืฉื•ืœื—ืŸ ื”ืขื‘ื•ื“ื” ื‘ื•ื“ืงืช ืขื“ื›ื•ื ื™ื + ื”ืชืงื ื” ืื•ื˜ื•ืžื˜ื™ืช ื‘ื”ืคืขืœื” ืžื—ื“ืฉ | ### ๐Ÿค– ืคืขื•ืœื•ืช ืกื•ื›ืŸ ื•ืคืจื•ื˜ื•ืงื•ืœ (v2.0) | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------------- | ------------------------------------------------------------------------------------------------ | | ๐Ÿ”ง **ืฉืจืช MCP (16 ื›ืœื™ื)** | ื›ืœื™ IDE/ืกื•ื›ืŸ ื‘ืืžืฆืขื•ืช 3 ื”ืขื‘ืจื•ืช: stdio, SSE (`/api/mcp/sse`), HTTP ื ื™ืชืŸ ืœื”ื–ืจืžื” (`/api/mcp/stream`) | | ๐Ÿค **ืฉืจืช A2A (JSON-RPC + SSE)** | ื‘ื™ืฆื•ืข ืžืฉื™ืžื•ืช ืกื•ื›ืŸ ืœืกื•ื›ืŸ ืขื ื–ืจื™ืžื•ืช ืกื ื›ืจื•ืŸ ื•ื–ืจื™ืžื” | | ๐Ÿงญ **ื“ืฃ ื ืงื•ื“ื•ืช ืงืฆื” ืžืื•ื—ื“ื•ืช** | ื“ืฃ ื ื™ื”ื•ืœ ืขื ื›ืจื˜ื™ืกื™ื•ืช ืขื ื›ืจื˜ื™ืกื™ื•ืช Endpoint Proxy, MCP, A2A ื•-API | | ๐ŸŽš๏ธ **ื”ืคืขืœ/ื ื˜ืจื•ืœ ืฉื™ืจื•ืชื™ื** | ืžืชื’ื™ ื”ืคืขืœื”/ื›ื™ื‘ื•ื™ ืขื‘ื•ืจ MCP ื•-A2A ืขื ืขืžื™ื“ื” ื‘ื”ื’ื“ืจื•ืช (ื‘ืจื™ืจืช ืžื—ื“ืœ: ื›ื‘ื•ื™) | | ๐Ÿ›ฐ๏ธ ** MCP Runtime Heartbeat** | ืกื˜ื˜ื•ืก ืชื”ืœื™ืš ืืžื™ืชื™ (pid, uptime, ื’ื™ืœ ืคืขื™ืžื•ืช ืœื‘, ืชื—ื‘ื•ืจื”, ืžืฆื‘ ื”ื™ืงืฃ) | | ๐Ÿ“‹ **ืžืกืœื•ืœ ื‘ื™ืงื•ืจืช MCP** | ื™ื•ืžื ื™ ื‘ื™ืงื•ืจืช ื ื™ืชื ื™ื ืœืกื™ื ื•ืŸ ืขื ื”ืฆืœื—ื”/ื›ื™ืฉืœื•ืŸ ื•ืฉื™ื•ืš ืžืคืชื— | | ๐Ÿ” **ืื›ื™ืคืช ื”ื™ืงืฃ MCP** | 9 ื”ืจืฉืื•ืช ื”ื™ืงืฃ ืคืจื˜ื ื™ื•ืช ืœื’ื™ืฉื” ืžื‘ื•ืงืจืช ืœื›ืœื™ | | ๐Ÿ“ก **ื ื™ื”ื•ืœ ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืžืฉื™ืžื•ืช A2A** | ืจืฉื•ื/ืกื ืŸ ืžืฉื™ืžื•ืช, ื‘ื“ื™ืงืช ืื™ืจื•ืขื™ื/ื—ืคืฆื™ื, ื‘ื™ื˜ื•ืœ ืžืฉื™ืžื•ืช ืคื•ืขืœื•ืช | | ๐Ÿ“‹ **ื’ื™ืœื•ื™ ื›ืจื˜ื™ืก ืกื•ื›ืŸ** | `/.well-known/agent.json` ืœื’ื™ืœื•ื™ ืื•ื˜ื•ืžื˜ื™ ืฉืœ ื”ืœืงื•ื— | | ๐Ÿงช **ืจืชืžืช ื‘ื“ื™ืงืช ืคืจื•ื˜ื•ืงื•ืœ E2E** | ื–ืจื™ืžืช ืœืงื•ื— MCP SDK + A2A ืืžื™ืชื™ืช ื‘-`test:protocols:e2e` | | โš™๏ธ **ื‘ืงืจื•ืช ืชืคืขื•ืœื™ื•ืช** | ืžืฉื•ืœื‘ืช ื‘ื•ืจืจื™ื, ื”ื—ืœืช ืคืจื•ืคื™ืœื™ ื—ื•ืกืŸ, ืืคืก ืžืคืกืงื™ื ืžืžืฉื˜ื— ื‘ืงืจื” ืื—ื“ | ### ๐Ÿง  ื ื™ืชื•ื‘ ื•ืžื•ื“ื™ืขื™ืŸ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ----------------------------- | ------------------------------------------------------------ | | ๐ŸŽฏ **Smart 4-tier Fallback** | ืžืกืœื•ืœ ืื•ื˜ื•ืžื˜ื™: ืžื ื•ื™ โ†’ ืžืคืชื— API โ†’ ื–ื•ืœ โ†’ ื—ื™ื ื | | ๐Ÿ“Š **ืžืขืงื‘ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช** | ืกืคื™ืจืช ืืกื™ืžื•ื ื™ื ื—ื™ื” + ืื™ืคื•ืก ืกืคื™ืจื” ืœืื—ื•ืจ ืœื›ืœ ืกืคืง | | ๐Ÿ”„ **ืชืจื’ื•ื ืคื•ืจืžื˜** | OpenAI โ†” ืงืœื•ื“ โ†” ืžื–ืœ ืชืื•ืžื™ื โ†” ืชื’ื•ื‘ื•ืช ืขื ื”ืžืจื•ืช ื‘ื˜ื•ื—ื•ืช ืœืกื›ื™ืžื” | | ๐Ÿ‘ฅ **ืชืžื™ื›ื” ื‘ืจื™ื‘ื•ื™ ื—ืฉื‘ื•ื ื•ืช** | ืžืกืคืจ ื—ืฉื‘ื•ื ื•ืช ืœื›ืœ ืกืคืง ืขื ื‘ื—ื™ืจื” ื—ื›ืžื” | | ๐Ÿ”„ **ืจืขื ื•ืŸ ืืกื™ืžื•ืŸ ืื•ื˜ื•ืžื˜ื™** | ืืกื™ืžื•ื ื™ OAuth ืžืชืจืขื ื ื™ื ืื•ื˜ื•ืžื˜ื™ืช ืขื ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ | | ๐ŸŽจ **ืฉื™ืœื•ื‘ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | 6 ืืกื˜ืจื˜ื’ื™ื•ืช ืื™ื–ื•ืŸ + ื‘ืงืจืช ืฉืจืฉืจืช ื ืคื™ืœื” | | ๐ŸŒ **ื ืชื‘ ืชื•ื•ื™ื ื›ืœืœื™ื™ื** โ€‹โ€‹ | `provider/*` ื ื™ืชื•ื‘ ื“ื™ื ืžื™ | | ๐Ÿง  **ื—ืฉื™ื‘ื” ื‘ืงืจื•ืช ืชืงืฆื™ื‘** | ื’ื‘ื•ืœื•ืช ืžืขื‘ืจ, ืื•ื˜ื•ืžื˜ื™, ืžื•ืชืื ืื™ืฉื™ืช ื•ื”ืกืชื’ืœื•ืช | | ๐Ÿ”€ **ื›ื™ื ื•ื™ ื“ื’ื** | ื‘ื˜ื™ื—ื•ืช ื›ื™ื ื•ื™ ื•ื”ื’ื™ืจื” ืžื•ื‘ื ื™ืช + ืžื•ื“ืœ ืžื•ืชืื ืื™ืฉื™ืช | | โšก **ื”ืฉืคืœื” ื‘ืจืงืข** | ื ืชื‘ ืžืฉื™ืžื•ืช ืจืงืข ื‘ืขื“ื™ืคื•ืช ื ืžื•ื›ื” ืœื“ื’ืžื™ื ื–ื•ืœื™ื ื™ื•ืชืจ | | ๐Ÿงช **ื ื™ืชื•ื‘ ื—ื›ื ืžื•ื“ืข ืœืžืฉื™ืžื•ืช** | ื‘ื—ื™ืจื” ืื•ื˜ื•ืžื˜ื™ืช ืฉืœ ืžื•ื“ืœ ืœืคื™ ืกื•ื’ ืชื•ื›ืŸ (ืงื™ื“ื•ื“/ื—ื–ื•ืŸ/ื ื™ืชื•ื—/ืกื™ื›ื•ื) | | ๐Ÿ’ฌ **ื”ื–ืจืงืช ืžืขืจื›ืช ืžื™ื™ื“ื™ืช** | ื‘ืงืจื•ืช ื”ืชื ื”ื’ื•ืช ื’ืœื•ื‘ืœื™ื•ืช ื™ื•ืฉืžื• ื‘ืื•ืคืŸ ืขืงื‘ื™ | | ๐Ÿ“„ **ืชืื™ืžื•ืช API ืฉืœ ืชื’ื•ื‘ื•ืช** | ืชืžื™ื›ื” ืžืœืื” `/v1/responses` ืขื‘ื•ืจ Codex ื•ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืžืชืงื“ืžื•ืช | ### ๐ŸŽต ืžืžืฉืงื™ API ืจื‘-ืžื•ื“ืืœื™ื™ื | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ๐Ÿ–ผ๏ธ **ื™ืฆื™ืจืช ืชืžื•ื ื•ืช** | `/v1/images/generations` ืขื ืขื ืŸ ื•ื—ืœืงื™ื ืขื•ืจืคื™ื™ื ืžืงื•ืžื™ื™ื | | ๐Ÿ“ **ื”ื˜ื‘ืขื•ืช** | `/v1/embeddings` ืœื—ื™ืคื•ืฉ ื•ืฆื™ื ื•ืจื•ืช RAG | | ๐ŸŽค **ืชืžืœื•ืœ ืื•ื“ื™ื•** | `/v1/audio/transcriptions` โ€” 7 ืกืคืงื™ื (Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), ื–ื™ื”ื•ื™ ืฉืคื” ืื•ื˜ื•ืžื˜ื™, ืชืžื™ื›ื” ื‘-MP4/MP3/WAV | | ๐Ÿ”Š **ื˜ืงืกื˜ ืœื“ื™ื‘ื•ืจ** | `/v1/audio/speech` โ€” 10 ืกืคืงื™ื (ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) ืขื ื”ื•ื“ืขื•ืช ืฉื’ื™ืื” ื ื›ื•ื ื•ืช | | ๐ŸŽฌ **ื™ืฆื™ืจืช ื•ื™ื“ืื•** | `/v1/videos/generations` (ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ComfyUI + SD WebUI) | | ๐ŸŽต **ื“ื•ืจ ื”ืžื•ื–ื™ืงื”** | `/v1/music/generations` (ื–ืจื™ืžื•ืช ืขื‘ื•ื“ื” ืฉืœ ComfyUI) | | ๐Ÿ›ก๏ธ **ืžื ื—ื™ื** | `/v1/moderations` ื‘ื“ื™ืงื•ืช ื‘ื˜ื™ื—ื•ืช | | ๐Ÿ”€ **ื“ื™ืจื•ื’ ืžื—ื“ืฉ** | `/v1/rerank` ืขื‘ื•ืจ ื ื™ืงื•ื“ ืจืœื•ื•ื ื˜ื™ื•ืช | | ๐Ÿ” **ื—ื™ืคื•ืฉ ื‘ืื™ื ื˜ืจื ื˜** ๐Ÿ†• | `/v1/search` โ€” 5 ืกืคืงื™ื (Serper, Brave, Perplexity, Exa, Tavily), 6,500+ ื—ื™ื ื/ื—ื•ื“ืฉ, ื›ืฉืœ ืื•ื˜ื•ืžื˜ื™, ืžื˜ืžื•ืŸ | ### ๐Ÿ›ก๏ธ ื—ื•ืกืŸ, ื‘ื™ื˜ื—ื•ืŸ ื•ืžืžืฉืœ | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------------ | --------------------------------------------------------------------------------- | | ๐Ÿ”Œ **ืžืคืกืงื™ื ืžืขื’ืœื™ื** | ื ืกื™ืขื”/ื”ืชืื•ืฉืฉื•ืช ืœื›ืœ ื“ื’ื ืขื ื‘ืงืจื•ืช ืกืฃ | | ๐ŸŽฏ **ื“ื’ืžื™ื ืžื•ื“ืขื™ื ืœื ืงื•ื“ื•ืช ืงืฆื”** | ืžื•ื“ืœื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืžืฆื”ื™ืจื™ื ืขืœ ื ืงื•ื“ื•ืช ืงืฆื” ื ืชืžื›ื•ืช + ืคื•ืจืžื˜ API | | ๐Ÿ›ก๏ธ **ืขื“ืจ ื ื’ื“ ืจืขืžื™ื** | ื”ื’ื ื•ืช Mutex + ืกืžืคื•ืจ ื‘ืื™ืจื•ืขื™ ื ื™ืกื™ื•ืŸ ื—ื•ื–ืจ/ื“ืจื’ | | ๐Ÿง  **ืกืžื ื˜ื™ + ืžื˜ืžื•ืŸ ื—ืชื™ืžื”** | ื”ืคื—ืชืช ืขืœื•ืช/ืื™ื—ื•ืจ ืขื ืฉืชื™ ืฉื›ื‘ื•ืช ืžื˜ืžื•ืŸ | | โšก **ื‘ืงืฉ ืื™ืžืคื•ื˜ื ืฆื™ื”** | ื—ืœื•ืŸ ื”ื’ื ื” ืžืฉื•ื›ืคืœ | | ๐Ÿ”’ **ื–ื™ื•ืฃ ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข TLS** | ื˜ื‘ื™ืขืช ืืฆื‘ืข TLS ื“ืžื•ื™ืช ื“ืคื“ืคืŸ - **ืžืคื—ื™ืชื” ืืช ื–ื™ื”ื•ื™ ื”ืจื•ื‘ื•ื˜ื™ื ื•ืกื™ืžื•ืŸ ื”ื—ืฉื‘ื•ื ื•ืช** | | ๐Ÿ” **CLI ื”ืชืืžืช ื˜ื‘ื™ืขื•ืช ืืฆื‘ืข** | ืชื•ืื ื—ืชื™ืžื•ืช ืžืงื•ืจื™ื•ืช ืฉืœ ื‘ืงืฉืช CLI - **ืžืคื—ื™ืช ืืช ืกื™ื›ื•ืŸ ื”ื—ืกื™ืžื” ืชื•ืš ืฉืžื™ืจื” ืขืœ IP proxy** | | ๐ŸŒ **ืกื™ื ื•ืŸ IP** | ืฉืœื™ื˜ื” ื‘ืจืฉื™ืžืช ื”ื”ื™ืชืจื™ื/ื‘ืœื•ืงื™ื ืขื‘ื•ืจ ืคืจื™ืกื•ืช ื—ืฉื•ืคื•ืช | | ๐Ÿ“Š **ืžื’ื‘ืœื•ืช ืชืขืจื™ืคื™ื ื”ื ื™ืชื ื•ืช ืœืขืจื™ื›ื”** | ืžื’ื‘ืœื•ืช ื’ืœื•ื‘ืœื™ื•ืช/ื‘ืจืžืช ืกืคืง ื”ื ื™ืชื ื•ืช ืœื”ื’ื“ืจื” ืขื ื”ืชืžื“ื” | | ๐Ÿ”‘ **ื ื™ื”ื•ืœ ืžืคืชื—ื•ืช API + ื”ื™ืงืฃ** | ื”ื ืคืงื”/ืกื™ื‘ื•ื‘ ืžืคืชื— ืžืื•ื‘ื˜ื— ื•ื‘ืงืจื•ืช ืžื•ื“ืœ/ืกืคืง | | ๐Ÿ›ก๏ธ **ืžื•ื’ืŸ `/models`** | ืื™ืฉื•ืจ ืื•ืคืฆื™ื•ื ืœื™ ื•ื”ืกืชืจืช ืกืคืง ืขื‘ื•ืจ ืงื˜ืœื•ื’ ื“ื’ืžื™ื | ### ๐Ÿ“Š ื™ื›ื•ืœืช ืชืฆืคื™ืช ื•ื ื™ืชื•ื— | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ------------------------------------ | ---------------------------------------------- | | ๐Ÿ“ **ื‘ืงืฉื” + ืจื™ืฉื•ื ืคืจื•ืงืกื™** | ื‘ืงืฉื”/ืชืฉื•ื‘ื” ืžืœืื” ื•ืจื™ืฉื•ื ืคืจื•ืงืกื™ | | ๐Ÿ“‹ **ืœื•ื— ืžื—ื•ื•ื ื™ื ืฉืœ ื™ื•ืžื ื™ื ืžืื•ื—ื“ื™ื** | ืชืฆื•ื’ื•ืช ื‘ืงืฉื”, ืคืจื•ืงืกื™, ื‘ื™ืงื•ืจืช ื•ืžืกื•ืฃ ื‘ืขืžื•ื“ ืื—ื“ | | ๐Ÿ” **ื‘ืงืฉ ื˜ืœืžื˜ืจื™ื”** | ื—ื‘ื™ื•ืŸ p50/p95/p99 ื•ืžืขืงื‘ ืื—ืจ ื‘ืงืฉื•ืช | | ๐Ÿฅ **ืœื•ื— ืžื—ื•ื•ื ื™ื ืœื‘ืจื™ืื•ืช** | ื–ืžืŸ ืคืขื•ืœื”, ืžืฆื‘ื™ ืžืคืกืง, ื ืขื™ืœื•ืช, ืกื˜ื˜ื™ืกื˜ื™ืงื•ืช ืžื˜ืžื•ืŸ | | ๐Ÿ’ฐ **ืžืขืงื‘ ืขืœื•ื™ื•ืช** | ื‘ืงืจื•ืช ืชืงืฆื™ื‘ ื•ื ืจืื•ืช ืชืžื—ื•ืจ ืœืคื™ ื“ื’ื | | ๐Ÿ“ˆ **ื”ื“ืžื™ื•ืช ืฉืœ ืื ืœื™ื˜ื™ืงืก** | ืชื•ื‘ื ื•ืช ืฉื™ืžื•ืฉ ื‘ืžื•ื“ืœ/ืกืคืง ื•ืชืฆื•ื’ื•ืช ืžื’ืžื” | | ๐Ÿงช **ืžืกื’ืจืช ื”ืขืจื›ื”** | ื‘ื“ื™ืงืช ืกื˜ ื–ื”ื‘ ืขื ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืชืืžื” ื”ื ื™ืชื ื•ืช ืœื”ื’ื“ืจื” | ### โ˜๏ธ ืคืจื™ืกื” ื•ืคืœื˜ืคื•ืจืžื” | ืชื›ื•ื ื” | ืžื” ื–ื” ืขื•ืฉื” | | ---------------------------------- | ------------------------------------------------ | | ๐ŸŒ **ืคืจื•ืก ื‘ื›ืœ ืžืงื•ื** | ืกื‘ื™ื‘ื•ืช Localhost, VPS, Docker, ืขื ืŸ | | ๐Ÿ’พ **ืกื ื›ืจื•ืŸ ืขื ืŸ** | ืกื ื›ืจื•ืŸ ืชืฆื•ืจื” ื‘ืืžืฆืขื•ืช Cloud Worker | | ๐Ÿ”„ **ื’ื™ื‘ื•ื™/ืฉื—ื–ื•ืจ** | ื–ืจื™ืžื•ืช ื™ืฆื•ื/ื™ื‘ื•ื ื•ื”ืชืื•ืฉืฉื•ืช ืžืืกื•ืŸ | | ๐Ÿง™ **ืืฉืฃ ื”ืขืœื™ื™ื” ืœืžื˜ื•ืก** | ื”ืชืงื ื” ืžื•ื“ืจื›ืช ื”ืคืขืœื” ืจืืฉื•ื ื” | | ๐Ÿ”ง **ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ ื›ืœื™ CLI** | ื”ื’ื“ืจื” ื‘ืœื—ื™ืฆื” ืื—ืช ืœื›ืœื™ ืงื™ื“ื•ื“ ืคื•ืคื•ืœืจื™ื™ื | | ๐ŸŽฎ **ืžื’ืจืฉ ืžืฉื—ืงื™ื ื“ื’ื** | ื‘ื“ื•ืง ื›ืœ ืกืคืง/ื“ื’ื/ื ืงื•ื“ืช ืงืฆื” ืžืœื•ื— ื”ืžื—ื•ื•ื ื™ื | | ๐Ÿ” **CLI Fingerprint Toggle** | ื”ืชืืžืช ื˜ื‘ื™ืขืช ืืฆื‘ืข ืœื›ืœ ืกืคืง ื‘ื”ื’ื“ืจื•ืช > ืื‘ื˜ื—ื” | | ๐ŸŒ **i18n (30 ืฉืคื•ืช)** | ืœื•ื— ืžื—ื•ื•ื ื™ื ืžืœื + ืชืžื™ื›ื” ื‘ืฉืคืช ืžืกืžื›ื™ื ืขื ื›ื™ืกื•ื™ RTL | | ๐Ÿงน **ื ืงื” ืืช ื›ืœ ื”ื“ื’ืžื™ื** | ื ื™ืงื•ื™ ืจืฉื™ืžืช ื“ื’ืžื™ื ื‘ืœื—ื™ืฆื” ืื—ืช ื‘ืคืจื˜ื™ ื”ืกืคืง | | ๐Ÿ“‹ **ืชื‘ื ื™ื•ืช ื’ื™ืœื™ื•ืŸ** | ืชื‘ื ื™ื•ืช GitHub ืกื˜ื ื“ืจื˜ื™ื•ืช ืขื‘ื•ืจ ื‘ืื’ื™ื ื•ืชื›ื•ื ื•ืช | | ๐Ÿ“‚ **ืกืคืจื™ื™ืช ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช** | `DATA_DIR` ื‘ื™ื˜ื•ืœ ืขื‘ื•ืจ ืžื™ืงื•ื ืื—ืกื•ืŸ | ### ืชื›ื•ื ื” Deep Deep #### ืกืชื™ืจื” ื—ื›ืžื” ืขื ื‘ืงืจืช ืขืœื•ื™ื•ืช ืžืขืฉื™ืช ```txt Combo: "my-coding-stack" 1. cc/claude-opus-4-6 2. nvidia/llama-3.3-70b 3. glm/glm-4.7 4. if/kimi-k2-thinking ``` ื›ืืฉืจ ื”ืžื›ืกื”, ื”ืชืขืจื™ืฃ ืื• ื”ื‘ืจื™ืื•ืช ื ื›ืฉืœื™ื, OmniRoute ืขื•ื‘ืจ ืื•ื˜ื•ืžื˜ื™ืช ืœืžื•ืขืžื“ ื”ื‘ื ืœืœื ืžืขื‘ืจ ื™ื“ื ื™. #### ื ื™ื”ื•ืœ ืคืจื•ื˜ื•ืงื•ืœ ื’ืœื•ื™ ื•ื ื™ืชืŸ ืœืชืคืขื•ืœ - MCP + A2A ื ื™ืชื ื™ื ืœื’ื™ืœื•ื™ ื‘ืžืžืฉืง ื”ืžืฉืชืžืฉ ื•ื‘ืžืกืžื›ื™ื (ืœื ืžื•ืกืชืจื™ื) - ืžืžืฉืงื™ API ืฉืœ ืกื˜ื˜ื•ืก ืคืจื•ื˜ื•ืงื•ืœ ื—ื•ืฉืคื™ื ื ืชื•ื ื™ื ืชืคืขื•ืœื™ื™ื ื—ื™ื™ื (`/api/mcp/*`, `/api/a2a/*`) - ืœื•ื—ื•ืช ืžื—ื•ื•ื ื™ื ื›ื•ืœืœื™ื ืคืขื•ืœื•ืช ืขื‘ื•ืจ ืคืขื•ืœื•ืช ื™ื•ื 2 (ื”ื—ืœืคื•ืช ืžืฉื•ืœื‘ื•ืช, ืื™ืคื•ืกื™ ืžืคืกืงื™ื, ื‘ื™ื˜ื•ืœ ืžืฉื™ืžื•ืช) #### ืžืชืจื’ื + ื–ืจื™ืžืช ืขื‘ื•ื“ื” ืฉืœ ืื™ืžื•ืช ืื–ื•ืจ ื”ืžืชืจื’ื ื›ื•ืœืœ: - **ืžื’ืจืฉ ืžืฉื—ืงื™ื**: ื‘ืงืฉ ื‘ื“ื™ืงื•ืช ื˜ืจื ืกืคื•ืจืžืฆื™ื” - **ื‘ื•ื“ืง ืฆ'ืื˜**: ื‘ืงืฉื”/ืชื’ื•ื‘ื” ืžืœืื” ื”ืœื•ืš ื•ืฉื•ื‘ - **ืกืคืกืœ ืžื‘ื—ืŸ**: ืžืงืจื™ื ืžืจื•ื‘ื™ื ื‘ืจื™ืฆื” ืื—ืช - **ืฆื’ ื—ื™**: ืชืฆื•ื’ืช ืชื ื•ืขื” ื‘ื–ืžืŸ ืืžืช ื‘ื ื•ืกืฃ ืื™ืžื•ืช ืคืจื•ื˜ื•ืงื•ืœ ืขื ืœืงื•ื—ื•ืช ืืžื™ืชื™ื™ื ื‘ืืžืฆืขื•ืช `npm run test:protocols:e2e`. > ๐Ÿ“– **[MCP Server README](open-sse/mcp-server/README.md)** - ื”ืคื ื™ื” ืœื›ืœื™, ืชืฆื•ืจื•ืช IDE ื•ื“ื•ื’ืžืื•ืช ืœืงื•ื— > > ๐Ÿ“– **[A2A Server README](src/lib/a2a/README.md)** โ€” ืžื™ื•ืžื ื•ื™ื•ืช, ืฉื™ื˜ื•ืช JSON-RPC, ืกื˜ืจื™ืžื™ื ื’ ื•ืžื—ื–ื•ืจ ื—ื™ื™ื ืฉืœ ืžืฉื™ืžื•ืช ## ๐Ÿงช ื”ืขืจื›ื•ืช (ื”ืขืจื›ื•ืช) OmniRoute ื›ื•ืœืœ ืžืกื’ืจืช ื”ืขืจื›ื” ืžื•ื‘ื ื™ืช ืœื‘ื“ื™ืงืช ืื™ื›ื•ืช ืชื’ื•ื‘ืช LLM ืžื•ืœ ืกื˜ ืžื•ื–ื”ื‘. ื’ืฉ ืืœื™ื• ื“ืจืš **Analytics โ†’ Evals** ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื. ### ืกื˜ ืžื•ื–ื”ื‘ ืžื•ื‘ื ื” "OmniRoute Golden Set" ื”ื ื˜ืขืŸ ืžืจืืฉ ืžื›ื™ืœ ืžืงืจื™ ื‘ื“ื™ืงื” ืขื‘ื•ืจ: - ื‘ืจื›ื•ืช, ืžืชืžื˜ื™ืงื”, ื’ื™ืื•ื’ืจืคื™ื”, ื™ืฆื™ืจืช ืงื•ื“ - ืชืื™ืžื•ืช ืœืคื•ืจืžื˜ JSON, ืชืจื’ื•ื, ื”ืคืงืช ืกื™ืžื•ืŸ - ืกื™ืจื•ื‘ ื‘ื˜ื™ื—ื•ืชื™ (ืชื•ื›ืŸ ืžื–ื™ืง), ืกืคื™ืจื”, ื”ื™ื’ื™ื•ืŸ ื‘ื•ืœื™ืื ื™ ### ืืกื˜ืจื˜ื’ื™ื•ืช ื”ืขืจื›ื” | ืืกื˜ืจื˜ื’ื™ื” | ืชื™ืื•ืจ | ื“ื•ื’ืžื” | | ---------- | ------------------------------------------ | -------------------------------- | | `exact` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ื‘ื“ื™ื•ืง | `"4"` | | `contains` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ื›ื™ืœ ืชืช ืžื—ืจื•ื–ืช (ืœื ืชืœื•ื™ ืจื™ืฉื™ื•ืช) | `"Paris"` | | `regex` | ื”ืคืœื˜ ื—ื™ื™ื‘ ืœื”ืชืื™ื ืœื“ืคื•ืก ื”ืจืงืก | `"1.*2.*3"` | | `custom` | ืคื•ื ืงืฆื™ื™ืช JS ืžื•ืชืืžืช ืžื—ื–ื™ืจื” true/false | `(output) => output.length > 10` | --- ## ๐Ÿ“– ืžื“ืจื™ืš ื”ืชืงื ื” ### ื”ื’ื“ืจืช ืคืจื•ื˜ื•ืงื•ืœ (MCP + A2A)
๐Ÿงฉ ื”ื’ื“ืจืช MCP (ืคืจื•ื˜ื•ืงื•ืœ ื”ืงืฉืจ ื“ื’ื) ื”ืชื—ืœ ื”ืขื‘ืจืช MCP ื‘ืžืฆื‘ stdio: ```bash omniroute --mcp ``` ื–ืจื™ืžืช ืื™ืžื•ืช ืžื•ืžืœืฆืช: 1. ื—ื‘ืจ ืืช ืœืงื•ื— ื”-MCP ืฉืœืš ื“ืจืš stdio. 2. ื”ืคืขืœ ืืช `omniroute_get_health`. 3. ื”ืคืขืœ ืืช `omniroute_list_combos`. 4. ืคืชื— ืืช `/dashboard/mcp` ื›ื“ื™ ืœืืฉืจ ืคืขื™ืžื•ืช ืœื‘, ืคืขื™ืœื•ืช ื•ื‘ื™ืงื•ืจืช. ืžืžืฉืงื™ API ืฉื™ืžื•ืฉื™ื™ื ืœืื•ื˜ื•ืžืฆื™ื”: - `GET /api/mcp/status` - `GET /api/mcp/tools` - `GET /api/mcp/audit` - `GET /api/mcp/audit/stats`
๐Ÿค ื”ื’ื“ืจืช A2A (ืกื•ื›ืŸ2ืกื•ื›ืŸ) ื’ืœื” ืืช ื”ืกื•ื›ืŸ: ```bash curl http://localhost:20128/.well-known/agent.json ``` ืฉืœื— ืžืฉื™ืžื”: ```bash curl -X POST http://localhost:20128/a2a \ -H 'content-type: application/json' \ -d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}' ``` ื ื”ืœ ืืช ืžื—ื–ื•ืจ ื”ื—ื™ื™ื: - `GET /api/a2a/status` - `GET /api/a2a/tasks` - `GET /api/a2a/tasks/:id` - `POST /api/a2a/tasks/:id/cancel` ืžืžืฉืง ืžืฉืชืžืฉ ืชืคืขื•ืœื™: - `/dashboard/a2a` ืœืฆืคื™ื™ื” ื‘ืžืฉื™ืžื”/ืžืฆื‘/ื–ืจื ื•ืคืขื•ืœื•ืช ืขืฉืŸ
๐Ÿงช ืื™ืžื•ืช ืคืจื•ื˜ื•ืงื•ืœ ืžืงืฆื” ืœืงืฆื” ืืžืช ืืช ืฉื ื™ ื”ืคืจื•ื˜ื•ืงื•ืœื™ื ืขื ืœืงื•ื—ื•ืช ืืžื™ืชื™ื™ื: ```bash npm run test:protocols:e2e ``` ื–ื” ืžืืžืช: - ื—ื™ื‘ื•ืจ/ืจืฉื™ืžื”/ื”ืชืงืฉืจื•ืช ืœืœืงื•ื— MCP SDK - ื’ื™ืœื•ื™/ืฉืœื—/ื”ื–ืจืžื”/ืงื‘ืœ/ื‘ื™ื˜ื•ืœ A2A - ื‘ื“ื™ืงืช ื”ืฆืœื‘ืช ื ืชื•ื ื™ื ื‘ืžืžืฉืงื™ API ืฉืœ ื‘ื™ืงื•ืจืช MCP ื•ื ื™ื”ื•ืœ ืžืฉื™ืžื•ืช A2A
๐Ÿ’ณ ืกืคืงื™ ืžื ื•ื™ื™ื ### ืงื•ื“ ืงืœื•ื“ (ืคืจื•/ืžืงืก) ```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 ``` #### ื ื™ื”ื•ืœ ืžื’ื‘ืœื•ืช ื—ืฉื‘ื•ืŸ Codex (5 ืฉืขื•ืช + ืฉื‘ื•ืขื™) ืœื›ืœ ื—ืฉื‘ื•ืŸ Codex ื™ืฉ ื›ืขืช ื”ื—ืœืคืช ืžื“ื™ื ื™ื•ืช ื‘-`Dashboard -> Providers`: - `5h` (ืžื•ืคืขืœ/ื›ื‘ื•ื™): ืื›ื™ืคืช ืžื“ื™ื ื™ื•ืช ืกืฃ ื”ื—ืœื•ืŸ ืฉืœ 5 ืฉืขื•ืช. - `Weekly` (ืžื•ืคืขืœ/ื›ื‘ื•ื™): ืื›ื™ืคืช ืžื“ื™ื ื™ื•ืช ืกืฃ ื”ื—ืœื•ืŸ ื”ืฉื‘ื•ืขื™. - ื”ืชื ื”ื’ื•ืช ืกืฃ: ื›ืืฉืจ ื—ืœื•ืŸ ืžื•ืคืขืœ ืžื’ื™ืข ืœ->=90% ืฉื™ืžื•ืฉ, ื”ื—ืฉื‘ื•ืŸ ื”ื–ื” ื™ื“ืœื’. - ื”ืชื ื”ื’ื•ืช ืกื™ื‘ื•ื‘: OmniRoute ืžื ืชื‘ ืื•ื˜ื•ืžื˜ื™ืช ืœื—ืฉื‘ื•ืŸ ื”-Codex ื”ื›ืฉื™ืจ ื”ื‘ื. - ื”ืชื ื”ื’ื•ืช ืื™ืคื•ืก: ื›ืืฉืจ ื”ื–ืžืŸ ืฉืœ ื”ืกืคืง `resetAt` ืขื•ื‘ืจ, ื”ื—ืฉื‘ื•ืŸ ื™ื—ื–ื•ืจ ืœื”ื™ื•ืช ื›ืฉื™ืจ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™. ืชืจื—ื™ืฉื™ื: - `5h ON` + `Weekly ON`: ื“ื™ืœื•ื’ ืขืœ ื”ื—ืฉื‘ื•ืŸ ื›ืืฉืจ ืื—ื“ ืžื”ื—ืœื•ื ื•ืช ืžื’ื™ืข ืœืกืฃ. - `5h OFF` + `Weekly ON`: ืจืง ืฉื™ืžื•ืฉ ืฉื‘ื•ืขื™ ื™ื›ื•ืœ ืœื—ืกื•ื ืืช ื”ื—ืฉื‘ื•ืŸ. - `5h ON` + `Weekly OFF`: ืจืง ืฉื™ืžื•ืฉ ืฉืœ 5 ืฉืขื•ืช ื™ื›ื•ืœ ืœื—ืกื•ื ืืช ื”ื—ืฉื‘ื•ืŸ. - `resetAt` ืขื‘ืจ: ื”ื—ืฉื‘ื•ืŸ ื ื›ื ืก ืžื—ื“ืฉ ืœืกื‘ื‘ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ (ืœืœื ื”ืคืขืœื” ืžื—ื“ืฉ ื™ื“ื ื™ืช). ### 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 (ื’ื™ืฉื” ืœืžืคืชื—ื™ื ื‘ื—ื™ื ื - 70+ ื“ื’ืžื™ื) 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` **Pro Tip:** Cheapest option for long context (1M tokens)! ### Kimi K2 (ื“ื™ืจื” ืฉืœ $9 ืœื—ื•ื“ืฉ) 1. ื”ื™ืจืฉื: [Moonshot AI](https://platform.moonshot.ai/) 2. ืงื‘ืœ ืžืคืชื— API 3. ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ื”ื•ืกืฃ ืžืคืชื— API **ื”ืฉืชืžืฉ:** `kimi/kimi-latest` **Pro Tip:** Fixed $9/month for 10M tokens = $0.90/1M effective cost!
๐Ÿ†“ FREE Providers (Emergency Backup) ### iFlow (5 ื“ื’ืžื™ื ื‘ื—ื™ื ื ื‘ืืžืฆืขื•ืช OAuth) ```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 (4 ื“ื’ืžื™ื ื‘ื—ื™ื ื ื‘ืืžืฆืขื•ืช ืงื•ื“ ืžื›ืฉื™ืจ) ```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 ```
๐ŸŽจ Create Combos ### Example 1: Maximize Subscription โ†’ Cheap Backup ``` Dashboard โ†’ Combos โ†’ Create New Name: premium-coding Models: 1. cc/claude-opus-4-6 (Subscription primary) 2. glm/glm-4.7 (Cheap backup, $0.6/1M) 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M) Use in CLI: premium-coding ``` ### ื“ื•ื’ืžื” 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 Integration ### ืกืžืŸ 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 ``` ### OpenCode **ืฉืœื‘ 1:** ื”ื•ืกืฃ OmniRoute ื›ืกืคืง ืžื•ืชืื ืื™ืฉื™ืช: ```bash opencode /connect # Select "Other" โ†’ Enter ID: "omniroute" โ†’ Enter your OmniRoute API key ``` **ืฉืœื‘ 2:** ืฆื•ืจ/ืขืจื•ืš ืืช `opencode.json` ื‘ืฉื•ืจืฉ ื”ืคืจื•ื™ืงื˜ ืฉืœืš: ```json { "$schema": "https://opencode.ai/config.json", "provider": { "omniroute": { "npm": "@ai-sdk/openai-compatible", "name": "OmniRoute", "options": { "baseURL": "http://localhost:20128/v1" }, "models": { "cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" }, "gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" }, "if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" } } } } } ``` **ืฉืœื‘ 3:** ื‘ื—ืจ ืืช ื”ื“ื’ื ื‘-OpenCode: ```bash /models # Select any OmniRoute model from the list ``` > **ื˜ื™ืค:** ื”ื•ืกืฃ ื›ืœ ื“ื’ื ื–ืžื™ืŸ ื‘ื ืงื•ื“ืช ื”ืงืฆื” OmniRoute `/v1/models` ืฉืœืš ืœืžืงื˜ืข `models`. ื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ `provider/model-id` ืžืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืฉืœ OmniRoute ืฉืœืš.
--- ## ๐Ÿ› ืคืชืจื•ืŸ ื‘ืขื™ื•ืช
ืœื—ืฅ ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ื”ืžื“ืจื™ืš ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช **"ืžื•ื“ืœ ื”ืฉืคื” ืœื ืกื™ืคืง ื”ื•ื“ืขื•ืช"** - ืžื™ืฆืชื” ืžื›ืกืช ื”ืกืคืง โ† ื‘ื“ื•ืง ืืช ืขื•ืงื‘ ื”ืžื›ืกื•ืช ืฉืœ ืœื•ื— ื”ืžื—ื•ื•ื ื™ื - ืคืชืจื•ืŸ: ื”ืฉืชืžืฉ ื‘-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) ืขื‘ื•ืจ ืžืฉื™ืžื•ืช ืœื ืงืจื™ื˜ื™ื•ืช **ื™ืฆื™ืื•ืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื/API ืฉื’ื•ื™ื•ืช** - `PORT` ื”ื™ื ื™ืฆื™ืืช ื”ื‘ืกื™ืก ื”ืงื ื•ื ื™ืช (ื•ื™ืฆื™ืืช API ื›ื‘ืจื™ืจืช ืžื—ื“ืœ) - `API_PORT` ืขื•ืงืฃ ืจืง ืžืื–ื™ืŸ API ืชื•ืื OpenAI - `DASHBOARD_PORT` ืขื•ืงืฃ ืจืง ืืช ืœื•ื— ื”ืžื—ื•ื•ื ื™ื/ืžืื–ื™ืŸ Next.js - ื”ื’ื“ืจ ืืช `NEXT_PUBLIC_BASE_URL` ืœืžืจื›ื– ื”ืฉืœื™ื˜ื”/ื›ืชื•ื‘ืช ื”ืืชืจ ื”ืฆื™ื‘ื•ืจื™ืช ืฉืœืš (ืขื‘ื•ืจ ื”ืชืงืฉืจื•ื™ื•ืช ื—ื•ื–ืจื•ืช ืž-OAuth) **ืฉื’ื™ืื•ืช ืกื ื›ืจื•ืŸ ื‘ืขื ืŸ** - ื•ื“ื `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 ืื• ื›ืœ ืฉืจืช ืžืจื•ื—ืง** #### ืžื“ื•ืข Antigravity / Gemini CLI OAuth ื ื›ืฉืœ ื‘ืฉืจืชื™ื ืžืจื•ื—ืงื™ื? ืกืคืงื™ **Antigravity** ื•**Gemini CLI** ืžืฉืชืžืฉื™ื ื‘-**Google OAuth 2.0**. Google ื“ื•ืจืฉืช ืฉื”-`redirect_uri` ื‘ื–ืจื™ืžืช OAuth ืชืชืื™ื ื‘ื“ื™ื•ืง ืœืื—ื“ ืž-URI ื”ืจืฉื•ืžื™ื ืžืจืืฉ ื‘-Google Cloud Console ืฉืœ ื”ืืคืœื™ืงืฆื™ื”. ืื™ืฉื•ืจื™ ื”-OAuth ื”ืžืฆื•ืจืคื™ื ื‘-OmniRoute ืจืฉื•ืžื™ื **ืขื‘ื•ืจ `localhost` ื‘ืœื‘ื“**. ื›ืืฉืจ ืืชื” ื ื™ื’ืฉ ืืœ OmniRoute ื‘ืฉืจืช ืžืจื•ื—ืง (ืœืžืฉืœ `https://omniroute.myserver.com`), Google ื“ื•ื—ื” ืืช ื”ืื™ืžื•ืช ื‘ืืžืฆืขื•ืช: ``` Error 400: redirect_uri_mismatch ``` #### ืคืชืจื•ืŸ: ื”ื’ื“ืจ ืืช ืื™ืฉื•ืจื™ OAuth ืžืฉืœืš ืขืœื™ืš ืœื™ืฆื•ืจ **OAuth 2.0 Client ID** ื‘-Google Cloud Console ืขื URI ืฉืœ ื”ืฉืจืช ืฉืœืš. #### ืฉืœื‘ ืื—ืจ ืฉืœื‘ **1. ืคืชื— ืืช Google Cloud Console** ืขื‘ื•ืจ ืืœ: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials) **2. ืฆื•ืจ ืžื–ื”ื” ืœืงื•ื— ื—ื“ืฉ OAuth 2.0** - ืœื—ืฅ ืขืœ **"+ Create Credentials"** โ†’ **"OAuth client ID"** - ืกื•ื’ ื™ื™ืฉื•ื: **"ื™ื™ืฉื•ื ืื™ื ื˜ืจื ื˜"** - ืฉื: ื›ืœ ืžื” ืฉืืชื” ืื•ื”ื‘ (ืœืžืฉืœ `OmniRoute Remote`) **3. ื”ื•ืกืฃ URI ืžื•ืจืฉื™ื ืœื”ืคื ื™ื” ืžื—ื“ืฉ** ื‘ืฉื“ื” **"ื›ืชื•ื‘ื•ืช URI ืžื•ืจืฉื•ืช ืœื”ืคื ื™ื” ืžื—ื“ืฉ"**, ื”ื•ืกืฃ: ``` https://your-server.com/callback ``` > ื”ื—ืœืฃ ืืช `your-server.com` ื‘ื“ื•ืžื™ื™ืŸ ืื• ื‘-IP ืฉืœ ื”ืฉืจืช ืฉืœืš (ื›ืœื•ืœ ืืช ื”ื™ืฆื™ืื” ื‘ืžื™ื“ืช ื”ืฆื•ืจืš, ืœืžืฉืœ `http://45.33.32.156:20128/callback`). **4. ืฉืžื•ืจ ื•ื”ืขืชืง ืืช ื”ืื™ืฉื•ืจื™ื** ืœืื—ืจ ื”ื™ืฆื™ืจื”, Google ืชืฆื™ื’ ืืช **ื–ื™ื”ื•ื™ ื”ืœืงื•ื—** ื•ืืช **ืกื•ื“ ื”ืœืงื•ื—**. **5. ื”ื’ื“ืจ ืžืฉืชื ื™ ืกื‘ื™ื‘ื”** ื‘-`.env` ืฉืœืš (ืื• ืžืฉืชื ื™ ืกื‘ื™ื‘ืช Docker): ```bash # For Antigravity: ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret # For Gemini CLI: GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret ``` **6. ื”ืคืขืœ ืžื—ื“ืฉ ืืช OmniRoute** ```bash # npm: npm run dev # Docker: docker restart omniroute ``` **7. ื ืกื” ืœื”ืชื—ื‘ืจ ืฉื•ื‘** ืœื•ื— ืžื—ื•ื•ื ื™ื โ† ืกืคืงื™ื โ† ืื ื˜ื™ ื›ื‘ื™ื“ื” (ืื• Gemini CLI) โ† OAuth Google ืชืคื ื” ื›ืขืช ื›ืจืื•ื™ ืืœ `https://your-server.com/callback`. --- #### ืขืงื™ืคื” ื–ืžื ื™ืช (ืœืœื ืื™ืฉื•ืจื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช) ืื ืื™ื ืš ืจื•ืฆื” ืœื”ื’ื“ื™ืจ ืื™ืฉื•ืจื™ื ืžืฉืœืš ื›ืขืช, ืืชื” ืขื“ื™ื™ืŸ ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘**ื–ืจื™ืžืช ื›ืชื•ื‘ืช ื”ืืชืจ ื”ื™ื“ื ื™ืช**: 1. OmniRoute ืคื•ืชื— ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ืœื”ืจืฉืื” ืฉืœ Google 2. ืœืื—ืจ ื”ื”ืจืฉืื”, Google ืžื ืกื” ืœื”ืคื ื•ืช ืžื—ื“ืฉ ืืœ `localhost` (ืฉื ื›ืฉืœ ื‘ืฉืจืช ื”ืžืจื•ื—ืง) 3. **ื”ืขืชืง ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ื”ืžืœืื”** ืžืกืจื’ืœ ื”ื›ืชื•ื‘ื•ืช ืฉืœ ื”ื“ืคื“ืคืŸ ืฉืœืš (ื’ื ืื ื”ื“ืฃ ืœื ื ื˜ืขืŸ) 4. ื”ื“ื‘ืง ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ื‘ืฉื“ื” ื”ืžื•ืฆื’ ื‘ืžื•ื“ืืœ ื”ื—ื™ื‘ื•ืจ ืฉืœ OmniRoute 5. ืœื—ืฅ ืขืœ **"ื”ืชื—ื‘ืจ"** > ื–ื” ืขื•ื‘ื“ ืžื›ื™ื•ื•ืŸ ืฉืงื•ื“ ื”ื”ืจืฉืื” ื‘ื›ืชื•ื‘ืช ื”-URL ื—ื•ืงื™ ืœืœื ืงืฉืจ ืื ื“ืฃ ื”ื”ืคื ื™ื” ืžื—ื“ืฉ ื ื˜ืขืŸ. ---
๐Ÿ‡ง๐Ÿ‡ท Versรฃo em Portuguรชs #### ื”ืื ืืคืฉืจ ืœืขืฉื•ืช ืื ื˜ื™ ื›ื‘ื™ื“ื” / 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 ืื• ืขืฆืžืื™ืช ืœื”ืคื ื•ืช ืืช ื”ื—ืฉื‘ื•ืŸ ืื• ืœื.
---
## ๐Ÿ› ๏ธ Tech Stack
ืœื—ืฅ ื›ื“ื™ ืœื”ืจื—ื™ื‘ ืืช ืคืจื˜ื™ ืžื—ืกื ื™ืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” - **ื–ืžืŸ ืจื™ืฆื”**: Node.js 18โ€“22 LTS (โš ๏ธ Node.js 24+ **ืœื ื ืชืžืš** - `better-sqlite3` ืงื‘ืฆื™ื ื‘ื™ื ืืจื™ื™ื ืžืงื•ืจื™ื™ื ืื™ื ื ืชื•ืืžื™ื) - **ืฉืคื”**: TypeScript 5.9 โ€” **100% TypeScript** ืขืœ ืคื ื™ `src/` ื•`open-sse/` (ืืคืก `any` ื‘ืžื•ื“ื•ืœื™ ืœื™ื‘ื” ืžืื– v2.0) - **ืžืกื’ืจืช**: Next.js 16 + React 19 + Tailwind CSS 4 - **ืžืกื“ ื ืชื•ื ื™ื**: LowDB (JSON) + SQLite (ืžืฆื‘ ื“ื•ืžื™ื™ืŸ + ื™ื•ืžื ื™ proxy + ื‘ื™ืงื•ืจืช MCP + ื”ื—ืœื˜ื•ืช ื ื™ืชื•ื‘) - **ืกื›ื™ืžื•ืช**: Zod (ืื™ืžื•ืช ื›ืœื™ MCP I/O, ื—ื•ื–ื™ API) - **ืคืจื•ื˜ื•ืงื•ืœื™ื**: MCP (stdio/HTTP) + A2A v0.3 (JSON-RPC 2.0 + SSE) - **ืกื˜ืจื™ืžื™ื ื’**: ืื™ืจื•ืขื™ื ืฉื ืฉืœื—ื• ืขืœ ื™ื“ื™ ืฉืจืช (SSE) - **ืื™ืฉื•ืจ**: OAuth 2.0 (PKCE) + JWT + ืžืคืชื—ื•ืช API + ื”ืจืฉืื” ื‘ื”ื™ืงืฃ MCP - **ื‘ื“ื™ืงื•ืช**: ืจืฅ ื‘ื“ื™ืงื” ืฉืœ Node.js + Vitest (900+ ื‘ื“ื™ืงื•ืช ื›ื•ืœืœ ื™ื—ื™ื“ื”, ืื™ื ื˜ื’ืจืฆื™ื”, E2E) - **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) | ื›ืœ ื ืงื•ื“ื•ืช ื”ืงืฆื” ืขื ื“ื•ื’ืžืื•ืช | | [MCP Server](open-sse/mcp-server/README.md) | 16 ื›ืœื™ MCP, ื”ื’ื“ืจื•ืช IDE, ืœืงื•ื—ื•ืช Python/TS/Go | | [A2A Server](src/lib/a2a/README.md) | ืคืจื•ื˜ื•ืงื•ืœ JSON-RPC 2.0, ืžื™ื•ืžื ื•ื™ื•ืช, ืกื˜ืจื™ืžื™ื ื’, ื ื™ื”ื•ืœ ืžืฉื™ืžื•ืช | | [Auto-Combo Engine](docs/auto-combo.md) | ื ื™ืงื•ื“ 6 ื’ื•ืจืžื™ื, ื—ื‘ื™ืœื•ืช ืžืฆื‘, ืจื™ืคื•ื™ ืขืฆืžื™ | | [Troubleshooting](docs/TROUBLESHOOTING.md) | ื‘ืขื™ื•ืช ื•ืคืชืจื•ื ื•ืช ื ืคื•ืฆื™ื | | [Architecture](docs/ARCHITECTURE.md) | ืืจื›ื™ื˜ืงื˜ื•ืจืช ืžืขืจื›ืช ื•ืคื ื™ื | | [Contributing](CONTRIBUTING.md) | ืžืขืจืš ืคื™ืชื•ื— ื•ื”ื ื—ื™ื•ืช | | [OpenAPI Spec](docs/openapi.yaml) | ืžืคืจื˜ OpenAPI 3.0 | | [Security Policy](SECURITY.md) | Vulnerability reporting and security practices | | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | ืžื“ืจื™ืš ืฉืœื: ื”ื’ื“ืจื•ืช VM + nginx + Cloudflare | | [Features Gallery](docs/FEATURES.md) | ืกื™ื•ืจ ื—ื–ื•ืชื™ ื‘ืœื•ื— ื”ืžื—ื•ื•ื ื™ื ืขื ืฆื™ืœื•ืžื™ ืžืกืš | | [Release Checklist](docs/RELEASE_CHECKLIST.md) | ืฉืœื‘ื™ ืื™ืžื•ืช ืœืคื ื™ ืฉื—ืจื•ืจ | --- ## ๐Ÿ—บ๏ธ ืžืคืช ื“ืจื›ื™ื ืœ-OmniRoute ื™ืฉ **210+ ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช** ืœืื•ืจืš ืฉืœื‘ื™ ืคื™ืชื•ื— ืžืจื•ื‘ื™ื. ืœื”ืœืŸ ืชื—ื•ืžื™ ื”ืžืคืชื—: | ืงื˜ื’ื•ืจื™ื” | ืชื›ื•ื ื•ืช ืžืชื•ื›ื ื ื•ืช | ื”ื‘ื”ืจื” | | --------------------- | --------------- | ---------------------------------------------------------------------------------------- | | ๐Ÿง  **ื ื™ืชื•ื‘ ื•ืžื•ื“ื™ืขื™ืŸ** | 25+ | ื ื™ืชื•ื‘ ืขื ื–ืžืŸ ื”ืื—ื–ื•ืจ ื”ื ืžื•ืš ื‘ื™ื•ืชืจ, ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื, ื‘ื“ื™ืงื” ืžื•ืงื“ืžืช ืฉืœ ืžื›ืกื”, ื‘ื—ื™ืจืช ื—ืฉื‘ื•ืŸ P2C | | ๐Ÿ”’ **ืื‘ื˜ื—ื” ื•ืชืื™ืžื•ืช** | 20+ | ื”ืงืฉื—ืช SSRF, ื”ืกื•ื•ืื” ืฉืœ ืื™ืฉื•ืจื™ื, ื”ื’ื‘ืœืช ืงืฆื‘ ืœื›ืœ ื ืงื•ื“ืช ืงืฆื”, ื”ื™ืงืฃ ืžืคืชื— ื ื™ื”ื•ืœ | | ๐Ÿ“Š **ืฆืคื™ื•ืช** | 15+ | ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ OpenTelemetry, ื ื™ื˜ื•ืจ ืžื›ืกื•ืช ื‘ื–ืžืŸ ืืžืช, ืžืขืงื‘ ืขืœื•ื™ื•ืช ืœื›ืœ ื“ื’ื | | ๐Ÿ”„ **ืฉื™ืœื•ื‘ื™ ืกืคืงื™ื** | 20+ | ืจื™ืฉื•ื ืžื•ื“ืœื™ื ื“ื™ื ืžื™ื™ื, ืฆื™ื ื•ืŸ ืกืคืงื™ื, Codex ืžืจื•ื‘ื” ื—ืฉื‘ื•ื ื•ืช, ื ื™ืชื•ื— ืžื›ืกืช Copilot | | โšก **ื‘ื™ืฆื•ืขื™ื** | 15+ | Dual cache layer, prompt cache, response cache, streaming keepalive, batch API | | ๐ŸŒ **ืžืขืจื›ืช ืืงื•ืœื•ื’ื™ืช** | 10+ | WebSocket API, ื˜ืขื™ื ื” ื—ื•ื–ืจืช ืฉืœ ืชืฆื•ืจื”, ื—ื ื•ืช ืชืฆื•ืจื” ืžื‘ื•ื–ืจืช, ืžืฆื‘ ืžืกื—ืจื™ | ### ๐Ÿ”œ ื‘ืงืจื•ื‘ - ๐Ÿ”— **ืฉื™ืœื•ื‘ OpenCode** - ืชืžื™ื›ื” ื‘ืกืคืง ืžืงื•ืจื™ ืขื‘ื•ืจ IDE ืงื™ื“ื•ื“ AI ืฉืœ OpenCode - ๐Ÿ”— **TRAE Integration** โ€” ืชืžื™ื›ื” ืžืœืื” ื‘ืžืกื’ืจืช ื”ืคื™ืชื•ื— ืฉืœ TRAE AI - ๐Ÿ“ฆ **ืืฆื•ื•ื” API** - ืขื™ื‘ื•ื“ ืืฆื•ื•ื” ืืกื™ื ื›ืจื•ื ื™ ืขื‘ื•ืจ ื‘ืงืฉื•ืช ื‘ื›ืžื•ืช ื’ื“ื•ืœื” - ๐ŸŽฏ **ื ื™ืชื•ื‘ ืžื‘ื•ืกืก ืชื’ื™ื** โ€” ื‘ืงืฉื•ืช ื ื™ืชื•ื‘ ื”ืžื‘ื•ืกืกื•ืช ืขืœ ืชื’ื™ื ื•ืžื˜ื ื ืชื•ื ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช - ๐Ÿ’ฐ **ืืกื˜ืจื˜ื’ื™ื™ืช ื”ืขืœื•ืช ื”ื ืžื•ื›ื” ื‘ื™ื•ืชืจ** โ€” ื‘ื—ืจ ืื•ื˜ื•ืžื˜ื™ืช ืืช ื”ืกืคืง ื”ื–ืžื™ืŸ ื”ื–ื•ืœ ื‘ื™ื•ืชืจ > ๐Ÿ“ ืžืคืจื˜ื™ ืชื›ื•ื ื” ืžืœืื™ื ื–ืžื™ื ื™ื ื‘-[**OMNI_TOKEN_342**](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 v2.0.0 --title "v2.0.0" --generate-notes ``` --- ## ๐Ÿ“Š ื”ื™ืกื˜ื•ืจื™ื™ืช ื›ื•ื›ื‘ื™ื ## ืฆื•ืคื™ื ื‘ื›ื•ื›ื‘ื™ื ืœืื•ืจืš ื–ืžืŸ ## [![Stargazers over time](https://starchart.cc/diegosouzapw/OmniRoute.svg?variant=adaptive)](https://starchart.cc/diegosouzapw/OmniRoute) ## ๐Ÿ™ ืชื•ื“ื•ืช ืชื•ื“ื” ืžื™ื•ื—ื“ืช ืœ**[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