OmniRoute Dashboard # ๐Ÿš€ OmniRoute โ€” ๋ฌด๋ฃŒ AI ๊ฒŒ์ดํŠธ์›จ์ด ๐ŸŒ **[English](#-omniroute--the-free-ai-gateway)** | **[Portuguรชs (BR)](#-omniroute--gateway-de-ia-gratuito)** ### ์ฝ”๋”ฉ์„ ๋ฉˆ์ถ”์ง€ ๋งˆ์„ธ์š”. ์ž๋™ ํด๋ฐฑ์„ ํ†ตํ•ด **๋ฌด๋ฃŒ ๋ฐ ์ €๊ฐ€ํ˜• AI ๋ชจ๋ธ**๋กœ ์Šค๋งˆํŠธ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค. _๋ฒ”์šฉ API ํ”„๋ก์‹œ โ€” ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ, 36๊ฐœ ์ด์ƒ์˜ ๊ณต๊ธ‰์ž, ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์—†์Œ._ **์ฑ„ํŒ… ์™„๋ฃŒ โ€ข ์ž„๋ฒ ๋”ฉ โ€ข ์ด๋ฏธ์ง€ ์ƒ์„ฑ โ€ข ์˜ค๋””์˜ค โ€ข ์ˆœ์œ„ ์žฌ์ง€์ • โ€ข 100% TypeScript** --- ### ๐Ÿค– ์ข‹์•„ํ•˜๋Š” ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•œ ๋ฌด๋ฃŒ AI ์ œ๊ณต์—…์ฒด _๋ฌด์ œํ•œ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ๋ฌด๋ฃŒ API ๊ฒŒ์ดํŠธ์›จ์ด์ธ OmniRoute๋ฅผ ํ†ตํ•ด AI ๊ธฐ๋ฐ˜ IDE ๋˜๋Š” CLI ๋„๊ตฌ๋ฅผ ์—ฐ๊ฒฐํ•˜์„ธ์š”._
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์„ ํ†ตํ•ด ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. โ€” ํ•˜๋‚˜์˜ ๊ตฌ์„ฑ, ๋ฌด์ œํ•œ ๋ชจ๋ธ ๋ฐ ํ• ๋‹น๋Ÿ‰ --- [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute) [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute) [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE) [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online) [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) [๐ŸŒ Website](https://omniroute.online) ยท [๐Ÿš€ Quick Start](#-quick-start) ยท [๐Ÿ’ก Features](#-key-features) ยท [๐Ÿ“– Docs](#-documentation) ยท [๐Ÿ’ฐ Pricing](#-pricing-at-a-glance) ยท [๐Ÿ’ฌ WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) ๐ŸŒ **Available in:** ๐Ÿ‡บ๐Ÿ‡ธ [English](README.md) | ๐Ÿ‡ง๐Ÿ‡ท [Portuguรชs (Brasil)](README.pt-BR.md) | ๐Ÿ‡ช๐Ÿ‡ธ [Espaรฑol](README.es.md) | ๐Ÿ‡ซ๐Ÿ‡ท [Franรงais](README.fr.md) | ๐Ÿ‡ฎ๐Ÿ‡น [Italiano](README.it.md) | ๐Ÿ‡ท๐Ÿ‡บ [ะ ัƒััะบะธะน](README.ru.md) | ๐Ÿ‡จ๐Ÿ‡ณ [ไธญๆ–‡ (็ฎ€ไฝ“)](README.zh-CN.md) | ๐Ÿ‡ฉ๐Ÿ‡ช [Deutsch](README.de.md) | ๐Ÿ‡ฎ๐Ÿ‡ณ [เคนเคฟเคจเฅเคฆเฅ€](README.in.md) | ๐Ÿ‡น๐Ÿ‡ญ [เน„เธ—เธข](README.th.md) | ๐Ÿ‡บ๐Ÿ‡ฆ [ะฃะบั€ะฐั—ะฝััŒะบะฐ](README.uk-UA.md) | ๐Ÿ‡ธ๐Ÿ‡ฆ [ุงู„ุนุฑุจูŠุฉ](README.ar.md) | ๐Ÿ‡ฏ๐Ÿ‡ต [ๆ—ฅๆœฌ่ชž](README.ja.md) | ๐Ÿ‡ป๐Ÿ‡ณ [Tiแบฟng Viแป‡t](README.vi.md) | ๐Ÿ‡ง๐Ÿ‡ฌ [ะ‘ัŠะปะณะฐั€ัะบะธ](README.bg.md) | ๐Ÿ‡ฉ๐Ÿ‡ฐ [Dansk](README.da.md) | ๐Ÿ‡ซ๐Ÿ‡ฎ [Suomi](README.fi.md) | ๐Ÿ‡ฎ๐Ÿ‡ฑ [ืขื‘ืจื™ืช](README.he.md) | ๐Ÿ‡ญ๐Ÿ‡บ [Magyar](README.hu.md) | ๐Ÿ‡ฎ๐Ÿ‡ฉ [Bahasa Indonesia](README.id.md) | ๐Ÿ‡ฐ๐Ÿ‡ท [ํ•œ๊ตญ์–ด](README.ko.md) | ๐Ÿ‡ฒ๐Ÿ‡พ [Bahasa Melayu](README.ms.md) | ๐Ÿ‡ณ๐Ÿ‡ฑ [Nederlands](README.nl.md) | ๐Ÿ‡ณ๐Ÿ‡ด [Norsk](README.no.md) | ๐Ÿ‡ต๐Ÿ‡น [Portuguรชs (Portugal)](README.pt.md) | ๐Ÿ‡ท๐Ÿ‡ด [Romรขnฤƒ](README.ro.md) | ๐Ÿ‡ต๐Ÿ‡ฑ [Polski](README.pl.md) | ๐Ÿ‡ธ๐Ÿ‡ฐ [Slovenฤina](README.sk.md) | ๐Ÿ‡ธ๐Ÿ‡ช [Svenska](README.sv.md) | ๐Ÿ‡ต๐Ÿ‡ญ [Filipino](README.phi.md)
--- ## ๐Ÿค” ์™œ OmniRoute์ธ๊ฐ€์š”? **๋ˆ์„ ๋‚ญ๋น„ํ•˜์ง€ ๋ง๊ณ  ํ•œ๋„์— ๋„๋‹ฌํ•˜์ง€ ๋งˆ์„ธ์š”.** - ๊ตฌ๋… ํ• ๋‹น๋Ÿ‰์€ ๋งค๋‹ฌ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฑ„ ๋งŒ๋ฃŒ๋ฉ๋‹ˆ๋‹ค. - ์†๋„ ์ œํ•œ์œผ๋กœ ์ธํ•ด ์ฝ”๋”ฉ์ด ์ค‘๋‹จ๋ฉ๋‹ˆ๋‹ค. - ๊ณ ๊ฐ€์˜ API(๊ณต๊ธ‰์ž๋‹น ์›” $20-50) - ๊ณต๊ธ‰์ž ๊ฐ„ ์ˆ˜๋™ ์ „ํ™˜ **OmniRoute๋Š” ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.** - โœ… **๊ตฌ๋… ๊ทน๋Œ€ํ™”** - ํ• ๋‹น๋Ÿ‰์„ ์ถ”์ ํ•˜๊ณ  ์žฌ์„ค์ •ํ•˜๊ธฐ ์ „์— ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. - โœ… **์ž๋™ ๋Œ€์ฒด** - ๊ตฌ๋… โ†’ API ํ‚ค โ†’ ์ €๋ ดํ•œ โ†’ ๋ฌด๋ฃŒ, ๋‹ค์šดํƒ€์ž„ ์—†์Œ - โœ… **๋‹ค์ค‘ ๊ณ„์ •** - ๊ณต๊ธ‰์ž๋ณ„ ๊ณ„์ • ๊ฐ„ ๋ผ์šด๋“œ ๋กœ๋นˆ - โœ… **์œ ๋‹ˆ๋ฒ„์„ค** - Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, ๋ชจ๋“  CLI ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ --- ## ๐Ÿ”„ ์ž‘๋™ ๋ฐฉ์‹ ``` โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ 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 ``` --- ## โšก ๋น ๋ฅธ ์‹œ์ž‘ **1. ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜:** ```bash npm install -g omniroute omniroute ``` ๐ŸŽ‰ ๋Œ€์‹œ๋ณด๋“œ๋Š” `http://localhost:20128`์—์„œ ์—ด๋ฆฝ๋‹ˆ๋‹ค. | ๋ช…๋ น | ์„ค๋ช… | | ----------------------- | ----------------------------- | | `omniroute` | ์„œ๋ฒ„ ์‹œ์ž‘(๊ธฐ๋ณธ ํฌํŠธ 20128) | | `omniroute --port 3000` | ์‚ฌ์šฉ์ž ์ •์˜ ํฌํŠธ ์‚ฌ์šฉ | | `omniroute --no-open` | ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ž๋™์œผ๋กœ ์—ด์ง€ ์•Š์Œ | | `omniroute --help` | ๋„์›€๋ง ํ‘œ์‹œ | **2. ๋ฌด๋ฃŒ ๊ณต๊ธ‰์ž ์—ฐ๊ฒฐ:** ๋Œ€์‹œ๋ณด๋“œ โ†’ ๊ณต๊ธ‰์ž โ†’ **Claude Code** ๋˜๋Š” **Antigravity** ์—ฐ๊ฒฐ โ†’ OAuth ๋กœ๊ทธ์ธ โ†’ ์™„๋ฃŒ! **3. CLI ๋„๊ตฌ์—์„œ ์‚ฌ์šฉ:** ``` Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings: Endpoint: http://localhost:20128/v1 API Key: [copy from dashboard] Model: if/kimi-k2-thinking ``` **๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค!** ๋ฌด๋ฃŒ AI ๋ชจ๋ธ๋กœ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•ด ๋ณด์„ธ์š”. **๋Œ€์•ˆ โ€” ์†Œ์Šค์—์„œ ์‹คํ–‰:** ```bash cp .env.example .env npm install PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev ``` --- ## ๐Ÿณ ๋„์ปค OmniRoute๋Š” [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute)์—์„œ ๊ณต๊ฐœ Docker ์ด๋ฏธ์ง€๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. **๋น ๋ฅธ ์‹คํ–‰:** ```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 | ํ˜„์žฌ ๋ฒ„์ „ | --- ## ๐Ÿ’ฐ ๊ฐ€๊ฒฉ ํ•œ๋ˆˆ์— ๋ณด๊ธฐ | ๊ณ„์ธต | ๊ณต๊ธ‰์ž | ๋น„์šฉ | ํ• ๋‹น๋Ÿ‰ ์žฌ์„ค์ • | ์ตœ๊ณ ์˜ ๋Œ€์ƒ | | ------------- | ------------------- | --------------------- | --------------- | ----------------- | | **๐Ÿ’ณ ๊ตฌ๋…** | ํด๋กœ๋“œ ์ฝ”๋“œ (Pro) | $20/์›” | 5์‹œ๊ฐ„ + ๋งค์ฃผ | ์ด๋ฏธ ๊ตฌ๋… ์ค‘ | | | ์ฝ”๋ฑ์Šค(ํ”Œ๋Ÿฌ์Šค/ํ”„๋กœ) | $20-200/์›” | 5์‹œ๊ฐ„ + ๋งค์ฃผ | OpenAI ์‚ฌ์šฉ์ž | | | ์ œ๋ฏธ๋‹ˆ CLI | **๋ฌด๋ฃŒ** | 180K/์›” + 1K/์ผ | ๋ชจ๋“  ์‚ฌ๋žŒ! | | | GitHub ๋ถ€์กฐ์ข…์‚ฌ | $10-19/์›” | ์›”๊ฐ„ | GitHub ์‚ฌ์šฉ์ž | | **๐Ÿ”‘ API ํ‚ค** | ์—”๋น„๋””์•„ NIM | **๋ฌด๋ฃŒ** (1000ํฌ๋ ˆ๋”ง) | ์ผํšŒ์„ฑ | ๋ฌด๋ฃŒ ๋“ฑ๊ธ‰ ํ…Œ์ŠคํŠธ | | | ๋”ฅ์‹œํฌ | ์ข…๋Ÿ‰์ œ | ์—†์Œ | ์ตœ๊ณ ์˜ ๊ฐ€๊ฒฉ/ํ’ˆ์งˆ | | | ๊ทธ๋กœํฌ | ๋ฌด๋ฃŒ ๋“ฑ๊ธ‰ + ์œ ๋ฃŒ | ์š”๊ธˆ ์ œํ•œ | ์ดˆ๊ณ ์† ์ถ”๋ก  | | | xAI(๊ทธ๋ก) | ์ข…๋Ÿ‰์ œ | ์—†์Œ | ๊ทธ๋ก ๋ชจ๋ธ | | | ๋ฏธ์ŠคํŠธ๋ž„ | ๋ฌด๋ฃŒ ๋“ฑ๊ธ‰ + ์œ ๋ฃŒ | ์š”๊ธˆ ์ œํ•œ | ์œ ๋Ÿฝ์˜ AI | | | ์˜คํ”ˆ๋ผ์šฐํ„ฐ | ์ข…๋Ÿ‰์ œ | ์—†์Œ | 100๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ | | **๐Ÿ’ฐ ์ €๋ ดํ•œ** | GLM-4.7 | $0.6/1M | ๋งค์ผ ์˜ค์ „ 10์‹œ | ์˜ˆ์‚ฐ ๋ฐฑ์—… | | | ๋ฏธ๋‹ˆ๋งฅ์Šค M2.1 | $0.2/1M | 5์‹œ๊ฐ„ ๋กค๋ง | ๊ฐ€์žฅ ์ €๋ ดํ•œ ์˜ต์…˜ | | | ํ‚ค๋ฏธ K2 | $9/์›” ์ •์•ก | 1000๋งŒ ํ† ํฐ/์›” | ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๋น„์šฉ | | **๐Ÿ†“ ๋ฌด๋ฃŒ** | ์•„์ดํ”Œ๋กœ์šฐ | $0 | ๋ฌด์ œํ•œ | 8๊ฐœ ๋ชจ๋ธ ๋ฌด๋ฃŒ | | | ํ€€ | $0 | ๋ฌด์ œํ•œ | 3๊ฐœ ๋ชจ๋ธ ๋ฌด๋ฃŒ | | | ํ‚ค๋กœ | $0 | ๋ฌด์ œํ•œ | ํด๋กœ๋“œ ํ”„๋ฆฌ | **๐Ÿ’ก ์ „๋ฌธ๊ฐ€ ํŒ:** Gemini CLI(์›” 180K ๋ฌด๋ฃŒ) + iFlow(๋ฌด์ œํ•œ ๋ฌด๋ฃŒ) ์ฝค๋ณด = ๋น„์šฉ $0๋กœ ์‹œ์ž‘ํ•˜์„ธ์š”! --- ## ๐ŸŽฏ ์‚ฌ์šฉ ์‚ฌ๋ก€ ### ์‚ฌ๋ก€ 1: "Claude Pro๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค." **๋ฌธ์ œ:** ํ• ๋‹น๋Ÿ‰์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ์ƒํƒœ๋กœ ๋งŒ๋ฃŒ๋˜๋ฉฐ, ์ฝ”๋”ฉ ์ž‘์—…์ด ๋งŽ์€ ๋™์•ˆ ์†๋„ ์ œํ•œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ``` Combo: "maximize-claude" 1. cc/claude-opus-4-6 (use subscription fully) 2. glm/glm-4.7 (cheap backup when quota out) 3. if/kimi-k2-thinking (free emergency fallback) Monthly cost: $20 (subscription) + ~$5 (backup) = $25 total vs. $20 + hitting limits = frustration ``` ### ์‚ฌ๋ก€ 2: "๋น„์šฉ์ด 0์ด๊ธธ ์›ํ•ฉ๋‹ˆ๋‹ค" **๋ฌธ์ œ:** ๊ตฌ๋…๋ฃŒ๋ฅผ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†๊ณ  ์•ˆ์ •์ ์ธ AI ์ฝ”๋”ฉ์ด ํ•„์š”ํ•จ ``` Combo: "free-forever" 1. gc/gemini-3-flash (180K free/month) 2. if/kimi-k2-thinking (unlimited free) 3. qw/qwen3-coder-plus (unlimited free) Monthly cost: $0 Quality: Production-ready models ``` ### ์‚ฌ๋ก€ 3: "์ค‘๋‹จ ์—†์ด ์—ฐ์ค‘๋ฌดํœด ์ฝ”๋”ฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค." **๋ฌธ์ œ:** ๋งˆ๊ฐ์ผ, ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„์„ ๊ฐ๋‹นํ•  ์ˆ˜ ์—†์Œ ``` Combo: "always-on" 1. cc/claude-opus-4-6 (best quality) 2. cx/gpt-5.2-codex (second subscription) 3. glm/glm-4.7 (cheap, resets daily) 4. minimax/MiniMax-M2.1 (cheapest, 5h reset) 5. if/kimi-k2-thinking (free unlimited) Result: 5 layers of fallback = zero downtime ``` ### ์‚ฌ๋ก€ 4: "OpenClaw์—์„œ ๋ฌด๋ฃŒ AI๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค" **๋ฌธ์ œ:** ๋ฉ”์‹œ์ง• ์•ฑ์— AI ๋„์šฐ๋ฏธ๊ฐ€ ํ•„์š”ํ•˜๋ฉฐ ์™„์ „ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. ``` Combo: "openclaw-free" 1. if/glm-4.7 (unlimited free) 2. if/minimax-m2.1 (unlimited free) 3. if/kimi-k2-thinking (unlimited free) Monthly cost: $0 Access via: WhatsApp, Telegram, Slack, Discord, iMessage, Signal... ``` --- ## ๐Ÿ’ก ์ฃผ์š” ๊ธฐ๋Šฅ ### ๐Ÿง  ์ฝ”์–ด ๋ผ์šฐํŒ… ๋ฐ ์ธํ…”๋ฆฌ์ „์Šค | ๊ธฐ๋Šฅ | ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ | | --------------------------- | ------------------------------------------------------------------------- | | ๐ŸŽฏ **์Šค๋งˆํŠธ 4๊ณ„์ธต ํด๋ฐฑ** | ์ž๋™ ๊ฒฝ๋กœ: ๊ตฌ๋… โ†’ API ํ‚ค โ†’ ์ €๋ ดํ•œ โ†’ ๋ฌด๋ฃŒ | | ๐Ÿ“Š **์‹ค์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ์ถ”์ ** | ๋ผ์ด๋ธŒ ํ† ํฐ ์ˆ˜ + ๊ณต๊ธ‰์ž๋ณ„ ์นด์šดํŠธ๋‹ค์šด ์žฌ์„ค์ • | | ๐Ÿ”„ **ํ˜•์‹ ๋ฒˆ์—ญ** | OpenAI โ‡” Claude โ‡” Gemini โ‡” Cursor โ‡” Kiro ์‹ฌ๋ฆฌ์Šค + ๋ฐ˜์‘์œ„์ƒ | | ๐Ÿ‘ฅ **๋‹ค์ค‘ ๊ณ„์ • ์ง€์›** | ์ง€๋Šฅ์ ์ธ ์„ ํƒ์„ ํ†ตํ•ด ๊ณต๊ธ‰์ž๋‹น ์—ฌ๋Ÿฌ ๊ณ„์ • | | ๐Ÿ”„ **์ž๋™ ํ† ํฐ ์ƒˆ๋กœ๊ณ ์นจ** | ์žฌ์‹œ๋„ ์‹œ OAuth ํ† ํฐ์ด ์ž๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค. | | ๐ŸŽจ **๋งž์ถคํ˜• ์ฝค๋ณด** | 6๊ฐ€์ง€ ์ „๋žต: ์ฑ„์šฐ๊ธฐ ์šฐ์„ , ๋ผ์šด๋“œ ๋กœ๋นˆ, p2c, ๋ฌด์ž‘์œ„, ์ตœ์†Œ ์‚ฌ์šฉ, ๋น„์šฉ ์ตœ์ ํ™” | | ๐Ÿงฉ **๋งž์ถคํ˜• ๋ชจ๋ธ** | ๋ชจ๋“  ๊ณต๊ธ‰์ž์— ๋ชจ๋ธ ID ์ถ”๊ฐ€ | | ๐ŸŒ **์™€์ผ๋“œ์นด๋“œ ๋ผ์šฐํ„ฐ** | `provider/*` ํŒจํ„ด์„ ๋ชจ๋“  ๊ณต๊ธ‰์ž์—๊ฒŒ ๋™์ ์œผ๋กœ ๋ผ์šฐํŒ… | | ๐Ÿง  **์˜ˆ์‚ฐ ๊ณ ๋ ค** | ์ถ”๋ก  ๋ชจ๋ธ์„ ์œ„ํ•œ ํŒจ์Šค์Šค๋ฃจ, ์ž๋™, ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ ์ ์‘ํ˜• ๋ชจ๋“œ | | ๐Ÿ’ฌ **์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์‚ฝ์ž…** | ๋ชจ๋“  ์š”์ฒญ์— โ€‹โ€‹์ „์—ญ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์ ์šฉ | | ๐Ÿ“„ **์‘๋‹ต API** | Codex์— ๋Œ€ํ•œ ์ „์ฒด OpenAI ์‘๋‹ต API(`/v1/responses`) ์ง€์› | ### ๐ŸŽต ๋‹ค์ค‘ ๋ชจ๋“œ API | ๊ธฐ๋Šฅ | ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ | | ----------------------- | ------------------------------------------------------ | | ๐Ÿ–ผ๏ธ **์ด๋ฏธ์ง€ ์ƒ์„ฑ** | `/v1/images/generations` โ€” 4๊ฐœ ๊ณต๊ธ‰์ž, 9๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ | | ๐Ÿ“ **์ž„๋ฒ ๋”ฉ** | `/v1/embeddings` โ€” 6๊ฐœ ๊ณต๊ธ‰์ž, 9๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ | | ๐ŸŽค **์˜ค๋””์˜ค ์ „์‚ฌ** | `/v1/audio/transcriptions` โ€” ์†์‚ญ์ž„ ํ˜ธํ™˜ | | ๐Ÿ”Š **ํ…์ŠคํŠธ ์Œ์„ฑ ๋ณ€ํ™˜** | `/v1/audio/speech` โ€” ๋‹ค์ค‘ ์ œ๊ณต์ž ์˜ค๋””์˜ค ํ•ฉ์„ฑ | | ๐Ÿ›ก๏ธ **์กฐ์ •** | `/v1/moderations` โ€” ์ฝ˜ํ…์ธ  ์•ˆ์ „ ํ™•์ธ | | ๐Ÿ”€ **์žฌ์ˆœ์œ„** | `/v1/rerank` โ€” ๋ฌธ์„œ ๊ด€๋ จ์„ฑ ์žฌ์ˆœ์œ„ | ### ๐Ÿ›ก๏ธ ๋ณต์›๋ ฅ ๋ฐ ๋ณด์•ˆ | ๊ธฐ๋Šฅ | ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ | | ---------------------------- | -------------------------------------------------------------------------- | | ๐Ÿ”Œ **ํšŒ๋กœ ์ฐจ๋‹จ๊ธฐ** | ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ ์ž„๊ณ„๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณต๊ธ‰์ž๋ณ„ ์ž๋™ ์—ด๊ธฐ/๋‹ซ๊ธฐ | | ๐Ÿ›ก๏ธ **์ฒœ๋‘ฅ ๋ฐฉ์ง€ ๋ฌด๋ฆฌ** | API ํ‚ค ๊ณต๊ธ‰์ž์— ๋Œ€ํ•œ ๋ฎคํ…์Šค + ์„ธ๋งˆํฌ ์†๋„ ์ œํ•œ | | ๐Ÿง  **์˜๋ฏธ๋ก ์  ์บ์‹œ** | 2๊ณ„์ธต ์บ์‹œ(์„œ๋ช… + ์˜๋ฏธ ์ฒด๊ณ„)๋กœ ๋น„์šฉ ๋ฐ ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๊ฐ์†Œ | | โšก **๋ฉฑ๋“ฑ์„ฑ ์š”์ฒญ** | ์ค‘๋ณต ์š”์ฒญ์— ๋Œ€ํ•œ 5์ดˆ ์ค‘๋ณต ์ œ๊ฑฐ ๊ธฐ๊ฐ„ | | ๐Ÿ”’ **TLS ์ง€๋ฌธ ์Šคํ‘ธํ•‘** | wreq-js๋ฅผ ํ†ตํ•ด TLS ๊ธฐ๋ฐ˜ ๋ด‡ ๊ฐ์ง€ ์šฐํšŒ | | ๐ŸŒ **IP ํ•„ํ„ฐ๋ง** | API ์•ก์„ธ์Šค ์ œ์–ด๋ฅผ ์œ„ํ•œ ํ—ˆ์šฉ ๋ชฉ๋ก/์ฐจ๋‹จ ๋ชฉ๋ก | | ๐Ÿ“Š **ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ์†๋„ ์ œํ•œ** | ์‹œ์Šคํ…œ ์ˆ˜์ค€์—์„œ ๊ตฌ์„ฑ ๊ฐ€๋Šฅํ•œ RPM, ์ตœ์†Œ ๊ฐ„๊ฒฉ ๋ฐ ์ตœ๋Œ€ ๋™์‹œ | | ๐Ÿ›ก **API ์—”๋“œํฌ์ธํŠธ ๋ณดํ˜ธ** | `/models` ์—”๋“œํฌ์ธํŠธ์— ๋Œ€ํ•œ ์ธ์ฆ ๊ฒŒ์ดํŒ… + ๊ณต๊ธ‰์ž ์ฐจ๋‹จ | | ๐Ÿ”’ **ํ”„๋ก์‹œ ๊ฐ€์‹œ์„ฑ** | ์ƒ‰์ƒ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฐฐ์ง€: ๐ŸŸข ๊ธ€๋กœ๋ฒŒ, ๐ŸŸก ๊ณต๊ธ‰์ž, ๐Ÿ”ต IP ๋””์Šคํ”Œ๋ ˆ์ด๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ๋ณ„ | | ๐ŸŒ **3๋‹จ๊ณ„ ํ”„๋ก์‹œ ๊ตฌ์„ฑ** | ๊ธ€๋กœ๋ฒŒ, ๊ณต๊ธ‰์ž๋ณ„ ๋˜๋Š” ์—ฐ๊ฒฐ๋ณ„ ์ˆ˜์ค€์—์„œ ํ”„๋ก์‹œ ๊ตฌ์„ฑ | ### ๐Ÿ“Š ๊ด€์ฐฐ ๊ฐ€๋Šฅ์„ฑ ๋ฐ ๋ถ„์„ | ๊ธฐ๋Šฅ | ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ | | ------------------------- | -------------------------------------------------------------------- | | ๐Ÿ“ **๋กœ๊น… ์š”์ฒญ** | ์ „์ฒด ์š”์ฒญ/์‘๋‹ต ๋กœ๊ทธ๊ฐ€ ํฌํ•จ๋œ ๋””๋ฒ„๊ทธ ๋ชจ๋“œ | | ๐Ÿ’พ **SQLite ํ”„๋ก์‹œ ๋กœ๊ทธ** | ์˜๊ตฌ ํ”„๋ก์‹œ ๋กœ๊ทธ๋Š” ์„œ๋ฒ„๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. | | ๐Ÿ“Š **๋ถ„์„ ๋Œ€์‹œ๋ณด๋“œ** | Recharts ๊ธฐ๋ฐ˜: ํ†ต๊ณ„ ์นด๋“œ, ๋ชจ๋ธ ์‚ฌ์šฉ ์ฐจํŠธ, ๊ณต๊ธ‰์ž ํ…Œ์ด๋ธ” | | ๐Ÿ“ˆ **์ง„ํ–‰ ์ƒํ™ฉ ์ถ”์ ** | ์ŠคํŠธ๋ฆฌ๋ฐ์„ ์œ„ํ•œ ์˜ตํŠธ์ธ SSE ์ง„ํ–‰ ์ด๋ฒคํŠธ | | ๐Ÿงช **LLM ํ‰๊ฐ€** | 4๊ฐ€์ง€ ๋งค์น˜ ์ „๋žต์„ ์‚ฌ์šฉํ•œ ๊ณจ๋“  ์„ธํŠธ ํ…Œ์ŠคํŠธ | | ๐Ÿ” **์›๊ฒฉ ์ธก์ • ์š”์ฒญ** | p50/p95/p99 ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์ง‘๊ณ„ + X-์š”์ฒญ-ID ์ถ”์  | | ๐Ÿ“‹ **๋กœ๊ทธ ๋Œ€์‹œ๋ณด๋“œ** | ํ†ตํ•ฉ๋œ 4๊ฐœ ํƒญ ํŽ˜์ด์ง€: ์š”์ฒญ ๋กœ๊ทธ, ํ”„๋ก์‹œ ๋กœ๊ทธ, ๊ฐ์‚ฌ ๋กœ๊ทธ, ์ฝ˜์†” | | ๐Ÿ–ฅ๏ธ **์ฝ˜์†” ๋กœ๊ทธ ๋ทฐ์–ด** | ๋ ˆ๋ฒจ ํ•„ํ„ฐ, ๊ฒ€์ƒ‰, ์ž๋™ ์Šคํฌ๋กค ๊ธฐ๋Šฅ์„ ๊ฐ–์ถ˜ ์‹ค์‹œ๊ฐ„ ํ„ฐ๋ฏธ๋„ ์Šคํƒ€์ผ ๋ทฐ์–ด | | ๐Ÿ“‘ **ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๋กœ๊น…** | ์ฝ˜์†” ์ธํ„ฐ์…‰ํ„ฐ๋Š” ํšŒ์ „์„ ํ†ตํ•ด ๋ชจ๋“  ์ถœ๋ ฅ์„ JSON ๋กœ๊ทธ ํŒŒ์ผ๋กœ ์บก์ฒ˜ํ•ฉ๋‹ˆ๋‹ค. | | ๐Ÿฅ **๊ฑด๊ฐ• ๋Œ€์‹œ๋ณด๋“œ** | ์‹œ์Šคํ…œ ๊ฐ€๋™ ์‹œ๊ฐ„, ํšŒ๋กœ ์ฐจ๋‹จ๊ธฐ ์ƒํƒœ, ์ž ๊ธˆ, ์บ์‹œ ํ†ต๊ณ„ | | ๐Ÿ’ฐ **๋น„์šฉ ์ถ”์ ** | ์˜ˆ์‚ฐ ๊ด€๋ฆฌ + ๋ชจ๋ธ๋ณ„ ๊ฐ€๊ฒฉ ๊ตฌ์„ฑ | ### โ˜๏ธ ๋ฐฐํฌ ๋ฐ ๋™๊ธฐํ™” | ๊ธฐ๋Šฅ | ๊ทธ๊ฒƒ์ด ํ•˜๋Š” ์ผ | | ---------------------------------- | ----------------------------------------------------------------- | | ๐Ÿ’พ **ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™”** | Cloudflare Workers๋ฅผ ํ†ตํ•ด ์žฅ์น˜ ๊ฐ„ ๊ตฌ์„ฑ ๋™๊ธฐํ™” | | ๐ŸŒ **์–ด๋””์„œ๋‚˜ ๋ฐฐํฌ** | ๋กœ์ปฌํ˜ธ์ŠคํŠธ, VPS, Docker, Cloudflare ์ž‘์—…์ž | | ๐Ÿ”‘ **API ํ‚ค ๊ด€๋ฆฌ** | ๊ณต๊ธ‰์ž๋ณ„ API ํ‚ค ์ƒ์„ฑ, ํšŒ์ „ ๋ฐ ๋ฒ”์œ„ ์ง€์ • | | ๐Ÿง™ **์˜จ๋ณด๋”ฉ ๋งˆ๋ฒ•์‚ฌ** | ์ฒ˜์Œ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ 4๋‹จ๊ณ„ ์•ˆ๋‚ด ์„ค์ • | | ๐Ÿ”ง **CLI ๋„๊ตฌ ๋Œ€์‹œ๋ณด๋“œ** | ์›ํด๋ฆญ ๊ตฌ์„ฑ Claude, Codex, Cline, OpenClaw, Kilo, Antigravity | | ๐Ÿ”„ **DB ๋ฐฑ์—…** | ๋ชจ๋“  ์„ค์ •์— ๋Œ€ํ•œ ์ž๋™ ๋ฐฑ์—…, ๋ณต์›, ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฐ ๊ฐ€์ ธ์˜ค๊ธฐ | | ๐ŸŒ **๊ตญ์ œํ™”** | next-intl์ด ํฌํ•จ๋œ ์ „์ฒด i18n โ€” ์˜์–ด + ํฌ๋ฅดํˆฌ๊ฐˆ์–ด(๋ธŒ๋ผ์งˆ) ์ง€์› | | ๐ŸŒ **์–ธ์–ด ์„ ํƒ๊ธฐ** | ์‹ค์‹œ๊ฐ„ ์–ธ์–ด ์ „ํ™˜์„ ์œ„ํ•œ ํ—ค๋”์˜ ์ง€๊ตฌ๋ณธ ์•„์ด์ฝ˜(๐Ÿ‡บ๐Ÿ‡ธ/๐Ÿ‡ง๐Ÿ‡ท) | | ๐Ÿ“‚ **์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ** | `DATA_DIR` env var๋Š” ๊ธฐ๋ณธ `~/.omniroute` ์ €์žฅ ๊ฒฝ๋กœ๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค |
๐Ÿ“– ๊ธฐ๋Šฅ ์„ธ๋ถ€์ •๋ณด ### ๐ŸŽฏ ์Šค๋งˆํŠธ 4๊ณ„์ธต ํด๋ฐฑ ์ž๋™ ๋Œ€์ฒด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝค๋ณด ๋งŒ๋“ค๊ธฐ: ``` Combo: "my-coding-stack" 1. cc/claude-opus-4-6 (your subscription) 2. nvidia/llama-3.3-70b (free NVIDIA API) 3. glm/glm-4.7 (cheap backup, $0.6/1M) 4. if/kimi-k2-thinking (free fallback) โ†’ Auto switches when quota runs out or errors occur ``` ### ๐Ÿ“Š ์‹ค์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ์ถ”์  - ์ œ๊ณต์ž๋ณ„ ํ† ํฐ ์†Œ๋น„ - ์นด์šดํŠธ๋‹ค์šด ์žฌ์„ค์ •(5์‹œ๊ฐ„, ๋งค์ผ, ๋งค์ฃผ) - ์œ ๋ฃŒ ๊ณ„์ธต์— ๋Œ€ํ•œ ๋น„์šฉ ์ถ”์ • - ์›”๋ณ„ ์ง€์ถœ ๋ณด๊ณ ์„œ ### ๐Ÿ”„ ํ˜•์‹ ๋ฒˆ์—ญ ํ˜•์‹ ๊ฐ„ ์›ํ™œํ•œ ๋ฒˆ์—ญ: - **OpenAI** โ† **Claude** โ† **Gemini** โ† **OpenAI ์‘๋‹ต** - CLI ๋„๊ตฌ๊ฐ€ OpenAI ํ˜•์‹ ์ „์†ก โ†’ OmniRoute ๋ณ€ํ™˜ โ†’ ๊ณต๊ธ‰์ž๊ฐ€ ๊ธฐ๋ณธ ํ˜•์‹ ์ˆ˜์‹  - ๋งž์ถคํ˜• OpenAI ์—”๋“œํฌ์ธํŠธ๋ฅผ ์ง€์›ํ•˜๋Š” ๋ชจ๋“  ๋„๊ตฌ์™€ ํ•จ๊ป˜ ์ž‘๋™ - **์‘๋‹ต ์‚ญ์ œ** โ€” ์—„๊ฒฉํ•œ OpenAI SDK ํ˜ธํ™˜์„ฑ์„ ์œ„ํ•ด ๋น„ํ‘œ์ค€ ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. - **์—ญํ•  ์ •๊ทœํ™”** โ€” OpenAI๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ `developer` โ†’ `system`; `system` โ†’ GLM/ERNIE ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ `user` - **์‚ฌ๊ณ  ํƒœ๊ทธ ์ถ”์ถœ** โ€” ์‚ฌ๊ณ  ๋ชจ๋ธ์˜ ๊ฒฝ์šฐ `` ๋ธ”๋ก โ†’ `reasoning_content` - **๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ** โ€” `json_schema` โ†’ Gemini์˜ `responseMimeType`/`responseSchema` ### ๐Ÿ‘ฅ ๋‹ค์ค‘ ๊ณ„์ • ์ง€์› - ๊ณต๊ธ‰์ž๋‹น ์—ฌ๋Ÿฌ ๊ณ„์ • ์ถ”๊ฐ€ - ์ž๋™ ๋ผ์šด๋“œ ๋กœ๋นˆ ๋˜๋Š” ์šฐ์„ ์ˆœ์œ„ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ… - ํ•œ ๊ณ„์ •์ด ํ• ๋‹น๋Ÿ‰์— ๋„๋‹ฌํ•˜๋ฉด ๋‹ค์Œ ๊ณ„์ •์œผ๋กœ ๋Œ€์ฒด ### ๐Ÿ”„ ์ž๋™ ํ† ํฐ ์ƒˆ๋กœ๊ณ ์นจ - OAuth ํ† ํฐ์€ ๋งŒ๋ฃŒ๋˜๊ธฐ ์ „์— ์ž๋™์œผ๋กœ ์ƒˆ๋กœ ๊ณ ์ณ์ง‘๋‹ˆ๋‹ค. - ์ˆ˜๋™ ์žฌ์ธ์ฆ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - ๋ชจ๋“  ์ œ๊ณต์—…์ฒด์— ๊ฑธ์นœ ์›ํ™œํ•œ ๊ฒฝํ—˜ ### ๐ŸŽจ ๋งž์ถค ์ฝค๋ณด - ๋ฌด์ œํ•œ ๋ชจ๋ธ ์กฐํ•ฉ ์ƒ์„ฑ - 6๊ฐ€์ง€ ์ „๋žต: ์ฑ„์šฐ๊ธฐ ์šฐ์„ , ๋ผ์šด๋“œ ๋กœ๋นˆ, ๋‘ ๊ฐ€์ง€ ์„ ํƒ์˜ ํž˜, ๋ฌด์ž‘์œ„, ์ตœ์†Œ ์‚ฌ์šฉ, ๋น„์šฉ ์ตœ์ ํ™” - Cloud Sync๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ธฐ๊ธฐ์—์„œ ์ฝค๋ณด๋ฅผ ๊ณต์œ ํ•˜์„ธ์š” ### ๐Ÿฅ ๊ฑด๊ฐ• ๋Œ€์‹œ๋ณด๋“œ - ์‹œ์Šคํ…œ ์ƒํƒœ(๊ฐ€๋™ ์‹œ๊ฐ„, ๋ฒ„์ „, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰) - ๊ณต๊ธ‰์ž๋ณ„ ํšŒ๋กœ ์ฐจ๋‹จ๊ธฐ ์ƒํƒœ(Closed/Open/Half-Open) - ์†๋„ ์ œํ•œ ์ƒํƒœ ๋ฐ ํ™œ์„ฑ ์ž ๊ธˆ - ์„œ๋ช… ์บ์‹œ ํ†ต๊ณ„ - ๋Œ€๊ธฐ ์‹œ๊ฐ„ ์›๊ฒฉ ์ธก์ •(p50/p95/p99) + ํ”„๋กฌํ”„ํŠธ ์บ์‹œ - ํ•œ ๋ฒˆ์˜ ํด๋ฆญ์œผ๋กœ ๊ฑด๊ฐ• ์ƒํƒœ ์žฌ์„ค์ • ### ๐Ÿ”ง ๋ฒˆ์—ญ๊ธฐ ๋†€์ดํ„ฐ OmniRoute์—๋Š” API ๋ฒˆ์—ญ ๋””๋ฒ„๊น…, ํ…Œ์ŠคํŠธ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์œ„ํ•œ **4๊ฐ€์ง€ ๋ชจ๋“œ**๋ฅผ ๊ฐ–์ถ˜ ๊ฐ•๋ ฅํ•œ ๋‚ด์žฅ ๋ฒˆ์—ญ๊ธฐ ํ”Œ๋ ˆ์ด๊ทธ๋ผ์šด๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. | ๋ชจ๋“œ | ์„ค๋ช… | | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **๐Ÿ’ป ๋†€์ดํ„ฐ** | ์ง์ ‘ ํ˜•์‹ ๋ณ€ํ™˜ โ€” API ์š”์ฒญ ๋ณธ๋ฌธ์„ ๋ถ™์—ฌ๋„ฃ๊ณ  OmniRoute๊ฐ€ ๊ณต๊ธ‰์ž ํ˜•์‹(OpenAI โ† Claude โ† Gemini โ† Responses API) ๊ฐ„์— ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณ€ํ™˜ํ•˜๋Š”์ง€ ์ฆ‰์‹œ ํ™•์ธํ•˜์„ธ์š”. ์˜ˆ์ œ ํ…œํ”Œ๋ฆฟ๊ณผ ํ˜•์‹ ์ž๋™ ๊ฐ์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. | | **๐Ÿ’ฌ ์ฑ„ํŒ… ํ…Œ์Šคํ„ฐ** | OmniRoute๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์ฑ„ํŒ… ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ „์ฒด ์™•๋ณต(์ž…๋ ฅ, ๋ฒˆ์—ญ๋œ ์š”์ฒญ, ๊ณต๊ธ‰์ž ์‘๋‹ต, ๋ฒˆ์—ญ๋œ ์‘๋‹ต)์„ ํ™•์ธํ•˜์„ธ์š”. ์ฝค๋ณด ๋ผ์šฐํŒ…์„ ๊ฒ€์ฆํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. | | **๐Ÿงช ํ…Œ์ŠคํŠธ ๋ฒค์น˜** | ๋ฐฐ์น˜ ํ…Œ์ŠคํŠธ ๋ชจ๋“œ โ€” ์„œ๋กœ ๋‹ค๋ฅธ ์ž…๋ ฅ๊ณผ ์˜ˆ์ƒ ์ถœ๋ ฅ์œผ๋กœ ์—ฌ๋Ÿฌ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ •์˜ํ•˜๊ณ , ์ด๋ฅผ ๋ชจ๋‘ ํ•œ ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ณ , ๊ณต๊ธ‰์ž์™€ ๋ชจ๋ธ ๊ฐ„์— ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. | | **๐Ÿ“ฑ ๋ผ์ด๋ธŒ ๋ชจ๋‹ˆํ„ฐ** | ์‹ค์‹œ๊ฐ„ ์š”์ฒญ ๋ชจ๋‹ˆํ„ฐ๋ง โ€” OmniRoute๋ฅผ ํ†ตํ•ด ๋“ค์–ด์˜ค๋Š” ์š”์ฒญ์„ ๊ฐ์‹œํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ํ˜•์‹ ๋ณ€ํ™˜์„ ํ™•์ธํ•˜๊ณ , ๋ฌธ์ œ๋ฅผ ์ฆ‰์‹œ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. | **์•ก์„ธ์Šค:** ๋Œ€์‹œ๋ณด๋“œ โ†’ ๋ฒˆ์—ญ๊ธฐ(์‚ฌ์ด๋“œ๋ฐ”) ### ๐Ÿ’พ ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™” - ์—ฌ๋Ÿฌ ์žฅ์น˜์—์„œ ๊ณต๊ธ‰์ž, ์ฝค๋ณด ๋ฐ ์„ค์ •์„ ๋™๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. - ์ž๋™ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋™๊ธฐํ™” - ์•ˆ์ „ํ•œ ์•”ํ˜ธํ™” ์ €์žฅ
--- ## ๐Ÿ“– ์„ค์ • ๊ฐ€์ด๋“œ
๐Ÿ’ณ ๊ตฌ๋… ์ œ๊ณต์—…์ฒด ### ํด๋กœ๋“œ ์ฝ”๋“œ(Pro/Max) ```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๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์†๋„๋ฅผ ๋†’์ด๋ ค๋ฉด Sonnet์„ ์‚ฌ์šฉํ•˜์„ธ์š”. OmniRoute๋Š” ๋ชจ๋ธ๋‹น ํ• ๋‹น๋Ÿ‰์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค! ### OpenAI ์ฝ”๋ฑ์Šค(Plus/Pro) ```bash Dashboard โ†’ Providers โ†’ Connect Codex โ†’ OAuth login (port 1455) โ†’ 5-hour + weekly reset Models: cx/gpt-5.2-codex cx/gpt-5.1-codex-max ``` ### Gemini CLI(์›” 180,000 ๋ฌด๋ฃŒ!) ```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 ์ฝ”ํŒŒ์ผ๋Ÿฟ ```bash Dashboard โ†’ Providers โ†’ Connect GitHub โ†’ OAuth via GitHub โ†’ Monthly reset (1st of month) Models: gh/gpt-5 gh/claude-4.5-sonnet gh/gemini-3-pro ```
๐Ÿ”‘ API ํ‚ค ์ œ๊ณต์ž ### NVIDIA NIM(๋ฌด๋ฃŒ 1000 ํฌ๋ ˆ๋”ง!) 1. ๊ฐ€์ž…: [build.nvidia.com](https://build.nvidia.com) 2. ๋ฌด๋ฃŒ API ํ‚ค ๋ฐ›๊ธฐ(1000 ์ถ”๋ก  ํฌ๋ ˆ๋”ง ํฌํ•จ) 3. ๋Œ€์‹œ๋ณด๋“œ โ†’ ๊ณต๊ธ‰์ž ์ถ”๊ฐ€ โ†’ NVIDIA NIM: - API ํ‚ค: `nvapi-your-key` **๋ชจ๋ธ:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` ์™ธ 50๊ฐœ ์ด์ƒ **ํ”„๋กœ ํŒ:** OpenAI ํ˜ธํ™˜ API โ€” OmniRoute์˜ ํ˜•์‹ ๋ณ€ํ™˜๊ณผ ์›ํ™œํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ### ๋”ฅ์‹œํฌ 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 **๋ชจ๋ธ:** ๋‹จ์ผ API ํ‚ค๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ฃผ์š” ์ œ๊ณต์—…์ฒด์˜ 100๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๐Ÿ’ฐ ์ €๋ ดํ•œ ๊ณต๊ธ‰์ž(๋ฐฑ์—…) ### GLM-4.7 (์ผ์ผ ์žฌ์„ค์ •, $0.6/1M) 1. ๊ฐ€์ž…: [Zhipu AI](https://open.bigmodel.cn/) 2. Coding Plan์—์„œ API Key ๋ฐ›๊ธฐ 3. ๋Œ€์‹œ๋ณด๋“œ โ†’ API ํ‚ค ์ถ”๊ฐ€: - ์ œ๊ณต์ž: `glm` - API ํ‚ค: `your-key` **์‚ฌ์šฉ:** `glm/glm-4.7` **ํ”„๋กœ ํŒ:** ์ฝ”๋”ฉ ๊ณ„ํš์€ 1/7 ๋น„์šฉ์œผ๋กœ 3๋ฐฐ ํ• ๋‹น๋Ÿ‰์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค! ๋งค์ผ ์˜ค์ „ 10์‹œ์— ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค. ### MiniMax M2.1(5์‹œ๊ฐ„ ์žฌ์„ค์ •, $0.20/1M) 1. ๊ฐ€์ž…: [MiniMax](https://www.minimax.io/) 2. API ํ‚ค ๋ฐ›๊ธฐ 3. ๋Œ€์‹œ๋ณด๋“œ โ†’ API Key ์ถ”๊ฐ€ **์‚ฌ์šฉ:** `minimax/MiniMax-M2.1` **ํ”„๋กœ ํŒ:** ๊ธด ์ปจํ…์ŠคํŠธ(100๋งŒ ํ† ํฐ)๋ฅผ ์œ„ํ•œ ๊ฐ€์žฅ ์ €๋ ดํ•œ ์˜ต์…˜์ž…๋‹ˆ๋‹ค! ### Kimi K2($9/์›” ์ •์•ก) 1. ๊ตฌ๋…: [Moonshot AI](https://platform.moonshot.ai/) 2. API ํ‚ค ๋ฐ›๊ธฐ 3. ๋Œ€์‹œ๋ณด๋“œ โ†’ API Key ์ถ”๊ฐ€ **์‚ฌ์šฉ:** `kimi/kimi-latest` **ํ”„๋กœ ํŒ:** 1,000๋งŒ ํ† ํฐ์— ๋Œ€ํ•ด ๊ณ ์ • $9/์›” = $0.90/1M ์œ ํšจ ๋น„์šฉ!
๐Ÿ†“ ๋ฌด๋ฃŒ ์ œ๊ณต์—…์ฒด(๊ธด๊ธ‰ ๋ฐฑ์—…) ### iFlow(8๊ฐœ ๋ฌด๋ฃŒ ๋ชจ๋ธ) ```bash Dashboard โ†’ Connect iFlow โ†’ iFlow OAuth login โ†’ Unlimited usage Models: if/kimi-k2-thinking if/qwen3-coder-plus if/glm-4.7 if/minimax-m2 if/deepseek-r1 ``` ### Qwen(3๊ฐœ ๋ฌด๋ฃŒ ๋ชจ๋ธ) ```bash Dashboard โ†’ Connect Qwen โ†’ Device code authorization โ†’ Unlimited usage Models: qw/qwen3-coder-plus qw/qwen3-coder-flash ``` ### ํ‚ค๋กœ(ํด๋กœ๋“œ ํ”„๋ฆฌ) ```bash Dashboard โ†’ Connect Kiro โ†’ AWS Builder ID or Google/GitHub โ†’ Unlimited usage Models: kr/claude-sonnet-4.5 kr/claude-haiku-4.5 ```
๐ŸŽจ ์ฝค๋ณด ๋งŒ๋“ค๊ธฐ ### ์˜ˆ์‹œ 1: ๊ตฌ๋… ์ตœ๋Œ€ํ™” โ†’ ์ €๋ ดํ•œ ๋ฐฑ์—… ``` Dashboard โ†’ Combos โ†’ Create New Name: premium-coding Models: 1. cc/claude-opus-4-6 (Subscription primary) 2. glm/glm-4.7 (Cheap backup, $0.6/1M) 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M) Use in CLI: premium-coding ``` ### ์˜ˆ์‹œ 2: ๋ฌด๋ฃŒ ์ „์šฉ(๋น„์šฉ ์—†์Œ) ``` Name: free-combo Models: 1. gc/gemini-3-flash-preview (180K free/month) 2. if/kimi-k2-thinking (unlimited) 3. qw/qwen3-coder-plus (unlimited) Cost: $0 forever! ```
๐Ÿ”ง CLI ํ†ตํ•ฉ ### ์ปค์„œ IDE ``` Settings โ†’ Models โ†’ Advanced: OpenAI API Base URL: http://localhost:20128/v1 OpenAI API Key: [from OmniRoute dashboard] Model: cc/claude-opus-4-6 ``` ### ํด๋กœ๋“œ ์ฝ”๋“œ ์›ํด๋ฆญ ๊ตฌ์„ฑ์„ ์œ„ํ•ด ๋Œ€์‹œ๋ณด๋“œ์˜ **CLI ๋„๊ตฌ** ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ `~/.claude/settings.json`์„ ์ˆ˜๋™์œผ๋กœ ํŽธ์ง‘ํ•˜์„ธ์š”. ### ์ฝ”๋ฑ์Šค CLI ```bash export OPENAI_BASE_URL="http://localhost:20128" export OPENAI_API_KEY="your-omniroute-api-key" codex "your prompt" ``` ### ์˜คํ”ˆํด๋กœ **์˜ต์…˜ 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์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. IPv6 ํ™•์ธ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด `localhost` ๋Œ€์‹  `127.0.0.1`์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ### ํด๋ผ์ธ / ๊ณ„์† / RooCode ``` Settings โ†’ API Configuration: Provider: OpenAI Compatible Base URL: http://localhost:20128/v1 API Key: [from OmniRoute dashboard] Model: if/kimi-k2-thinking ```
--- ## ๐Ÿ“Š ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋ธ
์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๋ชจ๋ธ ๋ณด๊ธฐ **Claude ์ฝ”๋“œ(`cc/`)** - Pro/Max: - `cc/claude-opus-4-6` - `cc/claude-sonnet-4-5-20250929` - `cc/claude-haiku-4-5-20251001` **์ฝ”๋ฑ์Šค(`cx/`)** - ํ”Œ๋Ÿฌ์Šค/ํ”„๋กœ: - `cx/gpt-5.2-codex` - `cx/gpt-5.1-codex-max` **Gemini CLI(`gc/`)** - ๋ฌด๋ฃŒ: - `gc/gemini-3-flash-preview` - `gc/gemini-2.5-pro` **GitHub ๋ถ€์กฐ์ข…์‚ฌ(`gh/`)**: - `gh/gpt-5` - `gh/claude-4.5-sonnet` **NVIDIA NIM(`nvidia/`)** - ๋ฌด๋ฃŒ ํฌ๋ ˆ๋”ง: - `nvidia/llama-3.3-70b-instruct` - `nvidia/mistral-7b-instruct` - [build.nvidia.com](https://build.nvidia.com)์˜ 50๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ **GLM(`glm/`)** - $0.6/1M: - `glm/glm-4.7` **MiniMax(`minimax/`)** - $0.2/1M: - `minimax/MiniMax-M2.1` **iFlow(`if/`)** - ๋ฌด๋ฃŒ: - `if/kimi-k2-thinking` - `if/qwen3-coder-plus` - `if/deepseek-r1` - `if/glm-4.7` - `if/minimax-m2` **Qwen(`qw/`)** - ๋ฌด๋ฃŒ: - `qw/qwen3-coder-plus` - `qw/qwen3-coder-flash` **ํ‚ค๋กœ(`kr/`)** - ๋ฌด๋ฃŒ: - `kr/claude-sonnet-4.5` - `kr/claude-haiku-4.5` **OpenRouter(`or/`)** - 100๊ฐœ ์ด์ƒ์˜ ๋ชจ๋ธ: - `or/anthropic/claude-4-sonnet` - `or/google/gemini-2.5-pro` - [openrouter.ai/models](https://openrouter.ai/models)์˜ ๋ชจ๋“  ๋ชจ๋ธ
--- ## ๐Ÿงช ํ‰๊ฐ€(Evals) OmniRoute์—๋Š” ๊ณจ๋“  ์„ธํŠธ์— ๋Œ€ํ•ด LLM ์‘๋‹ต ํ’ˆ์งˆ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋‚ด์žฅ ํ‰๊ฐ€ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹œ๋ณด๋“œ์˜ **๋ถ„์„ โ†’ ํ‰๊ฐ€**๋ฅผ ํ†ตํ•ด ์•ก์„ธ์Šคํ•˜์„ธ์š”. ### ๋‚ด์žฅ ๊ณจ๋“  ์„ธํŠธ ์‚ฌ์ „ ๋กœ๋“œ๋œ "OmniRoute Golden Set"์—๋Š” ๋‹ค์Œ์„ ๋‹ค๋ฃจ๋Š” 10๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์‚ฌ๋ก€๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. - ์ธ์‚ฌ๋ง, ์ˆ˜ํ•™, ์ง€๋ฆฌ, ์ฝ”๋“œ ์ƒ์„ฑ - JSON ํ˜•์‹ ์ค€์ˆ˜, ๋ฒˆ์—ญ, ๋งˆํฌ๋‹ค์šด - ์•ˆ์ „ ๊ฑฐ๋ถ€(์œ ํ•ด ์ฝ˜ํ…์ธ ), ์นด์šดํŒ…, ๋ถ€์šธ ๋…ผ๋ฆฌ ### ํ‰๊ฐ€ ์ „๋žต | ์ „๋žต | ์„ค๋ช… | ์˜ˆ | | ---------- | -------------------------------------------------------------- | -------------------------------- | | `exact` | ์ถœ๋ ฅ์€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค | `"4"` | | `contains` | ์ถœ๋ ฅ์—๋Š” ํ•˜์œ„ ๋ฌธ์ž์—ด(๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์•ˆ ํ•จ)์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. | `"Paris"` | | `regex` | ์ถœ๋ ฅ์€ ์ •๊ทœ์‹ ํŒจํ„ด๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค | `"1.*2.*3"` | | `custom` | ์‚ฌ์šฉ์ž ์ •์˜ JS ํ•จ์ˆ˜๊ฐ€ true/false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. | `(output) => output.length > 10` | --- ## ๐Ÿ” OAuth em Servidor Remoto(์›๊ฒฉ OAuth ์„ค์ •) > **โš ๏ธ VPS/Docker/remotor์˜ OmniRoute๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ค‘์š”** ### OAuth์—์„œ Antigravity/Gemini CLI๋ฅผ ์›๊ฒฉ ์„œ๋น„์Šค๋กœ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? Os๋Š” **๋ฐ˜์ค‘๋ ฅ** ๋ฐ **Gemini CLI**๋ฅผ ์ธ์ฆํ•˜๊ธฐ ์œ„ํ•ด **Google OAuth 2.0**์„ ์ž…์ฆํ–ˆ์Šต๋‹ˆ๋‹ค. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** uma das URIs pre-cadastradas no Google Cloud Console do aplicativo. OAuth๋Š” OmniRoute์— ๋Œ€ํ•œ ์‹ ์šฉ ์ •๋ณด๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ **`localhost`**์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. Quando vocรช acessa o OmniRoute em um servidor remoto (์˜ˆ: `https://omniroute.meuservidor.com`), o Google rejeita autenticaรงรฃo com: ``` Error 400: redirect_uri_mismatch ``` ### ํ•ด๊ฒฐ์ฑ…: ๊ฐœ์ธ ์ •๋ณด ๋ณดํ˜ธ OAuth ๊ตฌ์„ฑ Vocรช precisa criar um **OAuth 2.0 Client ID** no Google Cloud Console com a URI do seu servidor. #### ํŒŒ์˜ ์•„ ํŒŒ์†Œ **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 ํด๋ผ์ด์–ธํŠธ ID** - em ํด๋ฆญ **"+ ์ž๊ฒฉ ์ฆ๋ช… ๋งŒ๋“ค๊ธฐ"** โ†’ **"OAuth ํด๋ผ์ด์–ธํŠธ ID"** - ์ ์šฉ ๋ถ„์•ผ: **"์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜"** - ์ด๋ฆ„: escolha qualquer nome (์˜ˆ: `OmniRoute Remote`) **3. ์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI๋กœ์„œ์˜ Adicione** ์•„๋‹ˆ์š” **"์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI"**, ์ถ”๊ฐ€: ``` https://seu-servidor.com/callback ``` > `seu-servidor.com` pelo domรญnio ๋˜๋Š” IP do seu servidor๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค(ํ•„์š”ํ•œ ํฌํŠธ ํฌํ•จ, ์˜ˆ: `http://45.33.32.156:20128/callback`). **4. ์‚ฌ๋ณธ์„ ์ž๊ฒฉ ์ฆ๋ช…์œผ๋กœ ์ €์žฅ** Apรณs criar, o Google morerรก o **ํด๋ผ์ด์–ธํŠธ ID** e o **ํด๋ผ์ด์–ธํŠธ ๋น„๋ฐ€๋ฒˆํ˜ธ**. **5. ๋‹ค์–‘ํ•œ ์ฃผ๋ณ€ ํ™˜๊ฒฝ์œผ๋กœ ๊ตฌ์„ฑ** `.env`(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 ๋˜๋Š” OmniRoute** ```bash # Se usando npm: npm run dev # Se usando Docker: docker restart omniroute ``` **7. Tente conectar novamente** ๋Œ€์‹œ๋ณด๋“œ โ†’ ๊ณต๊ธ‰์ž โ†’ Antigravity(๋˜๋Š” Gemini CLI) โ†’ OAuth Agora๋Š” `https://seu-servidor.com/callback` ๋ฐ ์ž๋™ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ Google ๋ฆฌ๋””๋ ‰์…˜์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. --- ### ์ž„์‹œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•(sem configurar credenciais prรณprias) Se nรฃo quiser criar credenciais prรณprias agora, ainda รฉ possรญvel usar o fluxo **manual de URL**: 1. OmniRoute๋Š” Google ์ž๋™ ์ƒ์„ฑ URL์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 2. Apรณs vocรช autorizar, o Google tentarรก redirectionar para `localhost` (que falha no servidor remoto) 3. **URL ๋ณต์‚ฌ ์™„๋ฃŒ** da barra de endereรงo do seu browser (mesmo que a pรกgina nรฃo carregue) 4. Cole essa URL no campo que aparece no modal de conexรฃo do OmniRoute 5. Clique em **"์—ฐ๊ฒฐ"** > ์ด ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ URL์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฆฌ๋””๋ ‰์…˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. --- ## ๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ
๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€์ด๋“œ๋ฅผ ํ™•์žฅํ•˜๋ ค๋ฉด ํด๋ฆญํ•˜์„ธ์š” **"์–ธ์–ด ๋ชจ๋ธ์ด ๋ฉ”์‹œ์ง€๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค"** - ๊ณต๊ธ‰์ž ํ• ๋‹น๋Ÿ‰ ์†Œ์ง„ โ†’ ๋Œ€์‹œ๋ณด๋“œ ํ• ๋‹น๋Ÿ‰ ์ถ”์ ๊ธฐ ํ™•์ธ - ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ฝค๋ณด ํด๋ฐฑ์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋” ์ €๋ ดํ•œ ๊ณ„์ธต์œผ๋กœ ์ „ํ™˜ํ•˜์„ธ์š”. **๋น„์œจ ์ œํ•œ** - ๊ตฌ๋… ํ• ๋‹น๋Ÿ‰ ์ดˆ๊ณผ โ†’ GLM/MiniMax๋กœ ๋Œ€์ฒด - ์ฝค๋ณด ์ถ”๊ฐ€: `cc/claude-opus-4-6 โ†’ glm/glm-4.7 โ†’ if/kimi-k2-thinking` **OAuth ํ† ํฐ์ด ๋งŒ๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค** - OmniRoute์— ์˜ํ•ด ์ž๋™ ์ƒˆ๋กœ๊ณ ์นจ - ๋ฌธ์ œ๊ฐ€ ์ง€์†๋˜๋Š” ๊ฒฝ์šฐ: Dashboard โ†’ Provider โ†’ Reconnect **๋†’์€ ๋น„์šฉ** - ๋Œ€์‹œ๋ณด๋“œ โ†’ ๋น„์šฉ์—์„œ ์‚ฌ์šฉ ํ†ต๊ณ„๋ฅผ ํ™•์ธํ•˜์„ธ์š”. - ๊ธฐ๋ณธ ๋ชจ๋ธ์„ GLM/MiniMax๋กœ ์ „ํ™˜ - ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ž‘์—…์—๋Š” ๋ฌด๋ฃŒ ๊ณ„์ธต(Gemini CLI, iFlow)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. **๋Œ€์‹œ๋ณด๋“œ๊ฐ€ ์ž˜๋ชป๋œ ํฌํŠธ์—์„œ ์—ด๋ฆฝ๋‹ˆ๋‹ค** - `PORT=20128` ๋ฐ `NEXT_PUBLIC_BASE_URL=http://localhost:20128` ์„ค์ • **ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™” ์˜ค๋ฅ˜** - `BASE_URL`์ด ์‹คํ–‰ ์ค‘์ธ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. - `CLOUD_URL`์ด ์˜ˆ์ƒ ํด๋ผ์šฐ๋“œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. - `NEXT_PUBLIC_*` ๊ฐ’์„ ์„œ๋ฒ„์ธก ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋„๋ก ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. **์ฒซ ๋ฒˆ์งธ ๋กœ๊ทธ์ธ์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค** - `.env`์—์„œ `INITIAL_PASSWORD`์„ ํ™•์ธํ•˜์„ธ์š”. - ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋Œ€์ฒด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” `123456`์ž…๋‹ˆ๋‹ค. **์š”์ฒญ ๋กœ๊ทธ ์—†์Œ** - `.env`์— `ENABLE_REQUEST_LOGS=true`์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. **OpenAI ํ˜ธํ™˜ ๊ณต๊ธ‰์ž์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ์—์„œ "์ž˜๋ชป๋จ"์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค** - ๋งŽ์€ ๊ณต๊ธ‰์ž๊ฐ€ `/models` ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋…ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - OmniRoute v1.0.6+์—๋Š” ์ฑ„ํŒ… ์™„๋ฃŒ๋ฅผ ํ†ตํ•œ ๋Œ€์ฒด ๊ฒ€์ฆ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. - ๊ธฐ๋ณธ URL์— `/v1` ์ ‘๋ฏธ์‚ฌ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.
--- ## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ - **๋Ÿฐํƒ€์ž„**: Node.js 18โ€“22 LTS(โš ๏ธ Node.js 24+๋Š” **์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค** โ€” `better-sqlite3` ๋„ค์ดํ‹ฐ๋ธŒ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ํ˜ธํ™˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค) - **์–ธ์–ด**: TypeScript 5.9 โ€” `src/` ๋ฐ `open-sse/`์—์„œ **100% TypeScript**(v1.0.6) - **ํ”„๋ ˆ์ž„์›Œํฌ**: Next.js 16 + React 19 + Tailwind CSS 4 - **๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค**: LowDB(JSON) + SQLite(๋„๋ฉ”์ธ ์ƒํƒœ + ํ”„๋ก์‹œ ๋กœ๊ทธ) - **์ŠคํŠธ๋ฆฌ๋ฐ**: ์„œ๋ฒ„์—์„œ ๋ณด๋‚ธ ์ด๋ฒคํŠธ(SSE) - **์ธ์ฆ**: OAuth 2.0(PKCE) + JWT + API ํ‚ค - **ํ…Œ์ŠคํŠธ**: Node.js ํ…Œ์ŠคํŠธ ์‹คํ–‰๊ธฐ(368๊ฐœ ์ด์ƒ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ) - **CI/CD**: GitHub Actions(์ž๋™ npm ๊ฒŒ์‹œ + ์ถœ์‹œ ์‹œ Docker Hub) - **์›น์‚ฌ์ดํŠธ**: [omniroute.online](https://omniroute.online) - **ํŒจํ‚ค์ง€**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute) - **๋„์ปค**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute) - **๋ณต์›๋ ฅ**: ํšŒ๋กœ ์ฐจ๋‹จ๊ธฐ, ์ง€์ˆ˜ ๋ฐฑ์˜คํ”„, ์ฒœ๋‘ฅ ๋ฐฉ์ง€ ๋ฌด๋ฆฌ, TLS ์Šคํ‘ธํ•‘ --- ## ๐Ÿ“– ๋ฌธ์„œ | ๋ฌธ์„œ | ์„ค๋ช… | | -------------------------------------------- | ------------------------------------------ | | [User Guide](docs/USER_GUIDE.md) | ๊ณต๊ธ‰์ž, ์ฝค๋ณด, CLI ํ†ตํ•ฉ, ๋ฐฐํฌ | | [API Reference](docs/API_REFERENCE.md) | ์˜ˆ์ œ๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ์—”๋“œํฌ์ธํŠธ | | [Troubleshooting](docs/TROUBLESHOOTING.md) | ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• | | [Architecture](docs/ARCHITECTURE.md) | ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ๋‚ด๋ถ€ | | [Contributing](CONTRIBUTING.md) | ๊ฐœ๋ฐœ ์„ค์ • ๋ฐ ์ง€์นจ | | [OpenAPI Spec](docs/openapi.yaml) | OpenAPI 3.0 ์‚ฌ์–‘ | | [Security Policy](SECURITY.md) | ์ทจ์•ฝ์  ๋ณด๊ณ  ๋ฐ ๋ณด์•ˆ ๊ด€ํ–‰ | | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | ์ „์ฒด ๊ฐ€์ด๋“œ: VM + nginx + Cloudflare ์„ค์ • | | [Features Gallery](docs/FEATURES.md) | ์Šคํฌ๋ฆฐ์ƒท์„ ํฌํ•จํ•œ ์‹œ๊ฐ์  ๋Œ€์‹œ๋ณด๋“œ ๋‘˜๋Ÿฌ๋ณด๊ธฐ | ### ๐Ÿ“ธ ๋Œ€์‹œ๋ณด๋“œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ
๋Œ€์‹œ๋ณด๋“œ ์Šคํฌ๋ฆฐ์ƒท์„ ๋ณด๋ ค๋ฉด ํด๋ฆญํ•˜์„ธ์š”. | ํŽ˜์ด์ง€ | ์Šคํฌ๋ฆฐ์ƒท | | -------------- | ------------------------------------------------- | | **๊ณต๊ธ‰์ž** | ![Providers](docs/screenshots/01-providers.png) | | **์ฝค๋ณด** | ![Combos](docs/screenshots/02-combos.png) | | **๋ถ„์„** | ![Analytics](docs/screenshots/03-analytics.png) | | **๊ฑด๊ฐ•** | ![Health](docs/screenshots/04-health.png) | | **๋ฒˆ์—ญ๊ฐ€** | ![Translator](docs/screenshots/05-translator.png) | | **์„ค์ •** | ![Settings](docs/screenshots/06-settings.png) | | **CLI ๋„๊ตฌ** | ![CLI Tools](docs/screenshots/07-cli-tools.png) | | **์‚ฌ์šฉ ๋กœ๊ทธ** | ![Usage](docs/screenshots/08-usage.png) | | **์—”๋“œํฌ์ธํŠธ** | ![Endpoint](docs/screenshots/09-endpoint.png) |
--- ## ๐Ÿ—บ๏ธ ๋กœ๋“œ๋งต OmniRoute์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ ๋‹จ๊ณ„์— ๊ฑธ์ณ **210๊ฐœ ์ด์ƒ์˜ ๊ธฐ๋Šฅ์ด ๊ณ„ํš๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค**. ์ฃผ์š” ์˜์—ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. | ์นดํ…Œ๊ณ ๋ฆฌ | ๊ณ„ํš๋œ ๊ธฐ๋Šฅ | ํ•˜์ด๋ผ์ดํŠธ | | --------------------------- | ----------- | ------------------------------------------------------------------------------ | | ๐Ÿง  **๋ผ์šฐํŒ… ๋ฐ ์ธํ…”๋ฆฌ์ „์Šค** | 25์„ธ ์ด์ƒ | ์ตœ์ € ๋Œ€๊ธฐ ์‹œ๊ฐ„ ๋ผ์šฐํŒ…, ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…, ์‹คํ–‰ ์ „ ํ• ๋‹น๋Ÿ‰, P2C ๊ณ„์ • ์„ ํƒ | | ๐Ÿ”’ **๋ณด์•ˆ ๋ฐ ๊ทœ์ • ์ค€์ˆ˜** | 20์„ธ ์ด์ƒ | SSRF ๊ฐ•ํ™”, ์ž๊ฒฉ ์ฆ๋ช… ํด๋กœํ‚น, ์—”๋“œํฌ์ธํŠธ๋‹น ์†๋„ ์ œํ•œ, ๊ด€๋ฆฌ ํ‚ค ๋ฒ”์œ„ ์ง€์ • | | ๐Ÿ“Š **๊ด€์ธก์„ฑ** | 15์„ธ ์ด์ƒ | OpenTelemetry ํ†ตํ•ฉ, ์‹ค์‹œ๊ฐ„ ํ• ๋‹น๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง, ๋ชจ๋ธ๋ณ„ ๋น„์šฉ ์ถ”์  | | ๐Ÿ”„ **๊ณต๊ธ‰์ž ํ†ตํ•ฉ** | 20์„ธ ์ด์ƒ | ๋™์  ๋ชจ๋ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ, ๊ณต๊ธ‰์ž ์ฟจ๋‹ค์šด, ๋‹ค์ค‘ ๊ณ„์ • Codex, Copilot ํ• ๋‹น๋Ÿ‰ ๊ตฌ๋ฌธ ๋ถ„์„ | | โšก **์„ฑ๋Šฅ** | 15์„ธ ์ด์ƒ | ๋“€์–ผ ์บ์‹œ ๋ ˆ์ด์–ด, ํ”„๋กฌํ”„ํŠธ ์บ์‹œ, ์‘๋‹ต ์บ์‹œ, ์ŠคํŠธ๋ฆฌ๋ฐ Keepalive, ๋ฐฐ์น˜ API | | ๐ŸŒ **์ƒํƒœ๊ณ„** | 10์„ธ ์ด์ƒ | WebSocket API, ๊ตฌ์„ฑ ํ•ซ ๋ฆฌ๋กœ๋“œ, ๋ถ„์‚ฐ ๊ตฌ์„ฑ ์ €์žฅ์†Œ, ์ƒ์šฉ ๋ชจ๋“œ | ### ๐Ÿ”œ ์ถœ์‹œ ์˜ˆ์ • - ๐Ÿ”— **OpenCode ํ†ตํ•ฉ** โ€” OpenCode AI ์ฝ”๋”ฉ IDE์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ๊ณต๊ธ‰์ž ์ง€์› - ๐Ÿ”— **TRAE ํ†ตํ•ฉ** โ€” TRAE AI ๊ฐœ๋ฐœ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ์ง€์› - ๐Ÿ“ฆ **Batch API** โ€” ๋Œ€๋Ÿ‰ ์š”์ฒญ์— ๋Œ€ํ•œ ๋น„๋™๊ธฐ์‹ ์ผ๊ด„ ์ฒ˜๋ฆฌ - ๐ŸŽฏ **ํƒœ๊ทธ ๊ธฐ๋ฐ˜ ๋ผ์šฐํŒ…** โ€” ์‚ฌ์šฉ์ž ์ •์˜ ํƒœ๊ทธ ๋ฐ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์š”์ฒญ ๋ผ์šฐํŒ… - ๐Ÿ’ฐ **์ตœ์ € ๋น„์šฉ ์ „๋žต** โ€” ๊ฐ€์žฅ ์ €๋ ดํ•œ ์ œ๊ณต์—…์ฒด๋ฅผ ์ž๋™์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. > ๐Ÿ“ [**OMNI_TOKEN_147**](docs/new-features/)์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ „์ฒด ๊ธฐ๋Šฅ ์‚ฌ์–‘(217๊ฐœ ์„ธ๋ถ€ ์‚ฌ์–‘) --- ## ๐Ÿ“ง ์ง€์› > ๐Ÿ’ฌ **์ปค๋ฎค๋‹ˆํ‹ฐ์— ๊ฐ€์ž…ํ•˜์„ธ์š”!** [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) - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) - **์›๋ž˜ ํ”„๋กœ์ ํŠธ**: [9router by decolua](https://github.com/decolua/9router) --- ## ๐Ÿ‘ฅ ๊ธฐ์—ฌ์ž [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors) ### ๊ธฐ์—ฌ ๋ฐฉ๋ฒ• 1. ์ €์žฅ์†Œ ํฌํฌ 2. ๊ธฐ๋Šฅ ๋ถ„๊ธฐ ์ƒ์„ฑ(`git checkout -b feature/amazing-feature`) 3. ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค(`git commit -m 'Add amazing feature'`). 4. ๋ธŒ๋žœ์น˜(`git push origin feature/amazing-feature`)๋กœ ํ‘ธ์‹œ 5. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ ์—ด๊ธฐ ์ž์„ธํ•œ ์ง€์นจ์€ [CONTRIBUTING.md](CONTRIBUTING.md)์„ ์ฐธ์กฐํ•˜์„ธ์š”. ### ์ƒˆ ๋ฒ„์ „ ์ถœ์‹œ ```bash # Create a release โ€” npm publish happens automatically gh release create v1.0.6 --title "v1.0.6" --generate-notes ``` --- ## ๐Ÿ“Š ์Šคํƒ€ ํžˆ์Šคํ† ๋ฆฌ Star History Chart --- ## ๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง์”€ ์ด ํฌํฌ์— ์˜๊ฐ์„ ์ค€ ์›๋ณธ ํ”„๋กœ์ ํŠธ์ธ **[decolua](https://github.com/decolua)**์˜ **[9router](https://github.com/decolua/9router)**์—๊ฒŒ ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. OmniRoute๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ, ๋‹ค์ค‘ ๋ชจ๋“œ API ๋ฐ ์ „์ฒด TypeScript ์žฌ์ž‘์„ฑ์„ ํ†ตํ•ด ๋†€๋ผ์šด ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค. ์ด JavaScript ํฌํŠธ์— ์˜๊ฐ์„ ์ค€ ์ตœ์ดˆ์˜ Go ๊ตฌํ˜„์ธ **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**์—๊ฒŒ ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. --- ## ๐Ÿ“„ ๋ผ์ด์„ผ์Šค MIT ๋ผ์ด์„ ์Šค - ์ž์„ธํ•œ ๋‚ด์šฉ์€ [LICENSE](LICENSE)์„ ์ฐธ์กฐํ•˜์„ธ์š”. --- --- ## ๐Ÿ‡ง๐Ÿ‡ท OmniRoute โ€” IA ๋ฌด๋ฃŒ ๊ฒŒ์ดํŠธ์›จ์ด ### Nunca pare de codar. **IA ๋ฌด๋ฃŒ ๋ชจ๋ธ ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜**๊ฐ€ ์ž๋™ ๋Œ€์ฒด ๊ธฐ๋Šฅ์œผ๋กœ ์ง€๋Šฅํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. _Seu ํ”„๋ก์‹œ ๋ฒ”์šฉ API โ€” ์Œ ์—”๋“œํฌ์ธํŠธ, 36๊ฐœ ์ด์ƒ์˜ Prodoores, ๊ฐ€๋™ ์ค‘์ง€ ์‹œ๊ฐ„ ์—†์Œ._ ### ๐ŸŒ ๊ตญ์ œํ™”(i18n) O ๋Œ€์‹œ๋ณด๋“œ๋Š” OmniRoute๋ฅผ ์ง€์›ํ•˜์—ฌ **๋‹ค์–‘ํ•œ ๊ด€์šฉ์–ด**๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๋งŒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ: | ๊ด€์šฉ๊ตฌ | ์ฝ”๋””๊ณ  | ์ƒํƒœ | | --------------------- | ------- | ------- | | ๐Ÿ‡บ๐Ÿ‡ธ ์˜์–ด | `en` | โœ… ์™„๋ฃŒ | | ๐Ÿ‡ง๐Ÿ‡ท ํฌ๋ฅดํˆฌ๊ฐˆ์–ด(๋ธŒ๋ผ์งˆ) | `pt-BR` | โœ… ์™„๋ฃŒ | **Para trocar o idioma:** Clique no seletor de idioma(๐Ÿ‡บ๐Ÿ‡ธ EN) ํ—ค๋” ์—†์Œ ๋Œ€์‹œ๋ณด๋“œ โ†’ selecione o idioma desejado. **์ถ”๊ฐ€์ ์ธ ํ‘œํ˜„:** 1. `src/i18n/messages/{codigo}.json` ์†Œ๋ฆฌ ์ง€๋ฅด๊ธฐ `en.json` ๊ธฐ๋ฐ˜์œผ๋กœ 2. `src/i18n/config.ts` โ†’ `LOCALES` e `LANGUAGES` ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. 3. Reinicie o servidor ### โšก ์ด๋‹ˆ์‹œ์˜ค ๋ผํ”ผ๋„ ```bash # Instalar via npm npx omniroute@latest # Ou rodar do cรณdigo-fonte cp .env.example .env npm install PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev ``` ### ๐Ÿณ ๋„์ปค ```bash docker run -d --name omniroute -p 20128:20128 diegosouzapw/omniroute:latest ``` ### ๐Ÿ”‘ Funcionalidades Principais - **36๊ฐœ ์ด์ƒ์˜ IA ์ธ์ฆ** โ€” Claude, GPT, Gemini, Llama, Qwen, DeepSeek ๋“ฑ - **์ง€๋Šฅํ˜• ํšŒ์ „** โ€” ์˜ˆ๋น„ ์ž๋™ ๋Œ€์ฒด - **Traduรงรฃo de formato** โ€” OpenAI โ‡” Claude โ‡” Gemini ์ž๋™ ๋ฒˆ์—ญ - **๋‹ค์ค‘ ์—ฐ๊ฒฐ** โ€” ์ง€๋Šฅ์ ์ธ ์„ ํƒ์„ ํ†ตํ•ด ์ž…์ฆ๋œ ์—ฌ๋Ÿฌ ์ฝ˜ํƒ€์Šค - **์บ์‹œ ์˜๋ฏธ** โ€” Reduz custos and latรชncia - **OAuth ์ž๋™** โ€” ํ† ํฐ ์ž๋™ ์—…๋ฐ์ดํŠธ - **๋งž์ถคํ˜• ์ฝค๋ณด** โ€” 6๊ฐ€์ง€ ๊ธฐ๋ณธ ์ „๋žต - **๋Œ€์‹œ๋ณด๋“œ ์™„๋ฃŒ** โ€” ๋ชจ๋‹ˆํ„ฐ๋ง, ๋กœ๊ทธ, ๋ถ„์„, ๊ตฌ์„ฑ - **CLI ๋„๊ตฌ** โ€” Claude Code, Codex, Cursor, Cline com um clique ๊ตฌ์„ฑ - **100% TypeScript** โ€” Cรณdigo limpo etipado ### ๐Ÿ“– ๋ฌธ์„œ | ๋„ํ๋ฉ˜ํ†  | ์„ค๋ช… | | ----------------------------------------------- | ------------------------------------ | | [Guia do Usuรกrio](docs/USER_GUIDE.md) | Provedore, ์ฝค๋ณด, CLI, ๋ฐฐํฌ | | [Referรชncia da API](docs/API_REFERENCE.md) | ์˜ˆ๋ฅผ ๋“ค์–ด Todos OS ์—”๋“œํฌ์ธํŠธ | | [Soluรงรฃo de Problemas](docs/TROUBLESHOOTING.md) | ๋ฌธ์ œ ๋ฐ ์†”๋ฃจ์…˜ ๋ฌธ์ œ | | [Arquitetura](docs/ARCHITECTURE.md) | Arquitetura e internos do sistema | | [Contribuiรงรฃo](CONTRIBUTING.md) | ์ž์œ  ์˜์ง€ ์„ค์ • ์ง€์นจ | | [Deploy em VM](docs/VM_DEPLOYMENT_GUIDE.md) | ์™„์ „ํ•œ ๊ธฐ๋Šฅ: VM + nginx + Cloudflare | ### ๐Ÿ“ง ์ง€์› > ๐Ÿ’ฌ **๊ณต๋™์ฒด์— ์ฐธ์—ฌํ•˜์„ธ์š”!** [Grupo WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) โ€” Tire dรบvidas, compartilhe dicas e fique atualizado. - **์›น์‚ฌ์ดํŠธ**: [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) ---
์—ฐ์ค‘๋ฌดํœด์„ ์ฝ”๋”ฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•ด โค๏ธ์œผ๋กœ ๊ตฌ์ถ•๋จ
omniroute.online