# README (ํ๊ตญ์ด)
๐ **Languages:** ๐บ๐ธ [English](../../../README.md) ยท ๐ช๐น [am](../am/README.md) ยท ๐ธ๐ฆ [ar](../ar/README.md) ยท ๐ฆ๐ฟ [az](../az/README.md) ยท ๐ง๐ฌ [bg](../bg/README.md) ยท ๐ง๐ฉ [bn](../bn/README.md) ยท ๐ง๐ฆ [bs](../bs/README.md) ยท ๐จ๐ฟ [cs](../cs/README.md) ยท ๐ฉ๐ฐ [da](../da/README.md) ยท ๐ฉ๐ช [de](../de/README.md) ยท ๐ฌ๐ท [el](../el/README.md) ยท ๐ช๐ธ [es](../es/README.md) ยท ๐ช๐ช [et](../et/README.md) ยท ๐ฎ๐ท [fa](../fa/README.md) ยท ๐ซ๐ฎ [fi](../fi/README.md) ยท ๐ซ๐ท [fr](../fr/README.md) ยท ๐ฎ๐ช [ga](../ga/README.md) ยท ๐ฎ๐ณ [gu](../gu/README.md) ยท ๐ณ๐ฌ [ha](../ha/README.md) ยท ๐ฎ๐ฑ [he](../he/README.md) ยท ๐ฎ๐ณ [hi](../hi/README.md) ยท ๐ญ๐ท [hr](../hr/README.md) ยท ๐ญ๐บ [hu](../hu/README.md) ยท ๐ฆ๐ฒ [hy](../hy/README.md) ยท ๐ฎ๐ฉ [id](../id/README.md) ยท ๐ณ๐ฌ [ig](../ig/README.md) ยท ๐ฎ๐น [it](../it/README.md) ยท ๐ฏ๐ต [ja](../ja/README.md) ยท ๐ฌ๐ช [ka](../ka/README.md) ยท ๐ฐ๐ญ [km](../km/README.md) ยท ๐ฎ๐ณ [kn](../kn/README.md) ยท ๐ฑ๐น [lt](../lt/README.md) ยท ๐ฑ๐ป [lv](../lv/README.md) ยท ๐ฎ๐ณ [ml](../ml/README.md) ยท ๐ฎ๐ณ [mr](../mr/README.md) ยท ๐ฒ๐พ [ms](../ms/README.md) ยท ๐ฒ๐น [mt](../mt/README.md) ยท ๐ฒ๐ฒ [my](../my/README.md) ยท ๐ณ๐ต [ne](../ne/README.md) ยท ๐ณ๐ฑ [nl](../nl/README.md) ยท ๐ณ๐ด [no](../no/README.md) ยท ๐ฎ๐ณ [or](../or/README.md) ยท ๐ฎ๐ณ [pa](../pa/README.md) ยท ๐ต๐ญ [phi](../phi/README.md) ยท ๐ต๐ฑ [pl](../pl/README.md) ยท ๐ต๐น [pt](../pt/README.md) ยท ๐ง๐ท [pt-BR](../pt-BR/README.md) ยท ๐ท๐ด [ro](../ro/README.md) ยท ๐ท๐บ [ru](../ru/README.md) ยท ๐ฑ๐ฐ [si](../si/README.md) ยท ๐ธ๐ฐ [sk](../sk/README.md) ยท ๐ธ๐ฎ [sl](../sl/README.md) ยท ๐ท๐ธ [sr](../sr/README.md) ยท ๐ธ๐ช [sv](../sv/README.md) ยท ๐ฐ๐ช [sw](../sw/README.md) ยท ๐ฎ๐ณ [ta](../ta/README.md) ยท ๐ฎ๐ณ [te](../te/README.md) ยท ๐น๐ญ [th](../th/README.md) ยท ๐น๐ท [tr](../tr/README.md) ยท ๐บ๐ฆ [uk-UA](../uk-UA/README.md) ยท ๐ต๐ฐ [ur](../ur/README.md) ยท ๐บ๐ฟ [uz](../uz/README.md) ยท ๐ป๐ณ [vi](../vi/README.md) ยท ๐ณ๐ฌ [yo](../yo/README.md) ยท ๐จ๐ณ [zh-CN](../zh-CN/README.md) ยท ๐น๐ผ [zh-TW](../zh-TW/README.md)
---
# ๐ OmniRoute โ ๋ฌด๋ฃ AI ๊ฒ์ดํธ์จ์ด
**[Diego Souza](https://github.com/diegosouzapw)๊ฐ ์ ์**
## ๐ฐ ํ์ฌ ๋ฌด๋ฃ ์๊ธ์ ์ ์ฒด์์ ์ ~1.62B ํ ํฐ
> **์ฌ์ฉ์ ๋ณธ์ธ์ ํ๋ก๋ฐ์ด๋ ๊ณ์ ์ ์ฌ์ฉํ์ธ์.** ์ด๋ ๊ฐ๊ฐ ๋ณ๋๋ก ์ด์ฉ ์๊ฒฉ์ด ์๋ ํ์ฌ ๋ฌด๋ฃ ์๊ธ์ ๋ฅผ ํฉ์ฐํ ์ถ์ ์น์ด๋ฉฐ, OmniRoute๊ฐ ์ ๊ณตํ๋ ํ ํฐ ์ง๊ธ๋์ด ์๋๋๋ค. ๊ฐ์
ํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ธ์ฆ ์ ๋ณด๋ฅผ ๋ฐ๊ธ๋ฐ์ ๋ค์, ์ฌ์ฉํ ์ ์๋ ํ๋ก๋ฐ์ด๋๋ฅผ ์ฐ๊ฒฐํ์ธ์. ๊ฐ ํ๋ก๋ฐ์ด๋๊ฐ ์์ฒด ํ๋, ์ด์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ๋ฐ ์ฝ๊ด์ ๊ด๋ฆฌํฉ๋๋ค.
>
> ๋ฌด๋ฃ ์๊ธ์ ๋ฅผ ์ง์ ์กฐํฉํ๋ ์ผ์ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค โ ์์ญ ๊ฐ์ SDK, ์์ญ ๊ฐ์ ์์ฒญ ์ ํ, ๊ทธ๋ฆฌ๊ณ ์ค์ ๋ก ์ผ๋ง๋ ์ฌ์ฉํ ์ ์๋์ง ์ ์ ์์ต๋๋ค. OmniRoute๋ **34๊ฐ์ ๋ฐ๋ณต ํ ํค์ ๊ฑธ์ณ 465๊ฐ์ ๋ฌด๋ฃ ์๊ธ์ ํญ๋ชฉ์ ๋ชฉ๋กํ**ํ๊ณ , ๊ณต์ ํ์ ์ค๋ณต ์ ๊ฑฐํ ๋ค **๊ณต๊ฐ๋ ์์ ์๊ฐ ์์ฐ์ด ์๋ 17๊ฐ ํ๊ณผ ๋ชจ๋ธ๋ณ Groq ํ๋ 5๊ฐ**๋ฅผ ๊ธฐ์ค์ผ๋ก ํ ํฐ ์ด๋์ ๊ณ์ฐํฉ๋๋ค. ์ง์ญ ์ ์ ํ์ธ ํ์๋ง ํ์ฑํ๋๋ ํ ๋น๋(ํ์ฌ: ModelScope)์ ๋ณ๋๋ก ํ์๋๋ฉฐ, ์ง์ญ ์ ์ ํ์ธ ํ ์ถ๊ฐ๋๋ ์ฝ +6M์ ํค๋๋ผ์ธ์ ํฉ์ฐ๋์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ๋ ๋์๋ณด๋(`/dashboard/free-tiers`)์์ ๊ณ์ ํ์ธํ ์ ์์ต๋๋ค.
> ์ค์๊ฐ `/dashboard/free-tiers` ํ์ด์ง์ ์ ๋๋ฉ์ด์
์์ฝ์
๋๋ค. ์ ์ฒด ๋ฐฉ๋ฒ๋ก (ํ ์ค๋ณต ์ ๊ฑฐ, ํฌ๋ ๋ง ๋ฑ๊ธ, ํ๋ก๋ฐ์ด๋ ์ฝ๊ด): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> ์ด ์์น๋ 2์ฃผ๋ง๋ค ์ค์๊ฐ ์นดํ๋ก๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ค์ ๊ฐ์ฌ๋๋ฉฐ **์๋ฐฉํฅ์ผ๋ก ๋ณ๋ํฉ๋๋ค** โ ํ๋ก๋ฐ์ด๋๊ฐ ๋ฌด๋ฃ ์๊ธ์ ๋ฅผ ์ข
๋ฃํ๋ฉด ์ซ์๊ฐ ๊ฐ์ํ๊ณ , ์๋ก์ด ํ๋ก๋ฐ์ด๋๊ฐ ์ถ๊ฐ๋๋ฉด ์ฆ๊ฐํฉ๋๋ค. ์นดํ๋ก๊ทธ๊ฐ ์ค์ ๋ก ๊ณ์ฐํ ๊ฐ์ ๊ฒ์ํ๋ฉฐ, ๋ฐ์ฌ๋ฆผํด ์ฌ๋ฆฐ ์ต์์ ๊ฒฝ์ฐ๋ฅผ ๊ฒ์ํ์ง ์์ต๋๋ค.
OMNIROUTE๊ฐ ๋น์ฉ์ ์ ์ฝํ๊ณ ์์
์ ๋ ์ฝ๊ฒ ๋ง๋๋ ๋ฐ ๋์์ด ๋์๋ค๋ฉด ์ ์ฅ์์ โญ๋ฅผ ๋๋ฌ ์ฃผ์ธ์.
[](https://github.com/diegosouzapw/OmniRoute)

[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### ๐ฌ ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ธ์
**๐ ๋ฉ์ธํ
์ด๋๋ฅผ ํ๋ก์ฐํ์ธ์ โ ์๋ก์ด ํ๋ก๋ฐ์ด๋, ๋ฆด๋ฆฌ์ค ๋ฐ ํ์ ๊ฐ์ฅ ๋จผ์ ๋ฐ์๋ณด์ธ์:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**์ง๋ฌธ, ํ๋ก๋ฐ์ด๋ ํ, ๋ก๋๋งต ๋ฐ ์ง์ โ [Discord](https://discord.gg/U47eFqAXCn) ยท [Telegram](https://t.me/omnirouteOficial) ยท WhatsApp [๐ ๊ธ๋ก๋ฒ](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [๐ง๐ท ๋ธ๋ผ์ง](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [ํฌํธ](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## ๐ ๊ฒ์ดํธ์จ์ด๋ ๊ณ์ ์ฑ์ฅํ๊ณ ์์ต๋๋ค
| | v3.8.50 | **v3.8.51** | `v3.8.54+` |
| ----------------------- | :-----------------------: | :---------: | :-------------------: |
| ๐ ์ ๊ณต์
์ฒด | 352 | **358** | 388 |
| ๐ง ๊ณ ์ ์ฑํ
๋ชจ๋ธ ID | 1320 | **1374** | 1491 |
| ๐ผ๏ธ ๋ชจ๋ฌ๋ฆฌํฐ ๋ธ๋ฆฌ์ง | ๐ ๋น์ + ์ค๋์ค + ๋น๋์ค | โ | โ |
| ๐ก Radar ๋ฌด๋ฃ ์นดํ๋ก๊ทธ | ๐ ์ตํธ์ธ | โ | โ |
| โ๏ธ ํ ๋น๋ ์ธ์ ์ค์ผ์ค๋ง | ๐ Quota-Share | โ | โ |
| ๐ ํ ๋น๋ ์๊ฒฉ ์ธก์ | ๐ ์ค์๊ฐ | โ | โ |
| ๐งฐ ํค๋๋ฆฌ์ค ๋ชจ๋ | โ | โ | ๐ `serve --headless` |
| ๐ค๏ธ LTS ๋ ์ผ ์ธํ๋ผ | โ | โ | ๐ ๋ฆด๋ฆฌ์ค ์ฑ๋ |
| ๐ ๋ชจ๋ธ ๊ฒ์ API | โ | โ | ๐ `/v1/models/query` |
**โ [๋ก๋๋งต](ROADMAP.md) โ `v3.9.0 LTS`๋ฅผ ํฅํด ๋ ์ผ์ ๋ฌ๋ฆฝ๋๋ค**
## ๐งฉ ์ฌ์ฉ ๊ฐ๋ฅ
[](https://www.npmjs.com/package/omniroute)

[](https://hub.docker.com/r/diegosouzapw/omniroute)
](LICENSE)


๐ 67๊ฐ ์ธ์ด๋ก ์ ๊ณต
## ๐ ์ค์นํ๊ณ , ๊ณต๊ธ์๋ฅผ ์ฐ๊ฒฐํ ๋ค์, ํ๋์ ์๋ํฌ์ธํธ๋ฅผ ํตํด ๋ผ์ฐํ
ํ์ธ์
```bash
# ๊ณต๊ธ์๋ฅผ ์ฐ๊ฒฐํ ํ ๋์๋ณด๋ โ ์๋ํฌ์ธํธ์์ OmniRoute ํค๋ฅผ ๋ณต์ฌํฉ๋๋ค:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto`์๋ ์ ๊ฒฉ ๋ผ์ฐํธ๊ฐ ํ์ํฉ๋๋ค. ์๋ก ์ค์นํ๋ฉด ์ ๊ฒฉํ ํค ์๋ ๋์์ด ์์ ์ ์์ผ๋ฉฐ, ํค ์๋ ๊ณต๊ธ์๋ ํ์ฌ ํด๋ผ์ด์ธํธ๋ฅผ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค. Kiro๋ฅผ ํฌํจํ์ฌ `tos: avoid`๋ก ํ์๋ ๊ณต๊ธ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ ๋ผ์ฐํ
์์ ์ ์ธ๋ฉ๋๋ค. ๊ณ์ ์ ์ฐ๊ฒฐํด๋ ์ด ์ค์ ์ ์ฌ์ ์๋์ง ์์ต๋๋ค. ๊ณต๊ธ์๋ฅผ ์ ํํ๊ธฐ ์ ์ [๋ฌด๋ฃ ํฐ์ด ๊ฐ์ด๋](docs/getting-started/FREE-TIERS-GUIDE.md)๋ฅผ ์ฐธ์กฐํ์ธ์.
๐ฆ **Python, Node.js, PHP ๋ฐ cURL**์ฉ ๋ณต์ฌ-๋ถ์ฌ๋ฃ๊ธฐ ๋น ๋ฅธ ์์ ์คํฌ๋ฆฝํธ โ [`examples/quickstart/`](examples/quickstart/)
# ๐ฅ ์ฝ์
# ๐ค OmniRoute๋ฅผ ์ฌ์ฉํ๋ ์ด์
## ๐ค ์คํ ์์ค ์น๊ตฌ๋ค์ ์ง์
> **์คํ ์์ค ์น๊ตฌ๋ก ์ฐธ์ฌํ๊ณ ์ถ์ผ์ ๊ฐ์?** ์ด๋ค์ ์คํ ์์ค๋ฅผ ์ง์งํ๊ณ OmniRoute๊ฐ ๊ณ์ ์์ง์ผ ์ ์๋๋ก ๋๋ ํ์ฌ๋ค์
๋๋ค. ์ ํฌ๋ ๊ทธ๋ค์ด ์ ๊ณตํ๋ ๋ชจ๋ ํ ํฐ์ด ์ด๋์ ์ฌ์ฉ๋๋์ง ๊ณต๊ฐ์ ์ผ๋ก ๋ฐํ๋๋ค. ์ฐ๋ฝ์ฒ: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
|
์ด ํ๋ก์ ํธ๋ฅผ ์ง์ํด ์ฃผ์ ์ฐฝ๋ฆฝ ์คํ ์์ค ์น๊ตฌ์ธ Kimi (Moonshot AI)์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! Kimi๋ ์คํ ๊ฐ์ค์น K2 ๋ฐ K3 ๋ชจ๋ธ ์ ํ๊ตฐ์ ๊ฐ๋ฐํ AI ์ฐ๊ตฌ์์
๋๋ค. Kimi K3๋ 1M ํ ํฐ ์ปจํ
์คํธ ์ฐฝ, ๋ค์ดํฐ๋ธ ๋น์ , ์ต์ฒจ๋จ ์ฝ๋ฉ ๊ธฐ๋ฅ์ ํ์ํ ๋ชจ๋ธ ๊ฐ๊ฒฉ์ ์ผ๋ถ๋ก ์ ๊ณตํ๋ฉฐ, Claude Code, Codex ๋ฐ OmniRoute๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ์ฝ๋ฉ ๋๊ตฌ์ ์ฆ์ ์๋ํฉ๋๋ค.
Kimi์ ์ง์์ด ์ ๊ณตํ๋ ๊ฒ: Kimi์ API ํฌ๋ ๋ง์ OmniRoute์ AI ๊ฒ์ฆ ๋ฆด๋ฆฌ์ค ํ์ดํ๋ผ์ธ(๋ชจ๋ ํ ๋ฆฌํ์คํธ๊ฐ ๋ฐฐํฌ๋๊ธฐ ์ ์ ๊ฒํ ํ๋ Kimi K3 ๊ธฐ๋ฐ ๋ณํฉ ๊ฒ์ฆ ๋จ๊ณ)๊ณผ ์ผ์์ ์ธ ๊ธฐ๋ฅ ๊ฐ๋ฐ์ ์ง์ํฉ๋๋ค. ์ต๊ณ ์์ค์ Kimi ์ง์์ ๋ ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์ ๊ณต๋ฉ๋๋ค: ์ง์ ์ ์ธ Kimi API (kimi-k3)์ Kimi Code ์ฝ๋ฉ ํ๋ (OAuth ๋ฐ API ํค). OmniRoute๋ ๋ํ Kimi์ ์ง์ ํ๋ก๊ทธ๋จ์ ์ฐธ์ฌํ๋ ์ต์ด์ ๋ธ๋ผ์ง ์คํ ์์ค ํ๋ก์ ํธ์
๋๋ค. 15% ์ถ๊ฐ ํฌ๋ ๋ง์ด ํฌํจ๋ Kimi API ํค ๋ฐ๊ธฐ โ
|
Cheaper Inference cheaperinference.com
|
์ด ํ๋ก์ ํธ๋ฅผ ์ง์ํด ์ฃผ์ OmniRoute ์คํ ์์ค ์น๊ตฌ์ธ Cheaper Inference์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! Cheaper Inference๋ ๋น์ฉ ์์๊ฐ ๋งค๊ฒจ์ง ๊ฒ์ดํธ์จ์ด๋ก, Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok ๋ฐ MiniMax ๋ฑ 42๊ฐ์ ์ต์ฒจ๋จ ๋ชจ๋ธ์ ํ๋์ OpenAI ํธํ ์๋ํฌ์ธํธ ๋ค์์ ์ฌํ๋งคํ๋ฉฐ, ๋ชจ๋ธ ์ ์์ฌ์ ์ ๊ฐ ์ด์์ผ๋ก ์ฒญ๊ตฌํ์ง ์๊ณ ๊ฐ ์์ฒญ์ ๊ฐ์ฅ ์ ๋ ดํ ์ ๊ฒฉ ๊ณต๊ธ์์๊ฒ ๋ผ์ฐํ
ํฉ๋๋ค.
OmniRoute์ ์ต๊ณ ์์ค ์ง์: Chat Completions, ๋ค์ดํฐ๋ธ /v1/responses ์๋ํฌ์ธํธ, ๋น์ , ๋๊ตฌ ํธ์ถ ๋ฐ 3๊ฐ์ ์ด๋ฏธ์ง ๋ชจ๋ธ (grok-imagine, nano-banana-pro, nano-banana-2, cheaperinference/<model>๋ก ์ ๊ทผ ๊ฐ๋ฅ). API ํค ๋ฐ๊ธฐ โ
|
aff=omniroute ํ๊ทธ๊ฐ ๋ถ์ ๋งํฌ๋ ํํธ๋ ๋งํฌ์
๋๋ค. ์ด ๋งํฌ๋ค์ ์ฌ์ฉ์์๊ฒ ์ถ๊ฐ ๋น์ฉ ์์ด ํ๋ก์ ํธ์ ์๊ธ์ ์ง์ํฉ๋๋ค.
๐๏ธ ์ ํด ํ๋ก๋ชจ์
โ ์ ํฌ๊ฐ ํ์ํ์ง ์๋ ๊ณต๊ธ์
์ฒด์ ๋ฌด๋ฃ ๊ฐ์
์ฟ ํฐ (ํด๋ฆญํ์ฌ ํ์ฅ)
์ด ์น์
์ ์ถ์ฒ/์ฟ ํฐ ์ฝ๋ ์ ์ฉ์
๋๋ค. ํ์ ํํธ๋์ญ์ ์์ ์๋ ๐ค ์คํ ์์ค ์น๊ตฌ๋ค์ ์ง์ ์น์
์ ์์ต๋๋ค. OmniRoute๋ ์ฌ๊ธฐ์ ๋์ด๋ ๊ณต๊ธ์
์ฒด์ ํ์ ๋๋ ํํธ๋์ญ ๊ด๊ณ๊ฐ ์์ผ๋ฉฐ, ์ด๋ค์ ๋๊ตฌ๋ ์ฌ์ฉํ ์ ์๋ ๊ณต๊ฐ ์ฟ ํฐ์
๋๋ค.
AgentRouter agentrouter.org
|
AgentRouter โ ์ ํด ๊ฐ์
ยท ๊ฐ์
์ $100 ๋ฌด๋ฃ ํฌ๋ ๋ง (๋ฌด๋ฃ ์๋ฒ, ๋ ๋์ ์ง์ฐ ์๊ฐ ์์ โ ํ
์คํธ์ฉ์ผ๋ก ์ต์ , ํ๋ก๋์
์ฉ ์๋). v3.8.50๋ถํฐ OmniRoute์์ ์ต๊ณ ์์ค ์ง์: Chat Completions, Anthropic ํธํ ์์ด์ด ํ์ ๋ฐ OpenAI ํธํ ๊ฒฝ๋ก. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ธ์๋ claude-opus-4-8, claude-opus-5, gpt-5.6-sol ๋ฑ์ด ํฌํจ๋ฉ๋๋ค. $100 ๋ฐ๊ธฐ โ
โ ๏ธ ์ ํด ๋งํฌ โ OmniRoute๋ ์ด ๊ณต๊ธ์
์ฒด์ ํ์ ๋๋ ํํธ๋์ญ ๊ด๊ณ๊ฐ ์์ต๋๋ค.
|
OmniRoute ์ฌ์ฉ์์๊ฒ ๋์์ด ๋๋ ๊ด๋ํ ๋ฌด๋ฃ ๊ฐ์
์ฟ ํฐ์ ์ ๊ณตํ๋ ๋ค๋ฅธ ๊ณต๊ธ์
์ฒด๋ฅผ ์๊ณ ๊ณ์ ๊ฐ์? ์ด์๋ฅผ ์ด์ด์ฃผ์๋ฉด ์ฌ๊ธฐ์ ์ถ๊ฐํ๊ฒ ์ต๋๋ค.
## ๐ฏ ์ฝค๋ณด โ ํต์ฌ ๊ธฐ๋ฅ
> **์ฝค๋ณด**๋ OmniRoute๊ฐ **์๋์ผ๋ก** ๋ผ์ฐํ
ํ๋ ๋ชจ๋ธ ์ฒด์ธ์
๋๋ค. ํ ๋น๋์ด ์์ง๋๊ฑฐ๋, ๊ณต๊ธ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ๋น์ฉ์ด ๊ธ์ฆํ๋ฉด ์ฝค๋ณด๋ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ๋ค์ ์ ์ ๋ชจ๋ธ๋ก ์ ํํ ์ ์์ต๋๋ค. ๐ก๏ธ
### โก ์ค์ ๋ถํ์ โ `auto`๋ง ์ฌ์ฉํ์ธ์
์ฝค๋ณด๋ฅผ ์์ฑํ ํ์๊ฐ ์์ต๋๋ค. ๋ชจ๋ธ์ `auto`(๋๋ ๋ณํ ๋ชจ๋ธ)๋ก ์ค์ ํ๋ฉด OmniRoute๊ฐ ์ฐ๊ฒฐ๋ ๊ณต๊ธ์๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ ์ฝค๋ณด๋ฅผ ๊ตฌ์ฑํ๊ณ ์ค์๊ฐ์ผ๋ก ์ ์๋ฅผ ์ฐ์ ํฉ๋๋ค.
| ๋ชจ๋ธ ID | ์ต์ ํ ๋์ |
auto | ๐ฏ ๊ท ํ ์กํ ๊ธฐ๋ณธ๊ฐ(LKGP โ ๋ง์ง๋ง์ผ๋ก ์ ์ ์๋ํ ๊ณต๊ธ์๋ฅผ ๊ณ์ ์ฌ์ฉ) |
auto/coding | ๐ง๐ป ์ฝ๋ ์์ฑ ํ์ง์ ์ฐ์ ํ๋ ๊ฐ์ค์น |
auto/fast | โก ์ง์ฐ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ๋์์ ์ฐ์ |
auto/cheap | ๐ฐ ํ ํฐ๋น ๋น์ฉ์ด ๊ฐ์ฅ ์ ๋ ดํ ๋์์ ์ฐ์ |
auto/subscription | ๐๏ธ ์ด๋ฏธ ๋น์ฉ์ ์ง๋ถ ์ค์ธ ๊ตฌ๋
ํ ๋น๋๋ง ์ฌ์ฉ โ ์ฌ์ฉ ๋ถ๊ฐ ์ ์ฆ์ ์คํจํ๋ฉฐ, ์ ๋ฃ ๋์ฒด ๊ฒฝ๋ก๋ ์ฌ์ฉํ์ง ์์(๊ฐ์ด๋) |
auto/thrifty | ๐ช ์๊ธ์ ํ ๋น๋์ ๋จผ์ ์ฌ์ฉํ ๋ค์, ๊ฐ์ฅ ์ ๋ ดํ ์ ๋ฃ ์ต์
์ผ๋ก ํ ๋จ๊ณ์ฉ ์ด๋ โ ์๊ธ์ ํ ๋น๋์ด ์ด๊ธฐํ๋๋ฉด ๋ค์ ์ฌ์ฉ(๊ฐ์ด๋) |
auto/offline | ๐ ํ ๋น๋/์์ฒญ ํ๋ ์ฌ์ ๊ฐ ๊ฐ์ฅ ํฐ ๋์์ ์ฐ์ |
auto/smart | ๐ญ ํ์ง ์ฐ์ + ๋ ๋์ ๋ชจ๋ธ์ ์ฐพ๊ธฐ ์ํ 10% ํ์ |
auto/lkgp | ๐ ๋ง์ง๋ง์ผ๋ก ์ ์ ์๋ํ ๊ณต๊ธ์๋ฅผ ๋ช
์์ ์ผ๋ก ๊ณ ์ |
auto/chaos | ๐งช ๋ชจ๋ธ ํจ๋๋ก ๋ณ๋ ฌ ๋ถ์ฐ(๊ณต๊ธ์๋น ํ๋, ๊ธฐ๋ณธ๊ฐ 5๊ฐ)ํ์ฌ ํ๋์ ๋ต๋ณ์ ๋ฐํํฉ๋๋ค. ํจ๋ ๋ชจ๋ธ๋ง๋ค ์
์คํธ๋ฆผ ํธ์ถ์ด ํ ๋ฒ์ฉ ๋ฐ์ํ๋ฉฐ, ์ฅ์ ์ฃผ์
๊ธฐ๋ฅ์ ์๋๋๋ค. |
##
### ๐ ๋๋ ์ง์ ๊ตฌ์ฑ โ 20๊ฐ์ง ๋ผ์ฐํ
์ ๋ต
**20๊ฐ์ง** ์ ๋ต ๋ชจ๋ ์ฝค๋ณด ๋จ๊ณ๋ณ๋ก ์์ ๋กญ๊ฒ ์กฐํฉํ ์ ์์ต๋๋ค.
| # |
์ ๋ต |
๊ธฐ๋ฅ |
| 1 |
priority |
์ฒซ ๋ฒ์งธ ๋์์ ์ฐ์ ํ๋ ์์ ์ง์ ๋ชฉ๋ก โ ๊ฐ ๋์์ ์์งํ ํ ๋ค์ ๋์์ผ๋ก ์ด๋ ๐ฅ |
| 2 |
fill-first |
๊ฐ ๋์์ ํ ๋น๋์ ์์ ํ ์์งํ ํ ๋ค์ ๋์์ผ๋ก ์ด๋ |
| 3 |
weighted |
๋์๋ณ ๊ฐ์ค์น์ ๋ฐ๋ฅธ ๊ฐ์ค ๋ฌด์์ ์ ํ |
| 4 |
round-robin |
๋์์ ์์๋๋ก ์ํ |
| 5 |
p2c |
๋ ๊ฐ ์ ํ ๋ฐฉ์์ ๋ฌด์์ ๋ถํ ๋ถ์ฐ |
| 6 |
least-used |
ํ์ฌ ๋ถํ๊ฐ ๊ฐ์ฅ ๋ฎ์ ๋์์ ์ ํ |
| 7 |
random |
๊ท ๋ฑ ๋ฌด์์ ์ ํ(์ค๋ณต ์ ๊ฑฐ) |
| 8 |
strict-random |
๋ฐ๋ณต ํญ๋ชฉ์ ์ค๋ณต ์ ๊ฑฐํ์ง ์๊ณ ๋ฌด์์ ์ ํ ๐ฒ |
| 9 |
cost-optimized |
์ค์๊ฐ ์นดํ๋ก๊ทธ ๊ฐ๊ฒฉ์ ๊ธฐ์ค์ผ๋ก ์์ฒญ๋น ๋น์ฉ์ ์ต์ํ ๐ธ |
| 10 |
headroom |
๋จ์ ํ ๋น๋์ด ๊ฐ์ฅ ๋ง์ ๋์์ ์ ํ |
| 11 |
quota-weighted |
ํ ๋น๋์ด ์์ง๋ ๊ณ์ ์ ๊ฑด๋๋ด ํ, ๋จ์ ํ ๋น๋ รท ์ฒ๋ฆฌ ์ค์ธ ๋ถํ์ ๋น๋กํ์ฌ ์ ํ โ ๊ธฐ์กด ๋ํ๋ ๊ณ ์ ์ํ ์ ์ง โ๏ธ |
| 12 |
reset-window |
ํ ๋น๋ ๊ธฐ๊ฐ์ด ๊ฐ์ฅ ๋นจ๋ฆฌ ์ด๊ธฐํ๋๋ ๋์์ ์ฐ์ |
| 13 |
reset-aware |
ํ ๋น๋ ์ด๊ธฐํ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์์ ์ง์ โ ์งง์ ๊ธฐ๊ฐ ์ฐ์ ๐ |
| 14 |
context-relay |
๊ธด ๋ํ๋ฅผ ์ํด ๋์ ๊ฐ์ ์ปจํ
์คํธ๋ฅผ ์ ๋ฌ ๐ง |
| 15 |
context-optimized |
ํ์ฌ ์ปจํ
์คํธ ํฌ๊ธฐ์ ๊ฐ์ฅ ์ ํฉํ ๋์์ ์ ํ |
| 16 |
cache-optimized |
์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ ํ๋กฌํํธ ์ ๋์ฌ๋ฅผ ๋์ผํ ๊ณ์ ์ ๊ณ ์ โ ํ๋กฌํํธ ์บ์ ์ ์ค๋ฅ ๊ทน๋ํ ๐ฏ |
| 17 |
lkgp |
๋ง์ง๋ง ์ ์ ๊ฒฝ๋ก(Last-Known-Good Path) โ ๋ง์ง๋ง์ผ๋ก ์ฑ๊ณตํ ๊ณต๊ธ์์ ๊ณ ์ ํ ํ ๊ท์น์ ๋ฐ๋ผ ๋์ฒด ๊ฒฝ๋ก ์ฌ์ฉ |
| 18 |
auto |
๋ชจ๋ ์ฐ๊ฒฐ์ ๋์์ผ๋ก 16๊ฐ์ง ์์๋ฅผ ์ค์๊ฐ์ผ๋ก ํ๊ฐ ๐ค |
| 19 |
fusion |
๋ชจ๋ธ ํจ๋๋ก ๋ถ์ฐ ํธ์ถํ๊ณ ํ์ ๋ชจ๋ธ์ด ํ๋์ ๋ต๋ณ์ผ๋ก ์ข
ํฉ ๐งฌ |
| 20 |
pipeline |
๋จ๊ณ๋ฅผ ์ฐ๊ฒฐ โ ๊ฐ ๋์์ ์ถ๋ ฅ์ด ๋ค์ ๋์์ ์
๋ ฅ์ผ๋ก ์ ๋ฌ๋จ ๐ |
Auto-Combo ์์ง์ ๋ชจ๋ ํ๋ณด๋ฅผ **16๊ฐ์ง ์์**(์ํ, ํ ๋น๋, ๋น์ฉ, ์ง์ฐ ์๊ฐ, ์์
์ ํฉ์ฑ, ํ์ง, ์ธ์
๊ฐ์ฉ์ฑ ๋ฑ)๋ก ํ๊ฐํฉ๋๋ค โ [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md)๋ฅผ ์ฐธ์กฐํ์ธ์.
##
### ๐งฑ ๋ณต์๋ ฅ์ด ๊ธฐ๋ณธ์ผ๋ก ๋ด์ฅ๋์ด ์์ต๋๋ค(๋
๋ฆฝ์ ์ธ 3๊ฐ ๊ณ์ธต)
๐ [Auto-Combo ์์ง](docs/routing/AUTO-COMBO.md) ยท [๋ณต์๋ ฅ ๊ฐ์ด๋](docs/architecture/RESILIENCE_GUIDE.md)
## ๐ OmniRoute์ ์ฐจ๋ณ์
๐ 9router, OpenRouter, CLIProxyAPI ๋ฐ LiteLLM๊ณผ์ ์ ์ฒด ๋ฐฉ๋ฒ๋ก ๋ฐ ๊ธฐ๋ฅ๋ณ ์ธ๋ถ ์ ๋ณด โ [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## ๐ OmniRoute ํ์ํ๊ธฐ
OmniRoute๋ MIT ๋ผ์ด์ ์ค๋ก ๊ณต๊ฐ์ ์ผ๋ก ์ ์งยท๊ด๋ฆฌ๋ฉ๋๋ค. ์๊ฐ์ด๋ ๋น์ฉ์ ์ ์ฝํ๋ ๋ฐ ๋์์ด ๋์๋ค๋ฉด, ๋
๋ฆฝ์ฑ์ ์ ์งํ ์ ์๋๋ก ์์ ์๊ฒ ๋ง๋ ๋ฐฉ๋ฒ์ผ๋ก ํ์ํด ์ฃผ์ธ์. ํ์์ ๋ผ์ฐํ
์ฐ์ ์์์ ์ ๋ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ํ์์ผ๋ก ์ป๋ ๊ฒ์ ๋
ธ์ถ์ด์ง ์์๊ฐ ์๋๋๋ค.
**๐ง๐ท PIX** โ ์ฆ์ ์ก๊ธ, ์์๋ฃ ์์ (๋ธ๋ผ์ง)
ํค (๋ฌด์์): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix ๋ณต์ฌ ๋ฐ ๋ถ์ฌ๋ฃ๊ธฐ:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
โฟ ์ํธํํ โ BTC ยท ETH ยท USDT-TRC20 ยท USDC-Solana (ํด๋ฆญํ์ฌ ํผ์น๊ธฐ)
| โฟ BTC | Bitcoin (SegWit) | bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd |
| ฮ ETH | Ethereum (ERC20) | 0x64Cf6B68A6Ff34288e89172950a2d00102337a84 |
| โฎ USDT | Tron (TRC20) | TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2 |
| $ USDC | Solana | 2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu |
โ ๏ธ ๊ฐ ์ฝ์ธ์ ํ์๋ ๋คํธ์ํฌ์์๋ง ์ ์กํ์ธ์. ์๋ชป๋ ๋คํธ์ํฌ๋ก ์ ์กํ๋ฉด ์๊ธ์ ์์ ์ ์์ต๋๋ค.
๐ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ๊ฑฐ๋ ์๊ฒฌ์ด ์์ผ์ ๊ฐ์? [ํ ๋ก ](https://github.com/diegosouzapw/OmniRoute/discussions)์ ์์ํด ์ฃผ์ธ์.
๊ฐ๋ฐ์ ์ฐธ๊ณ ์ฌํญ: ์ด ํ๋ก์ ํธ๋ ๊ฐ๋ฐ ํธ์๋ฅผ ์ํด npm ์ค์น ๋๋ ์ค์น ํ ๊ณผ์ ์์ ๋ก์ปฌ .env ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค. ์ด ํ์ผ์ ์๋์ ์ผ๋ก .gitignore๋ฅผ ํตํด ๋ฌด์๋๋ฉฐ(.gitignore ์ฐธ์กฐ), ์ ๋๋ก ์ปค๋ฐํด์๋ ์ ๋ฉ๋๋ค. ์ค์๋ก ์ปค๋ฐํ ๊ฒฝ์ฐ ๋
ธ์ถ๋ ๋ชจ๋ ๋น๋ฐ ์ ๋ณด๋ฅผ ๊ต์ฒดํ๊ณ ๊ธฐ๋ก์์ ํด๋น ํ์ผ์ ์ ๊ฑฐํ์ธ์. ๋ก์ปฌ ํ๊ฒฝ ํ์ผ ๋ฐ ๋น๋ฐ ์ ๋ณด ๊ด๋ฆฌ ์ง์นจ์ docs/DEVELOPER-ENVIRONMENT.md๋ฅผ ์ฐธ์กฐํ์ธ์.
## ๐ก OmniRoute Radar
๋ฌธ์์ ๋ช
์๋ ์์ ํ ์ค๋ณต ์ ๊ฑฐ ์นดํ๋ก๊ทธ๋ฅผ ๊ธฐ์ค์ผ๋ก, ๋ฌด๋ฃ ํฐ์ด์ ์ฃผ์ ์์น๋ ์ฌ์ ํ **์ ~1.62B ํ ํฐ**์
๋๋ค. ์์ ์ ๊ณต์
์ฒด ๊ฐ์
ํฌ๋ ๋ง์ ํ์ฉํ๋ฉด ์ฒซ ๋ฌ์๋ ๋ณ๋๋ก **~2.22B**๊น์ง ๋์ด๋ ์ ์์ต๋๋ค. Radar๋ OmniRoute ๋ฆด๋ฆฌ์ค ์ฌ์ด์๋ ์ต์ ๋ฌด๋ฃ ๋ชจ๋ธ ๊ฐ์ฉ์ฑ ์ ๋ณด๋ฅผ ์ํ๋ ์ฌ์ฉ์๋ฅผ ์ํ ์ ํ์ ์๋ช
์นดํ๋ก๊ทธ ์ค๋ฒ๋ ์ด์
๋๋ค. ์ปค๋ฎค๋ํฐ ์นดํ๋ก๊ทธ์ ๊ธฐ์กด์ ๋ชจ๋ ๋ฌด๋ฃ ๊ธฐ๋ฅ์ ๊ณ์ ๋ฌด๋ฃ๋ก ์ ๊ณต๋ฉ๋๋ค.
ํ์์๋ ์ค์๊ฐ ์นดํ๋ก๊ทธ์ ์ถ๊ฐ ์ ๊ณต์
์ฒด ์ด์ฉ ๊ธฐํ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค. ๋ณ๋๋ก ์ด์๋๋ฉฐ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ์ต๋ ํ๋๋ ์ ๊ณต์
์ฒด์ ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ **์ ์ต๋ ์ฝ 3B ํ ํฐ**์
๋๋ค. ์ด ์ต๋ ํ๋๋ ๋ณด์ฅ๋์ง ์์ต๋๋ค. ์ ๊ณต์
์ฒด๋ ์ธ์ ๋ ํ ๋น๋, ์๊ฒฉ ์๊ฑด, ๋ชจ๋ธ ๋๋ ์ง์ญ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
Radar๋ ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ผ๋ฉฐ GET ์ ์ฉ์
๋๋ค. OmniRoute ํด๋ผ์ด์ธํธ๋ ํ๋กฌํํธ, ํธ๋ํฝ, ์ ๊ณต์
์ฒด ๊ตฌ์ฑ, ์ฌ์ฉ๋ ํ
๋ ๋ฉํธ๋ฆฌ ๋๋ ๋ก์ปฌ ๊ณต์ง ์จ๊น ์ํ๋ฅผ ์
๋ก๋ํ์ง ์์ต๋๋ค. ์๊ฒฉ ์๊ฑด๊ณผ ํ์ฌ ์นดํ๋ก๊ทธ์ ๋ํ ์์ธํ ๋ด์ฉ์ **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**์์ ํ์ธํ์ธ์.
## โจ ์๋ก์ด ๊ธฐ๋ฅ
> **v3.8.20 โ v3.8.54**์ ์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ์
๋๋ค. ์ ์ฒด ๋ณ๊ฒฝ ์ด๋ ฅ์ [`CHANGELOG.md`](CHANGELOG.md)์์ ํ์ธํ ์ ์์ต๋๋ค.
- **โ๏ธ `quota-weighted` ๋ผ์ฐํ
** โ 20๋ฒ์งธ ์ฝค๋ณด ์ ๋ต์ ์์ง๋ ๊ณ์ ์ ๊ฑด๋๋ด ๋ค์, ๋จ์ ํ ๋น๋ รท ์ฒ๋ฆฌ ์ค์ธ ๋ถํ์ ๋น๋กํ์ฌ ๋๋จธ์ง ๊ณ์ ์ค์์ ์ ํํ๋ฏ๋ก ๊ธฐ์กด ๋ํ๋ ๊ณ์ ๋์ผํ ๊ณ์ ์ ๊ณ ์ ๋ฉ๋๋ค. โ [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **๐งฐ ํค๋๋ฆฌ์ค ๋ชจ๋** โ `omniroute serve --headless` (๋๋ `OMNIROUTE_HEADLESS=1`)๋ ๋์๋ณด๋์ ๋์๋ณด๋ ์ ์ฉ ํ์ ์์คํ
์ ๋๊ณ `/v1/*` ํ๋ก์ ์์ง๋ง ์คํํฉ๋๋ค. โ [ํค๋๋ฆฌ์ค ๋ชจ๋](docs/guides/HEADLESS.md)
- **๐ ๋ชจ๋ธ ๊ฒ์** โ `/v1/models`๋ ๊ธฐ๋ฅ, ์ปจํ
์คํธ, ์ข
๋ฅ ๋ฐ ํ
์คํธ๋ก ํํฐ๋งํ๋ฉฐ, `POST /v1/models/query`๋ ๋์ผํ ํค๋ณ ํ์ ๊ถํ์ ์ ์ฉํ ์งง๊ณ ๊ฒฐ์ ์ ์ธ ํ๋ณด ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **๐ ํค๋ณ ๋ผ์ฐํ
์ ์ด** โ `forcedModel`์ ์ฌ์ฉํ์ฌ API ํค๋ฅผ ํ๋์ ๋ชจ๋ธ ๋๋ ์ฝค๋ณด์ ๊ณ ์ ํ๊ณ , ํค์ ๋ชจ๋ธ๊ณผ ์ฝค๋ณด๋ฅผ ์์์ ์ผ๋ก ์ถ๊ฐํ๊ฑฐ๋ ์ ๊ฑฐํ ์ ์์ต๋๋ค(`/api/keys/{id}/access`). โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md) ยท [OpenAPI](docs/openapi.yaml)
- **๐ก๏ธ ์ธ๋ถํ๋ PII ์ ์ด** โ ์ ํ๋ณ ์ ํ, ์ต๋ 20๊ฐ์ ๊ฒ์ฆ๋ ์ฌ์ฉ์ ์ง์ ๋ง์คํน ํจํด ๋ฐ ์ ํ๋ณ ๊ฐ์ง ์นด์ดํฐ๋ฅผ ์ง์ํ๋ฉฐ, ๋ง์คํน ์์ฒด๋ ๊ณ์ ์ ํ ์ฌํญ์
๋๋ค. โ [๊ฐ๋๋ ์ผ](docs/security/GUARDRAILS.md)
- **๐ 67๊ฐ ์ธ์ด** โ ๋์๋ณด๋, ๋ฌธ์ ๋ฏธ๋ฌ ๋ฐ CLI๋ฅผ ์ง์ํ๋ฉฐ, `npm run i18n:add-locale` ํ ๋ฒ์ผ๋ก ๋ชจ๋ ์์ญ์ ์ธ์ด๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. โ [i18n ๊ฐ์ด๋](docs/guides/I18N.md)
- **๐๏ธ OmniConductor** โ ์์ด์ ํธ fleet์ผ๋ก์ ์ธ๋ฐ์ด๋ A2A ์์, Agent Card์ Conductor ์คํฌ, Faro ํธ์ ํฌ ํ ํฌ ์์ฑ ์ฑํ
์ด ํฌํจ๋ ๋์๋ณด๋ ํจ๋์ ์ ๊ณตํฉ๋๋ค. โ [A2A ์๋ฒ](docs/frameworks/A2A-SERVER.md)
- **๐ ์ ์ํ ์์ฒญ ํ์ฉ ๋ฐ ๊ณผ๋ถํ ๋ณดํธ** โ ๋๊ท๋ชจ ์ฑํ
์์ฒญ์ 503์ ๋ฐํํ๋ ๋์ ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋ฉฐ, ์ฐ๊ฒฐ๋ณ RPM ๋กค๋ง lease๋ฅผ ์์์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. โ [๋ณต์๋ ฅ ๊ฐ์ด๋](docs/architecture/RESILIENCE_GUIDE.md)
- **๐๏ธ ์ ์ `/v1/models` ์ ๋ ฌ** โ ๊ฐ ์ ๊ณต์๋ง๋ค ํ๋์ ์ฐ์๋ ์ ๊ณต์ ๊ทธ๋ฃน ๋ธ๋ก์ ์ฌ์ฉํ๋ฉฐ(์ฝค๋ณด๊ฐ ๋จผ์ ๊ณ ์ ๋จ), ๋ชจ๋ ์นดํ๋ก๊ทธ ์์ค์์ ์์ ์ ์ผ๋ก ๋์ผํ ์์๋ฅผ ์ ์งํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **๐๏ธ ์์ถ ๊ฐํ** โ ๊ธฐ๋ณธ ํ์ฑํ๋ ํฝ์ฐฝ ๋ฐฉ์ง, DE / FR / JA ๋ฐ ์ค๊ตญ์ด(wรฉnyรกn)๋ฅผ ์ํ Caveman ํฉ, Gradle ๋ฐ .NET์ฉ RTK ํํฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. โ [์์ถ](docs/compression/COMPRESSION_ENGINES.md)
- **๐ธ ์ ์งํ ์ ์ก ์๊ธ ๋น์ฉ** โ ๊ตฌ๋
/ ์ฝ๋ฉ ํ๋ ์ ๊ณต์๋ ๋น์ฉ ๋ถ์์์ **$0**์ผ๋ก ํ์๋๋ฉฐ, ์์ฐ, ํ ๋น๋ ๋ฐ ๋ผ์ฐํ
์ ๊ณ์ ์ถ์ ์น๋ฅผ ๊ณ์ฐํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **โ๏ธ Quota-Share ๋ผ์ฐํ
** โ ๊ณต์ ๊ณ์ ์ ํ ๋น๋์ ํ๋ง๋ ํค์ ๊ณต์ ํ๊ฒ ๋ถ๋ฐฐํ๋ฉฐ, ์ ํด ์ฌ๋ผ์ด์ค๋ฅผ ๋์ฌํ์ฌ ์์
์ ๊ณ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค. โ [๋ณต์๋ ฅ ๊ฐ์ด๋](docs/architecture/RESILIENCE_GUIDE.md)
- **๐ค ํ ๋ฒ์ ๋ช
๋ น์ผ๋ก CLI/์์ด์ ํธ ์ค์ ** โ 15๊ฐ์ ๋ฑ๋ก๋ `setup-*` ๋ช
๋ น์ ์ ๊ณตํฉ๋๋ค. `omniroute run`์ 7๊ฐ์ CLI(Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI)๋ฅผ ์คํํ๋ฉฐ, `omniroute configure`๋ ๋ํํ ์ ๊ณต์+๋ชจ๋ธ ์ ํ๊ธฐ์ ์ปจํ
์คํธ๋ณ ์ฆ๊ฒจ์ฐพ๊ธฐ๋ฅผ ํตํด 11๊ฐ์ ๋์์ ์ง์ํฉ๋๋ค. โ [CLI ํตํฉ](docs/guides/CLI-INTEGRATIONS.md)
- **๐ฐ๏ธ ์๊ฒฉ ๋ชจ๋** โ ๋ฒ์๊ฐ ์ง์ ๋ ํ ํฐ(`connect` / `contexts` / `tokens`)์ผ๋ก ์๊ฒฉ OmniRoute๋ฅผ ์ ์ดํ๊ณ , VPS ์ค์น๋ฅผ ์ํ `antigravity` OAuth ๋์ฐ๋ฏธ๋ฅผ ์ ๊ณตํฉ๋๋ค. โ [์๊ฒฉ ๋ชจ๋](docs/guides/REMOTE-MODE.md)
- **๐งญ ๋ ์ค๋งํธํ ์๋ ๋ผ์ฐํ
** โ `auto/:` ์ฝค๋ณด, **Fusion**(๋ชจ๋ธ ํจ๋ + judge), ์์
์ธ์ ๋ผ์ฐํ
, ์์ฒญ๋ณ ๋ชจ๋ธ / ๋ชจ๋ / USD ์์ฐ ์ฌ์ ์๋ฅผ ์ง์ํฉ๋๋ค. โ [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **๐๏ธ ํ๋ฌ๊ทธํ ์์ถ** โ 12๊ฐ์ ์กฐํฉ ๊ฐ๋ฅํ ์์ง๊ณผ Compression Studios๋ฅผ ์ ๊ณตํฉ๋๋ค: LLMLingua-2, 2๋จ๊ณ Ultra, omniglyph, ๋จ๊ณ๋ณ ์ถฉ์ค๋ ๊ฒ์ดํธ, GCF v3.2, ๋๋๊ทธ ์ค ๋๋กญ ์์ ๋ณ๊ฒฝ ํธ์ง๊ธฐ. โ [์์ถ](docs/compression/COMPRESSION_ENGINES.md)
- **๐ต๏ธ ํฌ๋ช
ํ MITM ๋ณตํธํ(TPROXY)** โ ํ๋ก์ ํ๊ฒฝ ๋ณ์๋ฅผ ๋ฌด์ํ๋ CLI๋ฅผ ์บก์ฒํ๊ณ , SNI๋ณ CA ๋ฐ trust-store ์ค์น ํ๋ก๊ทธ๋จ์ ์ ๊ณตํฉ๋๋ค. โ [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **๐ธ ๋ชจ๋ ๊ณณ์์ ๋น์ฉ ํ
๋ ๋ฉํธ๋ฆฌ ์ ๊ณต** โ ๋ชจ๋ ์๋ํฌ์ธํธ์ `X-OmniRoute-*` ๋น์ฉ/์ฌ์ฉ๋ ํค๋๋ฅผ ์ ๊ณตํ๊ณ , ์บ์ ์ ์ค ์ ๊ฐ์ก ํค๋ ๋ฐ ํค๋ณ USD ์ง์ถ ํ ๋น๋์ ์ง์ํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **๐ง ์ง์ ์ ์ดํ๋ ๋ฉ๋ชจ๋ฆฌ** โ ๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์ผ๋ฉฐ, ์ ํ์ int8 ๋ฒกํฐ ์์ํ์ ์ ํ๋ณ ๊ฐ์ , ์์ฒญ๋ณ `x-omniroute-no-memory`๋ฅผ ์ง์ํฉ๋๋ค. โ [๋ฉ๋ชจ๋ฆฌ](docs/frameworks/MEMORY.md)
- **๐ก๏ธ ๋ณด์** โ ๋ชจ๋ LLM ๋ผ์ฐํธ์ ํ๋กฌํํธ ์ธ์ ์
๋ฐฉ์ด ๊ธฐ๋ฅ(๋ ๋ํ ํ
์คํธ ๋ชจ์)์ ์ ์ฉํ๊ณ , ์ ํ์ ์๊ฒฉ ์ฆ๋ช
๋ง์คํน ๊ฐ๋๋ ์ผ(์๋ฐฉํฅ์ผ๋ก ์ ์ถ๋ API ํค/์ํฌ๋ฆฟ์ ์ญ์ ), ๋ฌด๋ฃ DuckDuckGo ์ตํ ์๋จ ์น ๊ฒ์, ๋์๋ณด๋์ฉ ์ ํ์ OIDC ๋ก๊ทธ์ธ ๊ฒ์ดํธ๋ฅผ ์ ๊ณตํฉ๋๋ค(๋น๋ฐ๋ฒํธ ๋ก๊ทธ์ธ์ ํญ์ ์ฌ์ฉ ๊ฐ๋ฅ). โ [๊ฐ๋๋ ์ผ](docs/security/GUARDRAILS.md)
- **๐ผ๏ธ ์๋ก์ด ์๋ํฌ์ธํธ** โ `/v1/ocr`(Mistral OCR) ๋ฐ `/v1/audio/translations`(Whisper ์คํ์ผ)๊ฐ ๋ฏธ๋์ด ๊ธฐ๋ฅ์ ํ์ฅํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **๐จ ์ด๋ฏธ์ง / ๋์์ / ์ค๋์ค ์์ฑ** โ ๋ฏธ๋์ด๋ฅผ ์ํ ๋จ์ผ API๋ฅผ ์ ๊ณตํ๋ฉฐ, xAI Grok Imagine ๋ฐ Novita AI ๋์์, ComfyUI, Magnific, Adobe Firefly, Segmind, ElevenLabs์ ๊ฐ์ ์์ฑ ์ ๊ณต์๋ฅผ ์ง์ํฉ๋๋ค. โ [API ๋ ํผ๋ฐ์ค](docs/reference/API_REFERENCE.md)
- **๐ ๋ฐฐํฌ ๋ฐ ์ด์** โ ๋ฆฌ๋ฒ์ค ํ๋ก์ `basePath`, ๋ธ๋ผ์ฐ์ ์ธ์ด ์๋ ๊ฐ์ง, ํค๋ณ ์ฅ์น ์ถ์ , ๋ฃจํธ ๊ถํ ์๋ MITM trust, zh-TW ํ์งํ๋ฅผ ์ง์ํฉ๋๋ค. โ [ํ๊ฒฝ](docs/reference/ENVIRONMENT.md)
- **๐ค ๋ ๋ง์ ์ ๊ณต์ ๋ฐ ์์ด์ ํธ** โ ํด๋ผ์ฐ๋ ์์ด์ ํธ(Codex Cloud, Cursor, Devin, Jules), ๋ธ๋ผ์ฐ์ + OAuth ๋ก๊ทธ์ธ์ ์ง์ํ๋ Grok Build(xAI), Ollama ํผ์คํธ ํด๋์ค ์นด๋, Claude Opus 5 ๋ฐ Sonnet 5, Kimi ๊ณต์ ํํธ๋์ญ(Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AIโฆ ๊ทธ๋ฆฌ๊ณ ์๋กญ๊ฒ ์ ๋น๋ **388๊ฐ ์ ๊ณต์ ์นดํ๋ก๊ทธ**๋ฅผ ์ ๊ณตํฉ๋๋ค. โ [์ ๊ณต์](docs/reference/PROVIDER_REFERENCE.md)
- **๐ก ๋ผ์ฐํ
ํฌ๋ช
์ฑ** โ ๋ชจ๋ ์๋ต์ ํด๋น ์๋ต์ ์ฒ๋ฆฌํ ์ ๋ต/์ ๊ณต์/์ง์ฐ ์๊ฐ์ ๋ช
์ํ๋ `X-OmniRoute-Decision` ํค๋๊ฐ ํฌํจ๋ฉ๋๋ค. ์๋ก์ด `cache-optimized` ์ฝค๋ณด ์ ๋ต๊ณผ Auto-Combo `cacheAffinity` ์์๋ ๋ฐ๋ณต ์์ฒญ์ ์บ์๋ ์ ๋์ฌ๋ฅผ ๋ณด์ ํ ์ฐ๊ฒฐ๋ก ๋ค์ ๋ผ์ฐํ
ํ๋ฉฐ, ์ฝ๊ธฐ ์ ์ฉ `/v1/auto-combo/{channel}/candidates` ์๋ํฌ์ธํธ๋ `auto/*` ์ฑ๋์ ์ค์๊ฐ ํ๋ณด ํ์ ๋
ธ์ถํฉ๋๋ค. โ [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **โก ๋ก์ปฌ ์ฑ๋ฅ ๋ฐ ์ธํ๋ผ** โ ์ํด๋ฆญ ๋ก์ปฌ Redis, Cloudflare Workers / Deno Deploy ๋ฆด๋ ์ด ๋ฐฐํฌ ๋๊ตฌ, ๊ฐ๋
ํ ์๋ฒ ๋๋ ์๋น์ค๋ก ์ ๊ณต๋๋ Bifrost ๋ฐ Mux. โ [์๋ฒ ๋๋ ์๋น์ค](docs/frameworks/EMBEDDED-SERVICES.md)
- **๐งฉ ๊ธฐ๋ณธ ํฌํจ ๊ธฐ๋ฅ** โ ํ๋ฌ๊ทธ์ธ ํ๋ ์์ํฌ ๋ฐ ๋ง์ผํ๋ ์ด์ค, Omni/Agent/GitHub ์คํฌ ํ๋ ์์ํฌ, Obsidian ๋ณผํธ ํตํฉ(22๊ฐ์ MCP ๋๊ตฌ), OpenAI ํธํ Batch ๋ฐ Files API, ์๋งจํฑ ์๋ต ์บ์, ๋ฆฌ๋๋ณด๋๊ฐ ํฌํจ๋ ๊ฒ์ด๋ฏธํผ์ผ์ด์
, ACP ์์ด์ ํธ ๊ฒ์(๊ธฐ๋ณธ ์ ๊ณต ์์ด์ ํธ 15๊ฐ), BigQuery๋ก์ ์์ฝ๋ ๋ก๊ทธ ๋ด๋ณด๋ด๊ธฐ, `auto/chaos` ๋ณ๋ ฌ ๋ค์ค ๋ชจ๋ธ ํฌ์์, Telegram ๋ด ๋ธ๋ฆฌ์ง, ์ฑ ๋ด ๋ฒ์ ๊ด๋ฆฌ์, LMArena-ELO ๋ฌด๋ฃ ์ ๊ณต์ ์์. โ [๋ฌธ์](docs/README.md)
**OmniRoute๋ฅผ ํตํด ์ง์๋๋ ๋ชจ๋ CLI๋ฅผ ํ ๋ฒ์ ๋ช
๋ น์ผ๋ก ์คํํ์ธ์** โ ๋ณ๋์ ์ค์ ํ์ผ ์์ด,
๊ฐ ํ๋ก์ธ์ค๋ง๋ค ์๊ฒฉ ์ฆ๋ช
์ด ์ฃผ์
๋๋ฉฐ, Qwen/Gemini๋ ์์๋ก ๊ฒฉ๋ฆฌ๋ ํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # OpenAI Codex CLI
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# ๋๋ ์ ๊ณต์+๋ชจ๋ธ์ ๋ํ์์ผ๋ก ์ ํํ๊ณ ๋๊ตฌ์ ์์ฒด ์ค์ ์ ์์ฑํ ์ ์์ต๋๋ค:
omniroute configure codex # ๋ํ: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
๋ชจ๋ ๋ช
๋ น์ ํ์ฑ ์๊ฒฉ ์ปจํ
์คํธ(`omniroute connect `)๋ฅผ ๋ฐ๋ฅด๋ฉฐ, `--dry-run`์
์คํ ์์ด ์ ํํ ํ๊ฒฝ/์ธ์๋ฅผ ๋ฏธ๋ฆฌ ๋ณด์ฌ์ฃผ๊ณ , `--api-key-env NAME`๋
์ ํ์คํ ๋ฆฌ์ ๋น๋ฐ์ด ๋จ์ง ์๋๋ก ํฉ๋๋ค. โ [CLI ํตํฉ](docs/guides/CLI-INTEGRATIONS.md)
## ๐ 388๊ฐ AI ์ ๊ณต์
์ฒด โ ์นดํ๋ก๊ทธ์ ํ์๋ ๋ฌด๋ฃ ์ ๊ณต์
์ฒด 153๊ฐ
> **๋ฑ๋ก๋ ์ ๊ณต์
์ฒด 388๊ฐ**๊ฐ ํ์ค ์ฑํ
, ๋ฏธ๋์ด, ๊ฒ์, ๋ก์ปฌ, ํด๋ผ์ฐ๋ ์์ด์ ํธ ๋ฐ ์์คํ
์ปฌ๋ ์
์ ๊ฑธ์ณ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด ์ค **153๊ฐ๋ `hasFree: true` ๊ฒ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๋ณด์ **ํฉ๋๋ค. ์ฑํ
๋ชจ๋ธ ๋ ์ง์คํธ๋ฆฌ์๋ **์ ๊ณต์
์ฒด 239๊ฐ / ์๋ก ๋ค๋ฅธ ์ ๊ณต์
์ฒด-๋ชจ๋ธ ์ 3,059๊ฐ / ์์ ๋ชจ๋ธ ID 1,475๊ฐ**๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋ณ๋์ ๋ฌด๋ฃ ์์ฐ ์นดํ๋ก๊ทธ์๋ **๋ชจ๋ธ๋ณ ํ 471๊ฐ**, **๋ฐ๋ณต ํ 34๊ฐ**, **๋ฐ๋ณต/ํค๋ฆฌ์ค ์๊ตฌ ๋ฌด๋ฃ ์ ๊ณต์
์ฒด 52๊ฐ**๊ฐ ์์ต๋๋ค. ์ด๋ ์ค๊ณ์ ์๋ก ๋ค๋ฅธ ๋ถ๋ชจ์
๋๋ค. ์ ์์ ํ ์ค๋ณต ์ ๊ฑฐ ๊ณ์ฐ์ [์ ๊ณต์
์ฒด ์ฐธ์กฐ](docs/reference/PROVIDER_REFERENCE.md) ๋ฐ [๋ฌด๋ฃ ์๊ธ์ ](docs/reference/FREE_TIERS.md)์ ์ ๋ฆฌ๋์ด ์์ต๋๋ค.
## ๐ฅ๏ธ OmniRoute ์คํ๋๋ ๊ณณ โ ์ด๋์์๋
> ๋์ผํ ์ฑ, ๊ทํ์ ์ปดํจํฐ, ๊ทํ์ ๊ท์น. ๊ธ๋ก๋ฒ npm ์ค์น์์** ๋น์ ์ ์ ํ** Termux๋ฅผ ํตํด.
| ํ๋ซํผ | | ์ค์น |
| ๐ฆ npm (๊ธ๋ก๋ฒ) | npm install -g omniroute | ํ๋์ ๋ช
๋ น, ๋ชจ๋ OS |
| โก Bun (๊ธ๋ก๋ฒ) | bun add -g omniroute | ๋์ผํ ๋ ์ง์คํธ๋ฆฌ tarball, ๋ ๋น ๋ฅธ ์ค์น |
| ๐ณ Docker | docker run ... diegosouzapw/omniroute | ๋ฉํฐ ์ํคํ
์ฒ AMD64 + ARM64 |
| ๐ฅ๏ธ ๋ฐ์คํฌํ (Electron) | npm run electronic:build | ๊ธฐ๋ณธ ์ฐฝ + ์์คํ
ํธ๋ ์ด โ Windows / macOS / Linux |
| ๐ฉ ๋ฉ๋ด ํ์์ค(OmniRouteTray) | Brew install --cask zoispag/tap/omniroute-tray | & ์๋ฒ ์๋ ์
๋ฐ์ดํธ๋ฅผ ๊ฐ๋
ํฉ๋๋ค โ macOS |
| ๐ช ARM | arm64 | Raspberry Pi, ARM ์๋ฒ, Apple Silicon |
| ๐ฑ Android(Termux) | pkg install nodejs && npx -y omniroute | ํด๋ํฐ์์ ์คํํฉ๋๋ค , 24/7, ๋ฃจํธ ์์ |
| ๐ฒ PWA | "ํ ํ๋ฉด์ ์ถ๊ฐ" | ์ ์ฒด ํ๋ฉด, ์คํ๋ผ์ธ, ๋ธ๋ผ์ฐ์ ์์ ์ค์น ๊ฐ๋ฅ |
| ๐งฉ OpenCode ํ๋ฌ๊ทธ์ธ | @omniroute/opencode-provider | OpenCode |
| ๐ค VS ์ฝ๋ Copilot ์ฑํ
| ์ค์น OmniCopilot ํ์ฅ | ๊ธฐ๋ณธ Copilot ์ฑํ
์ ํ๊ธฐ์ ๋ชจ๋ OmniRoute ๋ชจ๋ธ โ ์์ & ๋ด๋ถ์ |
| ๐ ๏ธ ์์ค์์ | npm install && npm run dev | ํดํนํ๊ณ |
์ ๊ธฐ์ฌํ์ธ์
๐ [Docker ๊ฐ์ด๋](docs/guides/DOCKER_GUIDE.md) ยท [๋ฐ์คํฌํ](electron/README.md) ยท [๋ฉ๋ด๋ฐ ํธ๋ ์ด](https://github.com/zoispag/omniroute-tray) ยท [Termux](docs/guides/TERMUX_GUIDE.md) ยท [PWA](docs/guides/PWA_GUIDE.md) ยท [OpenCode](docs/frameworks/OPENCODE.md)
### ๐งฉ ์๋ก์ด ๊ธฐ๋ฅ: VS Code์ ๊ธฐ๋ณธ Copilot Chat ๋ด๋ถ์ OmniRoute
> ์๋ก์ด ์ฌ์ด๋๋ฐ๋ ์๊ณ , ์๋ก์ด ์ฑํ
๋ ์์ต๋๋ค. UI โ OmniRoute ์ ๊ณตํ๋ ๋ชจ๋ ๋ชจ๋ธ์** ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ Copilot Chat ๋ชจ๋ธ ์ ํ๊ธฐ** . VS Code 1.122๋ถํฐ ๊ณต๊ธ์ ๋ชจ๋ธ์ GitHub ๋ก๊ทธ์ธ์ด๋ Copilot ๊ตฌ๋
์์ด๋ ์์ด์ ํธ ๋ชจ๋, ๋๊ตฌ ํธ์ถ ๋ฐ ๋น์ ์ด ๋ฌด๋ฃ๋ก ์๋ํฉ๋๋ค.
์ค์นํ๋ค** [OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)** ํ์ฅ๋ช
์ OmniRoute ์๋ฒ(๊ธฐ๋ณธ๊ฐ์ `localhost:20128`)๋ก ์ง์ ํ ๋ค์ Copilot Chat โ ๋ชจ๋ธ ์ ํ๊ธฐ โ ์ฝ๋๋ค.** ๋ชจ๋ธ ๊ด๋ฆฌโฆ** โ**OmniRoute** .
| ๋งํฌ |
|---|
์ ํจ๊ป ์๋
| | ๐งฉ VS ์ฝ๋ ๋ง์ผํ๋ ์ด์ค | ์ค์น โ | < td align ="left">VS ์ฝ๋ โ stable &
| ๐ VSX ๋ ์ง์คํธ๋ฆฌ ์ด๊ธฐ | ์ค์น โ | < td align ="left">Cursor, Windsurf, VSCodium, Theia, ์ฝ๋ ์๋ฒ, Gitpod, Antigravity, Kiroโฆ
ํธ์ง๊ธฐ ๋ด๋ถ์์:** ํ์ฅ** ๋ณด๊ธฐ, ๊ฒ์** "OmniRoute"** , ํด๋ฆญ** ์ค์นํ๋ค** โ ๋ ๋งค์ฅ ๋ชจ๋์์ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์์ค, ์ด์ ๋ฐ ๊ฒ์ ๋ฐ๋ถ์ [diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot) ์ ๊ฒ์๋์ด ์์ต๋๋ค.
๐ [VS ์ฝ๋ Copilot ์ฑํ
๊ฐ์ด๋](docs/guides/VSCODE-COPILOT.md) โ ์ค์ , ์ ํ๊ธฐ์ ํ์๋๋ ๋ด์ฉ, ํญ ๋ด ๋์๋ณด๋, ๋ฌธ์ ํด๊ฒฐ
### ๐ฉ ์๋ก์ด ๊ธฐ๋ฅ: OmniRouteTray โ ๋ฉ๋ด ํ์์ค์ ์๋ ๊ฒ์ดํธ์จ์ด
> `omniroute serve` ํญ์ ์ผ์ ธ ์์ ๋ ๊ฐ์ฅ ํ๋ณตํฉ๋๋ค.** [OmniRouteTray](https://github.com/zoispag/omniroute-tray)** ์ด๋ฅผ macOS ์ฉ ์ค์ ํ ์์ด๋ฒ๋ฆด ์ ์๋ ๋ฉ๋ด ํ์์ค ์ฑ์ผ๋ก ๋ฐ๊ฟ๋๋ค. ์๋ฒ๋ฅผ ์์ํ๊ณ , ์ฌ๋ถํ
ํ์๋ ํ์ฑ ์ํ๋ฅผ ์ ์งํ๊ณ , ์ ์๋ฆฌ์ ์
๋ฐ์ดํธํ๊ณ , ํด๋ฆญ ํ ๋ฒ์ผ๋ก ๋ผ์ด๋ธ ํ ํฐ ์์ฐ์ ํฌ์
ํฉ๋๋ค โ** ํฐ๋ฏธ๋ ์ฐฝ์ด ์ด๋ ค ์์ง ์๊ณ , ๋ฒ ์ด๋น์ํฐ๋ฅผ ์ํ `npm install -g omniroute` ๋ ์์ต๋๋ค.**
[Tauri v2](https://v2.tauri.app/) (๋ฐ์ฌ๋ฆผ ์ค๋ฅ ํฌ๊ธฐ์ Rust ์ฝ์ด)๋ก ๊ตฌ์ถ๋์ด ์์ฒด ์๋ช
๋ Node 24 ๋ฐํ์์ ์ ๊ณตํ๊ณ ์ฑ ์์ OmniRoute ์ค์น๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ์ ์ญ `node`/`bun` ์ ์ธ์ฐ์ง ์์ต๋๋ค. ๊ทธ๊ฒ** ๊ธฐ์กด `~/.omniroute/` ๊ตฌ์ฑ ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ณต์ ํฉ๋๋ค.** โ ๋ชจ์๋ง ์ฐ๊ณ ์ด๋ฏธ ์คํ ์ค์ธ ๊ฒ๊ณผ ๋์ผํ OmniRoute ์
๋๋ค. ๐ฉ
| ํ๋ | |
| ๐ข ์๋ฒ ๊ฐ๋
| ์์ฑ ์ด๋๋ฃจํธ ์๋ธ ๋ณต์ ๋์ ์ด๋ฏธ ์คํ ์ค์ธ ์ธ์คํด์ค ์ฑํ |
| ๐ ์ค์๊ฐ ์ฌ์ฉ๋ ๊ฐ์ | ๊ณต๊ธ์ ํ ๋น๋ ๋ง๋, ์ฌ์ค์ ์นด์ดํธ๋ค์ด์ ํตํ Claude session/weekly ์ ํ, 30์ผ ๋น์ฉ ๋ถ์ |
| ๐ ์๋ ์
๋ฐ์ดํธ | ๋จ๊ณ์ ์ค์น, ์์ ์ค์, ์คํจ ์ ๋กค๋ฐฑ - ํญ์ ์ต์ ๋ฆด๋ฆฌ์ค์์ ์คํ |
| ๐ ๋ก๊ทธ์ธ ์ ์์ | ๋ก๊ทธ์ธ ์ ์ ํ์ ์ผ๋ก ์์; ํธ๋ ์ด ์ ์ฉ, ๋ํน ์์ด์ฝ ์์ |
| ๐ฉบ Doctor & ๋ก๊ทธ | ์ํด๋ฆญ ์ง๋จ ๋ฐ ์๋ฒ ๋ก๊ทธ ์ก์ธ์ค |
```sh
brew install --cask zoispag/tap/omniroute-tray
```
๋ค์ด๋ก๋๋ฅผ ์ํ์๋์? ๋ค์์์ ์ต์ .dmg ๋ค์ด๋ก๋ํ์ธ์.
์ถ์ํฉ๋๋ค. ์์ค, ์ด์ ๋ฐ ๋น๋
๋ฌธ์๋ zoispag/omniroute-tray ์ ์์ต๋๋ค.
๐ @zoispag ์ ์ปค๋ฎค๋ํฐ ํ๋ก์ ํธ โ ๊ณต์ OmniRoute ๋ฆด๋ฆฌ์ค๋ ์๋๋๋ค.
## ๐ ๋น๊ณต๊ฐ ๋ฐ ๋ก์ปฌ ์ฐ์
๐ [๊ถํ ๋ถ์ฌ](docs/architecture/AUTHZ_GUIDE.md) ยท [๊ฐ๋๋ ์ผ](docs/security/GUARDRAILS.md) ยท [์ปดํ๋ผ์ด์ธ์ค](docs/security/COMPLIANCE.md)
## ๐ ์์ ํ CLI + A2A ๋ฐ MCP
> ์๋ฒ๋ฅผ ๋์ด, OmniRoute๋ **80๊ฐ ์ด์์ ๋ช
๋ น์ด**๋ฅผ ๊ฐ์ถ **์์ ํ ๋ช
๋ น์ค ์กฐ์ข
์**์ด๋ฉฐ, AI ์์ด์ ํธ๊ฐ **์ค์ค๋ก** ์กฐ์ํ ์ ์๋๋ก ๊ฐ๋ฐฉํ ์์ด์ ํธ ํ๋กํ ์ฝ๋ ์ ๊ณตํฉ๋๋ค.
### โจ๏ธ ์ง์ ํ CLI (`start`๋ง ์๋ ๊ฒ์ด ์๋๋๋ค)
```bash
omniroute # ๊ฒ์ดํธ์จ์ด + ๋์๋ณด๋ ์คํ(ํฌํธ 20128)
omniroute chat # ๋ํํ TUI ์ฑํ
ํด๋ผ์ด์ธํธ(์ฌ๋์ ๋ช
๋ น์ด: /model /combo /skill /memory)
omniroute setup # ์๋ดํ ์ต์ด ์คํ ๋ง๋ฒ์ฌ
omniroute doctor # ์ ๊ณต์, ํฌํธ, ๋ค์ดํฐ๋ธ ์ข
์์ฑ ์ง๋จ
```
### ๐ฐ๏ธ ์๊ฒฉ ๋ชจ๋ โ CLI๋ ์ฌ๊ธฐ์, OmniRoute๋ VPS์์ ์คํ
์๋ฒ์์ OmniRoute๋ฅผ ์คํํ์๋์? ๋
ธํธ๋ถ์์ **๋์ผํ CLI**๋ก ์ ์ดํ์ธ์. ๋ฒ์๊ฐ ์ง์ ๋ ์ก์ธ์ค ํ ํฐ์ผ๋ก ํ ๋ฒ ๋ก๊ทธ์ธํ๋ฉด
์ดํ ๋ชจ๋ ๋ช
๋ น์ด ์๊ฒฉ ์๋ฒ๋ฅผ ๋์์ผ๋ก ์คํ๋ฉ๋๋ค.
```bash
omniroute connect 192.168.0.15 # ๋น๋ฐ๋ฒํธ โ ๋ฒ์ ์ง์ ํ ํฐ, ์ปจํ
์คํธ๋ก ์ ์ฅ
omniroute models # โ ์๊ฒฉ ์๋ฒ๋ฅผ ๋์์ผ๋ก ์คํ
omniroute configure codex # โ ์๊ฒฉ ๋ชจ๋ธ์ ์ ํํ๊ณ ๋ก์ปฌ Codex ํ๋กํ ์์ฑ
omniroute tokens create --name ci --scope read # ๋ค๋ฅธ ๋จธ์ ์ฉ์ผ๋ก ๋ฒ์๊ฐ ๋ ์ ํ๋ ํ ํฐ ๋ฐ๊ธ
omniroute contexts use default # โ ๋ก์ปฌ ์๋ฒ๋ก ๋ค์ ์ ํ
```
ํ ํฐ ๋ฒ์๋ `read` / `write` / `admin`์ด๋ฉฐ, ํ๋ก์ธ์ค๋ฅผ ์์ฑํ๋ ๊ฒฝ๋ก๋ ๋ฃจํ๋ฐฑ ์ ์ฉ์ผ๋ก ์ ์ง๋ฉ๋๋ค.
๐ [์๊ฒฉ ๋ชจ๋](docs/guides/REMOTE-MODE.md)
### ๐ค ์์ด์ ํธ๋ฅผ ์ฐ๊ฒฐํ๋ฉด OmniRoute ์์ฒด๋ฅผ ์ ์ดํฉ๋๋ค
OmniRoute๋ฅผ **MCP**, **A2A**, **REST API**, **์นํ
** ๋๋ **์๊ฒฉ CLI**๋ฅผ ํตํด ๋
ธ์ถํ์ธ์. ๊ธฐ๋ฅ์ ๊ฐ์ถ ๋ชจ๋ ์์ด์ ํธ(๋๋ ์์ฒด ์ฝ๋)๊ฐ ๋ผ์ฐํ
, ์ ๊ณต์, ์กฐํฉ, ์บ์, ์์ถ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌํจํ ์ ์ฒด ๊ฒ์ดํธ์จ์ด๋ฅผ ์์จ์ ์ผ๋ก ์ ์ดํ ์ ์์ต๋๋ค. ์๋ HTTP ์๋ํฌ์ธํธ๋ `http://localhost:20128`์์ ์ ๊ณต๋ฉ๋๋ค.
| ์ธํฐํ์ด์ค | ์๋ํฌ์ธํธ / ๋ช
๋ น์ด | ์ฉ๋ |
| ๐งฐ MCP (stdio) | omniroute --mcp | Claude Desktop, Cursor ๋๋ ๋ชจ๋ MCP ํด๋ผ์ด์ธํธ์ ์ฐ๊ฒฐ |
| ๐ MCP (HTTP) | /api/mcp/stream | ์๊ฒฉ MCP โ 110๊ฐ ๋๊ตฌ, 33๊ฐ ๋ฒ์(์ ํ์ ์ ์ฉ), ์์ ํ ๊ฐ์ฌ ์ถ์ |
| ๐ก MCP (SSE) | /api/mcp/sse | ์คํธ๋ฆฌ๋ฐ MCP ์ ์ก |
| ๐ค A2A | /.well-known/agent.json | ์์ด์ ํธ ๊ฐ ํต์ , JSON-RPC 2.0 + SSE, 6๊ฐ ์คํฌ |
| ๐ REST API | /v1/* | OpenAI ํธํ โ ์ฑํ
, ์๋ฒ ๋ฉ, ์ด๋ฏธ์ง, ์ค๋์ค, OCR |
| ๐ ์นํ
| /api/webhooks | ์์ฒญ / ํ ๋น๋ ์ด๋ฒคํธ๋ฅผ Slack, Discord, Telegram ๋๋ ๋ชจ๋ URL๋ก ํธ์ |
| ๐ฐ๏ธ ์๊ฒฉ CLI | omniroute connect | ๋ฒ์๊ฐ ์ง์ ๋ ์ก์ธ์ค ํ ํฐ์ผ๋ก ์๊ฒฉ ์ธ์คํด์ค ์ ์ด |
```bash
# MCP๋ฅผ ํตํด Claude Code์ ์ ์ฒด OmniRoute ๋๊ตฌ ์ธํธ ์ ๊ณต:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
๐ [MCP ์๋ฒ](docs/frameworks/MCP-SERVER.md) ยท [A2A ์๋ฒ](docs/frameworks/A2A-SERVER.md) ยท [์์ด์ ํธ ํ๋กํ ์ฝ](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## ๐๏ธ ํ ํฐ 15โ95% ์ ๊ฐ โ ์๋์ผ๋ก
### ๐ ์๋ ๋ฐฉ์ โ ํ์ดํ๋ผ์ธ, ์ํคํ
์ฒ ๋ฐ ์ ๊ฐ๋ฅ ๊ณ์ฐ
๊ธฐ๋ณธ ์คํ ์กฐํฉ์ `RTK โ Caveman`์ ์คํํฉ๋๋ค. ๋ ์์ง์ด ๋์ผํ ๋๊ตฌ/์ปจํ
์คํธ ํ์ด๋ก๋์ ์๋ํ๋ฉด ์ ๊ฐ ํจ๊ณผ๊ฐ ๋์ ๋ฉ๋๋ค.
```txt
combined = 1 โ (1 โ RTK) ร (1 โ Caveman_input)
average = 1 โ (1 โ 0.80) ร (1 โ 0.46) = 89.2%
range = 78.4 โ 94.6%
```
์ฝ๋ ๋ธ๋ก, URL, JSON ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ **ํญ์** ๋ณด์กด ์์ง์ผ๋ก ๋ณดํธ๋ฉ๋๋ค.
> **์ ์ ํ ํฐ์ผ๋ก ํด๊ฒฐํ ์ ์๋๋ฐ ์ ๋ง์ ํ ํฐ์ ์ฌ์ฉํ๋์?** ๋ชจ๋ ์์ฒญ์ **ํฌ๋ช
ํ๊ฒ** OmniRoute์ ์์ถ ํ์ดํ๋ผ์ธ์ ํต๊ณผํฉ๋๋ค โ ํด๋ผ์ด์ธํธ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ์ด์ ์์๋๋ก ์คํ๋๊ณ ๋ผ์ฐํ
์กฐํฉ๋ณ๋ก ์์ ๋กญ๊ฒ ์กฐํฉ๋๋ **12๊ฐ์ ์กฐํฉ ๊ฐ๋ฅํ ์์ง ์คํ**์ด๋ฉฐ, [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (โญ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) ๋ฐ [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR)์ ์์ด๋์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
### ๐งฑ 12๊ฐ ์์ง ์คํ
์์ง์ ํ์ดํ๋ผ์ธ ์์๋๋ก ์คํ๋๋ฉฐ, ๊ฐ ์์ง์ ์กฐํฉ๋ณ๋ก ๋
๋ฆฝ์ ์ผ๋ก ํ์ฑํ/๋นํ์ฑํํ๊ณ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
| # | ์์ง | ๊ธฐ๋ฅ |
| 1 | Session-Dedup | ํด ๊ฐ์ ๋ฐ๋ณต๋๋ ์ฝํ
์ธ ์ญ์ (์ฝํ
์ธ ์ฃผ์ ๊ธฐ๋ฐ, ํด ๊ฐ ์ค๋ณต ์ ๊ฑฐ) |
| 2 | CCR | ๋๊ท๋ชจ ๋ธ๋ก์ ๊ฒ์ ๋ง์ปค ๋ค์ ๋ณด๊ดํ๊ณ ํ์ํ ๋ ๊ฐ์ ธ์ด |
| 3 | Lite | ๊ณต๋ฐฑ + ์ด๋ฏธ์ง URL ์ ๋ฆฌ (์ง์ฐ ์๊ฐ์ด ๋ฎ์ ๊ธฐ์ค์ ) |
| 4 | RTK | ์ค๋งํธ ๋๊ตฌ ๊ฒฐ๊ณผ ํํฐ๋ง, ์ค๋ณต ์ ๊ฑฐ ๋ฐ ์๋ผ๋ด๊ธฐ (๋ช
๋ น ์ธ์) |
| 5 | Responses Tool Output | ์
ธ/ํจ์น/๊ฒ์/๋น๋ ์ถ๋ ฅ์ ๋ํ ๋ฌด์์ค ์ฐ์ JSON + ์ ํ๋ ์ง๋จ ์์ถ (Responses API) |
| 6 | Headroom | ๋ฒค๋๋ง๋ GCF ์ฝ๋ฑ์ ํตํ JSON ๋ฐฐ์ด์ ๋ฌด์์ค ํ ํ์ ์์ถ (~30%) |
| 7 | Relevance | ๋ง์ง๋ง ์ฌ์ฉ์ ์ฟผ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์ฅ ์ถ์ถ ์ ์ ๊ณ์ฐ |
| 8 | Caveman | ๊ท์น ๊ธฐ๋ฐ ์ฐ๋ฌธ ์์ถ (์ถ๋ ฅ์์ ~65โ75%) |
| 9 | Aggressive | ์ด์ ํด์ ์์ฝ + ์ ์ง์ ๋
ธํํ |
| 10 | LLMLingua-2 | MobileBERT ONNX๋ฅผ ํตํ ML ์๋ฏธ ๊ฐ์ง์น๊ธฐ โ ์ฝ๋ ์์ , ๋น๋๊ธฐ |
| 11 | Ultra | ์ ํ์ ์ํ ๋ชจ๋ธ (SLM) ๊ณ์ธต์ ์ฌ์ฉํ๋ ํด๋ฆฌ์คํฑ ํ ํฐ ๊ฐ์ง์น๊ธฐ |
| 12 | OmniGlyph | ์ง์ Anthropic ์์ด์ด์์ ์ธก์ ๋ Claude Fable 5์ฉ ์คํ์ ์ปจํ
์คํธ-์ด๋ฏธ์ง ์ธ์ฝ๋ฉ. GPT 5.6 ํธ๋์คํฌ๋จธ๋ ํ๋ก๋ฐ์ด๋ ์์์ฆ์ด ์ ๊ณต๋ ๋๊น์ง fail-closed ์ํ๋ก ์ ์ง๋ฉ๋๋ค. ๋ค ๊ฐ์ง ์์ถ ํ๋กํ (aggressive ๊ธฐ๋ณธ๊ฐ, balanced, coding-safe, passthrough) (๊ฐ์ฅ ๊ณต๊ฒฉ์ ; ์ตํธ์ธ) |
์ฝ๋ ๋ธ๋ก, URL ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ๋ **ํญ์** ๋ฐ์ดํธ ๋จ์๋ก ์๋ฒฝํ๊ฒ ๋ณด์กด๋ฉ๋๋ค. **์ํด๋ฆญ ํ๋ฆฌ์
**์ ์์ง์ ์กฐํฉํฉ๋๋ค.
| ๋ชจ๋ | ์ ๊ฐ๋ฅ | ์ ํฉํ ์ฉ๋ |
| ๐ชถ Lite | ~15% | ํญ์ ํ์ฑํํ๋ ์์ ํ ๊ธฐ๋ณธ๊ฐ |
| ๐ชจ Standard (Caveman) | ~30% | ์ผ์์ ์ธ ์ฝ๋ฉ |
| โก Aggressive | ~50% | ๋๊ตฌ ์ฌ์ฉ์ด ๋ง์ ๊ธด ์ธ์
|
| ๐ฅ Ultra | ~75% | ์ต๋ ์ ๊ฐ |
| ๐งฐ RTK | 60โ90% | ์
ธ/ํ
์คํธ/๋น๋/git ์ถ๋ ฅ |
| ๐ Stacked (RTK โ Caveman) | 78โ95% | ํผํฉ ํ๋กฌํํธ + ๋๊ตฌ ๋ก๊ทธ |
**์ค์ ์์ โ Standard ๋ชจ๋:**
> **์ด์ (69ํ ํฐ):** _"React ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ ์ด์ ๋ ๊ฐ ๋ ๋๋ง ์ฃผ๊ธฐ๋ง๋ค ์ ๊ฐ์ฒด ์ฐธ์กฐ๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ธ๋ผ์ธ ๊ฐ์ฒด๋ฅผ prop์ผ๋ก ์ ๋ฌํ๋ฉด React์ ์์ ๋น๊ต์์ ๋งค๋ฒ ๋ค๋ฅธ ๊ฐ์ฒด๋ก ์ธ์ํ๋ฏ๋ก ๋ค์ ๋ ๋๋ง๋ฉ๋๋ค. ๊ฐ์ฒด๋ฅผ ๋ฉ๋ชจ์ด์ ์ด์
ํ๋ ค๋ฉด useMemo๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค."_
>
> **์ดํ (19ํ ํฐ):** _"๋ ๋๋งํ ๋๋ง๋ค ์ ๊ฐ์ฒด ์ฐธ์กฐ. ์ธ๋ผ์ธ ๊ฐ์ฒด prop = ์ ์ฐธ์กฐ = ๋ค์ ๋ ๋๋ง. useMemo๋ก ๊ฐ์ธ์ธ์."_
>
> **๊ฐ์ ๋ต๋ณ. ํ ํฐ 72% ๊ฐ์. ์ ํ๋ ์์ค ์์.** โ
**PT-BR ์์ โ [Troglodita](https://github.com/leninejunior/troglodita) ๋ชจ๋:**
> **์ด์ (42 ํ ํฐ):** _"๋ฌธ์ ๋ ๊ฐ ๋ ๋๋ง ์ฃผ๊ธฐ๋ง๋ค ์๋ก์ด ๊ฐ์ฒด ์ฐธ์กฐ๊ฐ ์์ฑ๋์ด ์ปดํฌ๋ํธ๊ฐ ๋ค์ ๋ ๋๋ง๋๋ค๋ ๊ฒ์
๋๋ค. `useMemo`๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค."_
>
> **์ดํ (12 ํ ํฐ):** _"์ฌ๋ ๋๋ง: ๋งค ์ฃผ๊ธฐ๋ง๋ค ์ ์ฐธ์กฐ(์ธ๋ผ์ธ ๊ฐ์ฒด๊ฐ ์ฌ์์ฑ๋จ). `useMemo` ์ฌ์ฉ."_
>
> **๊ฐ์ ๋ต๋ณ. ์ฝ 70% ์ ์ ํ ํฐ. ๊ธฐ์ ์ ์ ํ์ฑ์ ๊ทธ๋๋ก์
๋๋ค.** โ
### ๐๏ธ ์์ง์ ๋์ด์ โ ์ถ๋ ฅ ์คํ์ผ, ์ ์ํ ๋ค์ด์ผ ๋ฐ ์์ฒญ๋ณ ์ ์ด
์์ 12๊ฐ ์์ง์ **์
๋ ฅ๋๋** ๋ด์ฉ์ ์ค์
๋๋ค. ์ธ ๊ฐ์ง ์ถ๊ฐ ๊ณ์ธต์ด **๋ฐฉ์**, **์์ **, ๊ทธ๋ฆฌ๊ณ **์ถ๋ ฅ๋๋** ๋ด์ฉ์ ๊ฒฐ์ ํฉ๋๋ค.
- **๐ช ์ถ๋ ฅ ์คํ์ผ** _(์ถ๋ ฅ ์ถ ์กฐ์ )_ โ ๊ฒฐ์ ์ ์ด๋ฉฐ ์บ์ ์์ ํ ์๋ต ํ์ฑ ์ง์นจ์ ์ฃผ์
ํฉ๋๋ค. ์๋ก ์กฐํฉํ ์ ์์ผ๋ฉฐ, ๊ฐ ์คํ์ผ์ `lite` / `full` / `ultra` ๊ฐ๋๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค. ์คํ์ผ ์ถ๊ฐ๋ ํ ์ค์ง๋ฆฌ ๋ ์ง์คํธ๋ฆฌ ํญ๋ชฉ์ด๋ฉด ๋ฉ๋๋ค.
- **๊ฐ๊ฒฐํ ๋ฌธ์ฅ** โ ๋ถํ์ํ ํํ / ๊ด์ฌ / ์๊ณกํ ํํ์ ์ ๊ฑฐํ๊ณ ๊ธฐ์ ์ ๋ด์ฉ์ ์ ํํ๊ฒ ์ ์งํฉ๋๋ค.
- **์ฝ๋ ์ค์ด๊ธฐ** โ "๊ฒ์ผ๋ฅธ ์๋์ด ๊ฐ๋ฐ์"์ YAGNI: ์๋ํ๋ ๊ฐ์ฅ ์์ ๋ณ๊ฒฝ๋ง ์ ์ฉํ๊ณ , ์์ฒญํ์ง ์์ ์ค์บํด๋ฉ์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
- **ํฌ๋ํ
์ผ (๊ฒ์ผ๋ฅธ ์๋์ด ๊ฐ๋ฐ์)** โ YAGNI ์ฌ๋ค๋ฆฌ๋ฅผ ์ฌ๋ผ ๊ทผ๋ณธ ์์ธ์ ํด๊ฒฐํ๊ณ , ์๋ํ๋ ๊ฐ์ฅ ์์ diff๋ฅผ ์ ์ฉํฉ๋๋ค.
- **๋๋ ADHD๊ฐ ์์ต๋๋ค (ํ๋ ์ฐ์ )** โ ๋ค์ ํ๋์ ๋จผ์ ์ ์ํ๊ณ , ๋จ๊ณ๋ฅผ ๋ฒํธ๋ก ๋งค๊ธฐ๋ฉฐ, ๊ตฌ์ฒด์ ์ธ ๋ค์ ๋จ๊ณ ํ๋๋ง ์ ์ํ๊ณ , ์๋ก ์ ์๋ตํฉ๋๋ค.
- **๊ฐ๊ฒฐํ CJK (ๆ่จ)** โ ๊ณ ์ ์ค๊ตญ์ด ์ด๊ฐ๊ฒฐ ์คํ์ผ์
๋๋ค (`zh` ๋ก์ผ์ผ์์๋ง ์ฌ์ฉ).
- **๐ฏ ์ ์ํ ์ปจํ
์คํธ ์์ฐ** _(๋ค์ด์ผ)_ โ ํ๋์ on/off ํ ํฐ ์๊ณ๊ฐ์ ์ฌ์ฉํ๋ ๋์ , **๋ชจ๋ธ์ ์ปจํ
์คํธ ์ฐฝ์ ๋ง์ถ๋ ๋ฐ** ํ์ํ ๋งํผ๋ง ๊ฐ์ฅ ์ ๋ ดํ๊ณ ์ ๋ณด ์์ค์ด ์ ์ ์์ง์ ๋จ๊ณ์ ์ผ๋ก ์ ์ฉํฉ๋๋ค. ์ ์ฑ
: `reserve-output` (๊ธฐ๋ณธ๊ฐ, ๋ชจ๋ธ ์ธ์) ยท `percentage` ยท `absolute`. ๋ชจ๋: `floor` (์ ํฉ์ฑ์ ๋ณด์ฅ) ยท `replace-autotrigger` (๋ช
์์ ์ ํ์ ์ฐ์ ) ยท `off` (๊ธฐ์กด ์๊ณ๊ฐ).
- **๐๏ธ ์์ถ ๊ฒฐ์ ์์น** _(์ฐ์ ์์, ๋์ โ ๋ฎ์)_ โ ์์ฒญ๋ณ `x-omniroute-compression` ํค๋ โบ ๋ผ์ฐํ
์กฐํฉ ์ฌ์ ์ โบ ํ์ฑ ๋ช
๋ช
ํ๋กํ โบ ์ ์ํ / ์๋ ํธ๋ฆฌ๊ฑฐ โบ ํจ๋ ๊ธฐ๋ณธ๊ฐ โบ off. ์ ์ฉ๋ ๊ณํ์ `X-OmniRoute-Compression: ; source=` ์๋ต ํค๋๋ก ๋ฐํ๋ฉ๋๋ค.
ํ ํฐ ์๊ณ๊ฐ์ผ๋ก ์๋ ํธ๋ฆฌ๊ฑฐํ๊ฑฐ๋, ์ ์ํ ๋ค์ด์ผ์ ์ผ๊ฑฐ๋, ๋ช
๋ช
ํ๋กํ์ ๊ณ ์ ํ๊ฑฐ๋, ์์ฒญ๋ณ ์ผํ์ฑ ์ค์ ์ ์ ์ฉํ๊ฑฐ๋, ๋ผ์ฐํ
์กฐํฉ๋ณ๋ก ํ์ดํ๋ผ์ธ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ํฌ๋ก๋์ ๋ง๋ ๋ฐฉ์์ ์ ํํ๋ฉด ๋ฉ๋๋ค. ์ ํ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์คํ๋ผ์ธ **ํ๊ฐ ํ๋์ค**(`npm run eval:compression`)๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ ์ ๊ณ ์ ๋ ์ฝํผ์ค์์ ์ถฉ์ค๋์ ์ ๊ฐ๋์ ๋น๊ต ํ๊ฐํฉ๋๋ค.
๐ [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) ยท [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) ยท [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# โก ๋น ๋ฅธ ์์
**1) ์ค์น ๋ฐ ์คํ**
```bash
npm install -g omniroute
omniroute
```
> ๐ก `npm warn ERESOLVE` ๋๋ peer-dep ๊ฒฝ๊ณ ๊ฐ ํ์๋๋์? [๋ฌดํดํ ๊ฒฝ๊ณ ์
๋๋ค](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **npm 11 ์ด์์ ์ฌ์ฉํ์๋์?** npm์ ํ์ฉ๋์ง ์์ ํจํค์ง ๋ผ์ดํ์ฌ์ดํด ์คํฌ๋ฆฝํธ๋ฅผ ์ฐจ๋จํ ์ ์์ต๋๋ค. OmniRoute์ `postinstall` (`node scripts/build/postinstall.mjs`)์ ๋ค์ดํฐ๋ธ ๋ฐํ์ ํ์ผ์ ์ค๋นํ๋ ๋ฐ ํ์ํฉ๋๋ค. ์ ์ญ ์ค์น ์ npm ๊ฒฝ๊ณ ์ ํ์๋ ํจํค์ง ์ด๋ฆ์ ํ์ฉํ์ธ์. OmniRoute 3.8.54์์ ๋ณด๊ณ ๋ ํจํค์ง ์งํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> ์ดํ ์ ์ญ ์ค์น์์ ์ด ํ์ฉ ๋ชฉ๋ก์ ์ฌ์ฌ์ฉํ๋ ค๋ฉด ํ ๋ฒ๋ง ๊ตฌ์ฑํ ๋ค์ ํ์์ฒ๋ผ ์ค์นํ์ธ์.
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> ์์กด์ฑ ๋ชฉ๋ก์ ๋ฆด๋ฆฌ์ค๋ง๋ค ๋ณ๊ฒฝ๋ ์ ์์ต๋๋ค. npm์์ ๋ค๋ฅธ ๋ชฉ๋ก์ ๋ณด๊ณ ํ๋ฉด ํด๋น ๊ฒฝ๊ณ ์ ํ์๋ ํจํค์ง ์ด๋ฆ์ ์ฌ์ฉํ์ธ์. ํจํค์ง๋ฅผ ํ์ฉํ๋ฉด ํด๋น ํจํค์ง์ ์ค์น ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ฉ๋๋ค.
> **Gemini Web ๋๋ ๋ค๋ฅธ ์น ์ฟ ํค ์ ๊ณต์๋ฅผ ์ฌ์ฉํ์๋์?** npm ํจํค์ง์๋
> Playwright๊ฐ ํฌํจ๋์ด ์์ง๋ง Chromium ๋ฐ์ด๋๋ฆฌ๋ ํฌํจ๋์ด ์์ง ์์ต๋๋ค. ์ฒซ ์น ์ ๊ณต์ ์์ฒญ์ ๋ณด๋ด๊ธฐ ์ ์
> [Playwright Chromium ์ค์ ](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> ์ฐธ๊ณ ์ฌํญ์ ํ์ธํ์ธ์.
๋์๋ณด๋: `http://localhost:20128` ยท API: `http://localhost:20128/v1`.
**2) ์์ ์ ๊ณ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์ ๊ณต์ ์ฐ๊ฒฐ**
๋์๋ณด๋ โ **Providers** โ ํ์ฌ ์ฝ๊ด๊ณผ ํ ๋น๋์ด ์ฌ์ฉ ์ฌ๋ก์ ์ ํฉํ ์ ๊ณต์ ์ ํ โ API ํค๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ๊ณ์ ์ ์ฐจ ์๋ฃ. ๋ฌด๋ฃ ์๊ธ์ ๋ ๊ฐ์
, ์น์ธ ๋๋ ๊ฒฐ์ ์๋จ์ ์๊ตฌํ ์ ์์ต๋๋ค. [๋ฌด๋ฃ ์๊ธ์ ๊ฐ์ด๋](docs/getting-started/FREE-TIERS-GUIDE.md)๋ฅผ ํ์ธํ์ธ์. ํค ์์ด ์ฌ์ฉํ ์ ์๋ค๋ ๋ณด์ฅ์ ์์ผ๋ฉฐ, `tos: avoid`๋ก ํ์๋ ์ ๊ณต์๋ ๊ธฐ๋ณธ์ ์ผ๋ก `auto`์์ ์ ์ธ๋ฉ๋๋ค.
**3) ์ฝ๋ฉ ๋๊ตฌ ์ง์ **
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard โ Endpoints]
Model: auto (routes among eligible connections โ or choose provider/model)
```
**4) ์๋ ์ฌ๋ถ ํ์ธ**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
์ฐ๊ฒฐ๋ ๋ชจ๋ธ ๋ชฉ๋ก์ด ํ์๋์ด์ผ ํฉ๋๋ค. ๐ ์ด์ ๋์
๋๋ค โ ์ฝ๋ฉ์ ์์ํ๋ฉด OmniRoute๊ฐ ์๋์ผ๋ก ๋ผ์ฐํ
ํ๊ณ ํด๋ฐฑ์ ์ฒ๋ฆฌํฉ๋๋ค.
ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ์ ์ง์ ํค๋๋ฅผ ์ ์กํ ์ ์๋ ๊ฒฝ์ฐ, OmniRoute๋ ํ ํฐํ๋ ํธํ์ฑ ๋ณ์นญ๋ ์ ๊ณตํฉ๋๋ค.
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
`Authorization: Bearer ...`๋ฅผ ์ฒจ๋ถํ ์ ์๋ ํด๋ผ์ด์ธํธ์์๋ง ์ฌ์ฉํ์ธ์. ํค๋ ์ธ์ฆ์ด ์ฌ์ ํ ๊ถ์ฅ๋๋ ๋ฐฉ์์
๋๋ค.
## ๐ฆ ๋ ๋ง์ ์ค์น ๋ฐฉ๋ฒ โ Docker, ์์ค, pnpm, Arch
**๐ณ Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest`๋ **๊ฒ์๋** ์์ SemVer ์ค ๊ฐ์ฅ ๋์ ๋ฒ์ ์ ๋ฐ๋ฆ
๋๋ค. git `main`์ ์ถ์ ํ์ง ์์ต๋๋ค. GitOps์์๋ `:X.Y.Z`๋ก ๋ฒ์ ์ ๊ณ ์ ํ์ธ์. [Docker ๋ฆด๋ฆฌ์ค ์ฑ๋](docs/guides/DOCKER_GUIDE.md#release-channels)์ ์ฐธ์กฐํ์ธ์. ์ด๋ฏธ์ง์๋ **`OMNIROUTE_MEMORY_MB=1024`**๊ฐ ๊ณ ์ ์ค์ ๋์ด ์์ต๋๋ค. ๋์๋ณด๋์ ๊ฐ๋ฒผ์ด ์ฑํ
์๋ ์ถฉ๋ถํฉ๋๋ค. **์ฝ๋ฉ ์์ด์ ํธ**(Claude Code, Codex, Grok ๋ฑ์์ ๋ณด๋ด๋ `POST /v1/responses`)์๋ ํจ์ฌ ๋ ํฐ V8 ํ์ด ํ์ํ๋ฉฐ, ๊ธด ์ปจํ
์คํธ ๋ ๊ฐ๊ฐ ๊ฒน์น๋ฉด ์ฝ 12โฏGiB์์ ํ๋ก์ธ์ค์ `FATAL ERROR`๊ฐ ๋ฐ์ํฉ๋๋ค. ๋ค์ดํฐ๋ธ ๋ฒํผ๋ V8 ์ธ๋ถ์ ์์ผ๋ฏ๋ก ์ปจํ
์ด๋ ํฌ๊ธฐ๋ฅผ ํ๋ณด๋ค ํฌ๊ฒ ์ค์ ํ์ธ์.
| ์ํฌ๋ก๋ | ํ (`-e OMNIROUTE_MEMORY_MB`) | ์ปจํ
์ด๋ (`--memory`) |
| -------------------------------------- | ----------------------------- | --------------------- |
| ๋์๋ณด๋ / ๊ฐ๋ฒผ์ด ์ฑํ
| `1024` (์ด๋ฏธ์ง ๊ธฐ๋ณธ๊ฐ) | โฅ2โฏg |
| ์ฝ๋ฉ ์์ด์ ํธ ํ๋ | `8192` | โฅ10โฏg |
| ๋์ ์คํ๋๋ ๊ธด `/v1/responses` ๋ ๊ฐ | `10240`โ`12288` | โฅ12โ16โฏg |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
์ ์ฒด ํ: [Docker ๊ฐ์ด๋ โ ๋ฐํ์ RAM](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **์ฌ์ ๋ฆด๋ฆฌ์ค Docker ์ฑ๋:** `diegosouzapw/omniroute:next` ๋ฐ
> `diegosouzapw/omniroute:next-web`์ ํ์ฌ ๊ธฐ๋ณธ `release/v*`
> ๋ธ๋์น๋ฅผ ๋ฐ๋ฆ
๋๋ค. ์ด๋ฌํ ๊ฐ๋ณ ํ๊ทธ๋ ๋ฆด๋ฆฌ์ค๋์ง ์์ ์์ ์ฌํญ์ ํ
์คํธํ๋ ์ฉ๋๋ก๋ง ์ ๊ณต๋๋ฉฐ
> **ํ๋ก๋์
ํ๊ฒฝ์์๋ ์ง์๋์ง ์์ต๋๋ค**. ์์ธํ ๋ด์ฉ์
> [Docker ๋ฆด๋ฆฌ์ค ์ฑ๋](docs/guides/DOCKER_GUIDE.md#release-channels)์ ์ฐธ์กฐํ์ธ์.
**๐ฅ Bun**
Bun ๋ฐํ์ ๊ฐ์ง๋ฅผ ํตํด ํ์ค `bun install` ๋ฐ ์ ์ญ ์ค์น(`bun install -g omniroute`)๋ฅผ ์ง์ํฉ๋๋ค.
- **๋ด์ฅ `bun:sqlite`**: OmniRoute๋ Bun์์ ์คํ๋ ๋ Bun์ ๋ด์ฅ `bun:sqlite` ๋๋ผ์ด๋ฒ๋ฅผ ์ฌ์ฉํ๋ฉฐ, Node.js์์๋ `better-sqlite3` ๋๋ `sql.js`๋ก ๋์ฒด๋ฉ๋๋ค.
- **๊ฐ๋ฐ ํ๊ฒฝ์์ ์๋ Webpack ๋ฒ๋ค๋ฌ ์ ํ**: ๊ฐ๋ฐ(`bun run dev`) ์ Bun์ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๋ค์ดํฐ๋ธ V8 ๋ฐ์ธ๋ฉ ๋นํธํ์ฑ์ ๋ฐฉ์งํ๊ธฐ ์ํด Turbopack์ ๋นํ์ฑํํ๊ณ Webpack์ ์ฌ์ฉํฉ๋๋ค. ํ๋ก๋์
๋น๋(`bun run build`)๋ Node์ ๋ง์ฐฌ๊ฐ์ง๋ก `OMNIROUTE_USE_TURBOPACK`์ ์ ํํ ๋ฐ๋ฆ
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ Turbopack์ด๋ฉฐ, Webpack์ผ๋ก ๋น๋ํ๋ ค๋ฉด `OMNIROUTE_USE_TURBOPACK=0`์ ์ฌ์ฉํฉ๋๋ค(`Dockerfile.bun`์์๋ ์ด๋ฅผ `--build-arg`๋ก ๋
ธ์ถํฉ๋๋ค).
- **์ ์ฉ Bun Dockerfile**: ๋ค์ดํฐ๋ธ Bun ํ๋ก๋์
๋ฐฐํฌ๋ฅผ ์ํ ๋ค๋จ๊ณ `Dockerfile.bun`์
๋๋ค(`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Bun์ผ๋ก ์ค์น ๋ฐ ์คํ
bun install
bun run dev
```
**๐ ๏ธ ์์ค์์ ์ค์น**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**๐ฆ pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**๐ง Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**๐ง Nix (Flake)**
```bash
# Nix flakes ์ฌ์ฉ
nix develop
npm run dev
# ๋๋ devbox ์ฌ์ฉ
devbox run npm run dev
```
๐ [Docker ๊ฐ์ด๋](docs/guides/DOCKER_GUIDE.md) โ Compose ํ๋กํ, Caddy HTTPS, Cloudflare ํฐ๋.
**๐ฆญ Podman**
```bash
# 1. ๋ฐ์ธ๋ ๋ง์ดํธํ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ ์ค๋น
mkdir -p data
# 2. Linux + ๋ก์ปฌ ๋ฃจํธ๋ฆฌ์ค Podman์์๋ง ์คํ(์๊ฒฉ Podman Machine ํด๋ผ์ด์ธํธ์์๋ ์ ๋ ์คํํ์ง ๋ง์ธ์):
podman unshare chown 1000:1000 ./data
# 3. ๋ฐํ์ ํํธ๋ฅผ ์ค์ ํ๊ณ ๋ก์ปฌ Compose ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ ํ ์์
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
macOS ๋๋ Windows์์ Podman์ ์๊ฒฉ Podman Machine์ ์ฌ์ฉํฉ๋๋ค. `podman unshare`๋ฅผ ๊ฑด๋๋ฐ๊ณ
[ํ ํด๋ก์ง๋ณ ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ ์ง์นจ](contrib/podman/README.md#data-directory-permissions-by-topology)์ ๋ฐ๋ฅด์ธ์.
๐ [Podman ๊ฐ์ด๋](contrib/podman/README.md) โ Compose ๋น๋, Podman Machine ๋ฐ
Linux/systemd Quadlet ์ค์ .
**โก ๋ ๋น ๋ฅด๊ณ ๊ฐ๋ฒผ์ด ์ค์น(๋ค์ดํฐ๋ธ ๋น๋ ๊ฑด๋๋ฐ๊ธฐ)**
๋ค์ดํฐ๋ธ SQLite ์์ง(`better-sqlite3`)์ **์ ํ์ ** ์์กด์ฑ์ด๋ฏ๋ก ์ ์ญ
์ค์น๊ฐ ์์ค ์ปดํ์ผ๋ก ์ธํด ์ค๋จ๋๋ ์ผ์ ์์ต๋๋ค. ํ๋ซํผ/Node์ ๋ง๋ ์ฌ์ ๋น๋ ๋ฐ์ด๋๋ฆฌ๊ฐ ์์ผ๋ฉด
์ด๋ฅผ ์ฌ์ฉํ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด ์์ JS ์์ง(Node 22 ์ด์์์๋ `node:sqlite`, ๊ทธ ์ธ์๋ ๋ฒ๋ค๋
`sql.js` WASM)์ผ๋ก ํฌ๋ช
ํ๊ฒ ๋์ฒด๋๋ฏ๋ก ๋น๋ ๋๊ตฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
์ค์น ํ ๋ค์ดํฐ๋ธ ์๋ฐ์
์ ์์ ํ ๊ฑด๋๋ฐ๋ ค๋ฉด(CI, ํค๋๋ฆฌ์ค ๋๋ ๋๋ฆฐ ๋จธ์ ):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1๋ ์ด๋ฅผ ๊ฑด๋๋๋๋ค
```
๊ฐ์ฅ ๋น ๋ฅธ ์ค์น๋ฅผ ์ํด์๋ **pnpm**์ ๊ถ์ฅํฉ๋๋ค(์ฝํ
์ธ ์ฃผ์ ์ง์ ์ ์ฅ์ + ํ๋ ๋งํฌ โ ์ ๋ด์ฉ ์ฐธ์กฐ).
๋์๋ณด๋๊ฐ ์๋ ํค๋๋ฆฌ์ค ๋ฐํ์์๋ ์์ Docker `base` ํ๋กํ์ด๋
[Termux ๊ฐ์ด๋](docs/guides/TERMUX_GUIDE.md)๋ฅผ ์ฌ์ฉํ์ธ์. CLI์ ์น ๋์๋ณด๋๋ ๋์ผํ ํ๋ก์ธ์ค๊ฐ
ํ๋์ ํฌํธ์์ ์ ๊ณตํ๋ฏ๋ก ํ์ฌ ๋ณ๋์ CLI ์ ์ฉ ํจํค์ง๋ ์์ต๋๋ค.
# ๐ฌ OmniRoute ์คํ ๋ชจ์ต
## ๐น ๋์์ ๊ฐ์ด๋
2026-10-18 ๊ธฐ์ค ๋์๋ณด๋ ์ค๋
์ท ยท ์์ ์นดํ๋ก๊ทธ: YT 1.352 | TT 334 | IG 290 ยท ์ต์ ์ฑ(์ผ): YT 5 | TT 48 | IG 49
๐ฌ #1 โ Instagram
nick_saraev โ ์กฐํ์ 3,042,474ํ
|
๐ฌ #2 โ Instagram
nnapier7 โ ์กฐํ์ 1,454,535ํ
|
๐ฌ #3 โ YouTube
Amidia AI & Tech โ ์กฐํ์ 794,974ํ
|
๐ฌ #4 โ Instagram
theopenstack โ ์กฐํ์ 692,419ํ
|
๐ฌ #5 โ TikTok
migue.baena โ ์กฐํ์ 685,788ํ
|
**์ ์ฒด ์์(์ค๋ณต ์ ๊ฑฐ๋ ์ ๊ท URL, `v > 0`, ๋๋ฌ ๋ฒ์์):**
| #1 | #2 | #3 | #4 | #5 |
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [nick_saraev โ Instagram](https://www.instagram.com/reel/Da8ZthUPK98/) โ **3,042,474** | [nnapier7 โ Instagram](https://www.instagram.com/reel/Dbp7wv_CIO0/) โ **1,454,535** | [Amidia AI & Tech โ YouTube](https://www.youtube.com/watch?v=NJ0TQ-pyMDY) โ **794,974** | [theopenstack โ Instagram](https://www.instagram.com/reel/DaSs65mMrHk/) โ **692,419** | [migue.baena โ TikTok](https://www.tiktok.com/@migue.baena/video/7670919268216622358) โ **685,788** |
| #6 | #7 | #8 | #9 | #10 |
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [milesreevesai โ TikTok](https://www.tiktok.com/@milesreevesai/video/7667980059189366019) โ **620,400** | [nikothetech โ TikTok](https://www.tiktok.com/@nikothetech/video/7671890769665477918) โ **610,803** | [Vaibhav Sisinty โ YouTube](https://www.youtube.com/watch?v=QucgvbO5gsM) โ **509,281** | [buildwithai.club โ Instagram](https://www.instagram.com/reel/DbIt9AjK7-U/) โ **347,652** | [nivedan.ai โ Instagram](https://www.instagram.com/reel/DbIrCksJiqq/) โ **331,973** |
2026-10-18 ๊ธฐ์ค ์ ๊ท ์งํ: **๊ณ ์ ๋์์ 1.976๊ฐ** ยท **ํ์ธ๋ ์กฐํ์ 20.220.289ํ** (`v > 0`) ยท **๋คํธ์ํฌ๋ณ ์ฑ๋/ํ๋กํ 1.210๊ฐ**. ์์ ๋์๋ณด๋์๋ 1.976๊ฐ ํ(YouTube 1.352๊ฐ = ๊ธด ํ์ 740๊ฐ + Shorts 612๊ฐ ยท TikTok 334๊ฐ ยท Instagram 290๊ฐ)์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋์์๋ณ๋ก ๊ฐ์ฅ ๋์ ์กฐํ์๋ฅผ ์ ์งํ๋ ์ ๊ท URL ๊ธฐ๋ฐ ์ ๊ทํ ์ดํ ์ค๋ณต ํญ๋ชฉ์ ๋จ์ ์์ง ์์ต๋๋ค. YouTube ๋ฐ์ดํฐ ์์ง์ 2026-10-13์ ์ค๋จ๋์์ผ๋ฉฐ(14์ผ๋ถํฐ 18/10๊น์ง API ํ ๋น๋ ์์ง), TikTok/Instagram ๋ฐ์ดํฐ ์์ง์ 2026-09-02๋ถํฐ ์ค๋จ๋์์ต๋๋ค(์์ง ํฌ๋ ๋ง ์์). ์์ง ์กฐํ์๊ฐ ์ง๊ณ๋์ง ์์ ๋์์์ 76๊ฐ์
๋๋ค.
> ๐ฌ **OmniRoute์ ๊ดํ ๋์์์ ๋ง๋์
จ๋์?** ๋งํฌ์ ํจ๊ป [์ด์](https://github.com/diegosouzapw/OmniRoute/issues/new) ๋๋ [ํ ๋ก ](https://github.com/diegosouzapw/OmniRoute/discussions)์ ๋ฑ๋กํด ์ฃผ์ธ์. ์ฌ๊ธฐ์ ์๊ฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค.
# ๐ง ์ปค๋ฎค๋ํฐ ๋ฐ ๋์๋ง
> ๋ชจ๋ ๊ฒ์ ํ๊ณณ์์ ์ด์ฉํ์ธ์. ์ ์ง๊ด๋ฆฌ์๋ฅผ ํ๋ก์ฐํ๊ณ , ์ปค๋ฎค๋ํฐ์ ๋ํํ๊ฑฐ๋, ์ด์๋ฅผ ๋ฑ๋กํ์ธ์.
| ์ฑ๋ | ์์น / ๋ฐฉ๋ฒ |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
| ๐ผ **LinkedIn** โ ๋ฉ์ธํ
์ด๋ ํ๋ก์ฐ | [linkedin.com/in/diegosouzapw](https://www.linkedin.com/in/diegosouzapw/) |
| ๐ **GitHub** โ ๋ฆด๋ฆฌ์ค ๋ฐ ํ์ ๋ฐ์ผ๋ ค๋ฉด ํ๋ก์ฐ | [@diegosouzapw](https://github.com/diegosouzapw) |
| ๐ฌ **Discord** | [discord.gg/U47eFqAXCn](https://discord.gg/U47eFqAXCn) |
| โ๏ธ **Telegram** | [t.me/omnirouteOficial](https://t.me/omnirouteOficial) |
| ๐ข **WhatsApp โ ๐ ๊ธ๋ก๋ฒ** | [๊ทธ๋ฃน ์ฐธ์ฌ](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) |
| ๐ข **WhatsApp โ ๐ง๐ท ๋ธ๋ผ์ง** | [๊ทธ๋ฃน ์ฐธ์ฌ](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) |
| ๐ **์น์ฌ์ดํธ** | [omniroute.online](https://omniroute.online) |
| ๐ **๐StHub OmniRoute ์ปค๋ฎค๋ํฐ(๋ฌด๋ฃ)** | [StHub ํฌํธ](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK) |
| ๐ฆ **์์ค ์ฝ๋** | [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute) |
| ๐ **๋ฒ๊ทธ ์ ๊ณ ** | [์ด์ ๋ฑ๋ก](https://github.com/diegosouzapw/OmniRoute/issues) โ `npm run system-info` ์ถ๋ ฅ ์ฒจ๋ถ |
| ๐ค **๊ธฐ์ฌ** | [CONTRIBUTING.md](CONTRIBUTING.md) ยท [๋ธ๋์น ๋ฐ ๋ฆด๋ฆฌ์ค ๋ชจ๋ธ](docs/ops/BRANCHING_MODEL.md) ยท `good first issue` ์ ํ |
| ๐ **ํ๋ก์ ํธ ํ์** | [ํ์ ๋ฐฉ๋ฒ โ](#-support-omniroute) ยท [GitHub Sponsors](https://github.com/sponsors/diegosouzapw) |
---
## ๐ ๏ธ ๊ธฐ์ ์คํ
| ๊ณ์ธต | ๊ธฐ์ |
| ๋ฐํ์ | Node.js 22.x / 24.x LTS โ >=22.22.2 <23 || >=24.0.0 <27 |
| ์ธ์ด | TypeScript 6.0 โ src/ ๋ฐ open-sse/ ์ ์ฒด์์ 100% TypeScript ์ฌ์ฉ (v2.0 ์ดํ ์ฝ์ด์ any ์์) |
| ํ๋ ์์ํฌ | Next.js 16 + React 19 + Tailwind CSS 4 |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค | better-sqlite3 (SQLite, WAL ์ ๋๋ง) + LowDB (JSON ๋ ๊ฑฐ์) โ ๋๋ฉ์ธ ๋ชจ๋ 147๊ฐ, ๋ง์ด๊ทธ๋ ์ด์
233๊ฐ |
| ๋ฉ๋ชจ๋ฆฌ | SQLite FTS5 ์ ๋ฌธ ๊ฒ์ + int8 ์์ํ ๋ฒกํฐ ์๋ฒ ๋ฉ, ํ์
์ง์ ๊ฐ์ |
| ์คํค๋ง | Zod 4 โ MCP ๋๊ตฌ I/O ๊ฒ์ฆ + API ๊ณ์ฝ |
| ํ๋กํ ์ฝ | MCP (stdio / HTTP / SSE) + A2A v0.3 (JSON-RPC 2.0 + SSE) |
| ์คํธ๋ฆฌ๋ฐ | Server-Sent Events (SSE) + WebSocket ๋ธ๋ฆฌ์ง (/v1/ws) |
| ์์ถ | 12๊ฐ ์์ง ํ์ดํ๋ผ์ธ โ RTK, Caveman, LLMLingua-2 (MobileBERT ONNX), GCF, OmniGlyph |
| ์ธ์ฆ ๋ฐ ๋ณด์ | OAuth 2.0 (PKCE) + JWT + API Keys + MCP ๋ฒ์ ์ง์ ์ธ์ฆ ยท ์ ์ฅ ๋ฐ์ดํฐ AES-256-GCM ์ํธํ ยท DOMPurify |
| ์คํ
์ค | wreq-js โ JA3 / JA4 TLS ์ง๋ฌธ ์์ฅ, 3๋จ๊ณ ํ๋ก์ |
| ๋ณต์๋ ฅ | ์ํท ๋ธ๋ ์ด์ปค, ์ง์ ๋ฐฑ์คํ, ๋์ ํญ์ฃผ ๋ฐฉ์ง, ์๋ ์กฐํฉ ์๊ฐ ๋ณต๊ตฌ |
| ๋ก๊น
| pino โ ์์ฒญ ์ปจํ
์คํธ๋ฅผ ํฌํจํ ๊ตฌ์กฐํ๋ JSON ๋ก๊ทธ |
| ํ
์คํธ | Node.js ํ
์คํธ ๋ฌ๋ + Vitest โ 8,400๊ฐ ์ด์์ ์ถ์ ํ
์คํธ ํ์ผ(๋จ์, ํตํฉ, E2E, ๋ณด์, ์ํ๊ณ)์ ๊ฑธ์ณ ์ ์ ํ
์คํธ ์ ์ธ 60,000๊ฐ ์ด์ |
| ํ๋ซํผ | ๋ฐ์คํฌํฑ (Electron) ยท Android (Termux) ยท PWA (๋ชจ๋ ๋ธ๋ผ์ฐ์ ) |
| CI/CD | GitHub Actions โ ๋ฆด๋ฆฌ์ค ์ npm ์๋ ๊ฒ์ + Docker Hub ์๋ ๊ฒ์ |
| ๋งํฌ | ์น์ฌ์ดํธ ยท npm ยท Docker Hub |
## ๐ ๋ฌธ์
### ๐ ์์ํ๊ธฐ
| ๋ฌธ์ | ์ค๋ช
|
| ์ฌ์ฉ์ ๊ฐ์ด๋ | ๊ณต๊ธ์, ์ฝค๋ณด, CLI ํตํฉ, ๋ฐฐํฌ |
| ์ค์ ๊ฐ์ด๋ | ์ ์ฒด ์ค์น ๋ฐฉ๋ฒ, CLI ๋๊ตฌ ๊ตฌ์ฑ, ํ๋กํ ์ฝ ์ค์ , ํ์์์ ์กฐ์ |
| CLI ๋๊ตฌ ๊ฐ์ด๋ | Claude Code, Codex, Cursor, Cline, OpenClaw, Kilo, Copilot์ ๋๊ตฌ๋ณ ์ค์ |
| ์๊ฒฉ ๋ชจ๋ | ๋ฒ์๊ฐ ์ง์ ๋ ์ก์ธ์ค ํ ํฐ์ ์ฌ์ฉํ์ฌ ๋
ธํธ๋ถ CLI์์ ์๊ฒฉ OmniRoute(VPS) ์ ์ด |
| Claude Code ๊ตฌ์ฑ | launch ๋ฐ ๋ชจ๋ธ๋ณ ํ๋กํ์ ์ฌ์ฉํ์ฌ Claude Code๋ฅผ OmniRoute(๋ก์ปฌ/์๊ฒฉ)์ ์ฐ๊ฒฐ |
| ๋น ๋ฅธ ์์ | 3๋จ๊ณ ์ค์น โ ์ฐ๊ฒฐ โ ๊ตฌ์ฑ |
### ๐ง ์ด์ ๋ฐ ๋ฐฐํฌ
### ๐ง ๊ธฐ๋ฅ ๋ฐ ์ํคํ
์ฒ
| ๋ฌธ์ | ์ค๋ช
|
| ์ํคํ
์ฒ | ์์คํ
์ํคํ
์ฒ, ๋ฐ์ดํฐ ํ๋ฆ ๋ฐ ๋ด๋ถ ๊ตฌ์กฐ |
| ์์ถ ๊ฐ์ด๋ | 7๊ฐ์ง ์ต์
ํ์ดํ๋ผ์ธ: off / lite / standard / aggressive / ultra / RTK / stacked |
| RTK ์์ถ | ๋ช
๋ น ์ถ๋ ฅ ์์ถ, ํํฐ, ์ ๋ขฐ, ๊ฒ์ฆ, ์์ ์ถ๋ ฅ ๋ณต๊ตฌ |
| ์์ถ ์์ง | Caveman, RTK, ์คํํ ํ์ดํ๋ผ์ธ, ๋์๋ณด๋/API/MCP ์ธํฐํ์ด์ค |
| ์์ถ ๊ท์น ํ์ | Caveman ๋ฐ RTK ํํฐ์ฉ JSON ๊ท์น ํฉ ์คํค๋ง |
| ์์ถ ์ธ์ด ํฉ | ์ธ์ด ๊ฐ์ง ๋ฐ Caveman ๊ท์น ํฉ ์์ฑ |
| ๋ณต์๋ ฅ ๊ฐ์ด๋ | ํ๋ก ์ฐจ๋จ๊ธฐ, ์ฟจ๋ค์ด, ํ, ๋์ ํญ์ฃผ ๋ฐฉ์ง, TLS ์คํธํ |
| ์๋ ์ฝค๋ณด ์์ง | 16๊ฐ ์์ ์ ์ํ, ๋ชจ๋ ํฉ, ์๊ฐ ๋ณต๊ตฌ |
| ํ๋ก์ ๊ฐ์ด๋ | 3๋จ๊ณ ํ๋ก์ ์์คํ
, 1proxy ๋ง์ผํ๋ ์ด์ค, ๋ ์ง์คํธ๋ฆฌ CRUD |
| ๋ฌด๋ฃ ํฐ์ด | ํตํฉ ๋๋ ํฐ๋ฆฌ: ๋ฌธ์ํ๋ ๋ฐ๋ณต ํ 34๊ฐ / ๋ชฉ๋กํ๋ ๋ฌด๋ฃ ํฐ์ด ํญ๋ชฉ 465๊ฐ |
| ๊ธฐ๋ฅ ๊ฐค๋ฌ๋ฆฌ | ์คํฌ๋ฆฐ์ท์ ํฌํจํ ์๊ฐ์ ๋์๋ณด๋ ๋๋ฌ๋ณด๊ธฐ |
| ์ฝ๋๋ฒ ์ด์ค ๋ฌธ์ | ์ด๋ณด์ ์นํ์ ์ธ ์ฝ๋๋ฒ ์ด์ค ๋๋ฌ๋ณด๊ธฐ |
### ๐ค ํ๋กํ ์ฝ ๋ฐ API
### ๐ ํ๋ก์ ํธ ๋ฐ ํ์ง
# โญ ์ฃผ์ ๊ธฐ์ฌ์
> OmniRoute๋ ์ด์ ์ ์ธ ์คํ ์์ค ์ปค๋ฎค๋ํฐ๊ฐ ํจ๊ป ๋ง๋ค์ด ๊ฐ๋๋ค. ์ด๋ค์ ํ๋ก์ ํธ์ ํ์ง, ์์ ์ฑ ๋ฐ ๋๋ฌ ๋ฒ์์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๋ ๋ฐ์ด๋ ๊ธฐ์ฌ๋ฅผ ํด์์ต๋๋ค. **๊ฐ์ฌํฉ๋๋ค.**
### ๋ณํฉ๋ pull request ๊ธฐ์ค ์ธ๋ถ ๊ธฐ์ฌ์
| ์์ | ๊ธฐ์ฌ์ | ๋ณํฉ๋ PR | ~๋ณ๊ฒฝ๋ ์ค |
| 1 | maxmad64bis | 418 | 25,367,739 |
| 2 | HouMinXi | 295 | 13,557,796 |
| 3 | pacocartones | 222 | 81,551 |
| 4 | backryun | 210 | 270,562 |
| 5 | JxnLexn | 198 | 3,570,623 |
| 6 | oyi77 | 190 | 411,243 |
| 7 | KooshaPari | 151 | 5,972,314 |
| 8 | rdself | 145 | 80,663 |
| 9 | RaviTharuma | 123 | 500,065 |
| 10 | herjarsa | 88 | 230,872 |
| 11 | hartmark | 85 | 2,849,623 |
| 12 | jonlwheat2-gif | 68 | 69,097 |
| 13 | artickc | 62 | 43,502 |
| 14 | xiaoyaner0201 | 59 | 126,220 |
| 15 | chirag127 | 52 | 6,661 |
| 16 | xz-dev | 50 | 245,976 |
| 17 | woodsonl | 48 | 811,771 |
| 18 | rqzbeh | 46 | 151,229 |
| 19 | MumuTW | 43 | 28,166 |
| 19 | QuangBlue | 43 | 13,112 |
2026-11-03 03:01:19 UTC์ ํ์ฌ release/v3.8.53 ํ 05bc048d6c์ ๊ธฐ์ค์ผ๋ก ์ง๊ณ๋์์ต๋๋ค. ํ์ด์ง๊ฐ ๋งค๊ฒจ์ง GitHub GraphQL ์ง๊ณ์๋ ๋ณํฉ๋ PR 9,947๊ฑด์ด ํฌํจ๋์ด ์์ต๋๋ค. ์ด ์ค ์ ์ฅ์ ์์ ์๊ฐ 4,130๊ฑด, Dependabot์ด 240๊ฑด, ๊ธฐํ ๋ด/์ฑ์ด 6๊ฑด์ ์์ฑํ์ผ๋ฉฐ, 883๋ช
์ ๊ณ ์ ๊ธฐ์ฌ์๊ฐ 5,571๊ฑด์ ์ธ๋ถ PR์ ์์ฑํ์ต๋๋ค. โ๋ณ๊ฒฝ๋ ์คโ์ GitHub์ ์ถ๊ฐ ๋ฐ ์ญ์ ๋ฅผ ์๋ฏธํ๋ฉฐ ์์ฑ๋ ํ์ผ, lockfile, ์นดํ๋ก๊ทธ, ๋ฒ์ญ ๋ฐ ๋ฌธ์๋ฅผ ํฌํจํฉ๋๋ค. ์ด๋ ์์ฑ์๊ฐ ์ง์ ์์ฑํ LOC๊ฐ ์๋๋ผ ๋ณ๊ฒฝ๋์
๋๋ค. 53๊ฐ์ PR์ 500,000์ค์ ์ด๊ณผํ๋ GitHub diff๋ฅผ ๋ณด๊ณ ํฉ๋๋ค(์: ๋จ์ผ provider ์ถ๊ฐ์ธ #13399๋ ๋ณ๊ฒฝ๋ ํ์ผ์ 2,347๊ฐ ๋์ดํจ). ์ด๋ก ์ธํด ์์ ๋ช๋ช ํฉ๊ณ๊ฐ ๋ถํ๋ ค์ก์ต๋๋ค. ๋๋ฅ ์ ๊ฐ์ ์์๋ก ํ์๋ฉ๋๋ค.
### GitHub ๊ท์ ์ปค๋ฐ

Dizzle
๐ฅ GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 418๊ฐ
|

Bob.Hou
๐ฅ GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 294๊ฐ
|

Paijo
๐ฅ GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 229๊ฐ
|

Paco Cartones
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 222๊ฐ
|

backryun
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 202๊ฐ
|

Jan Leon
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 134๊ฐ
|

Ravi Tharuma
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 126๊ฐ
|

Markus Hartung
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 115๊ฐ
|

Randi
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 108๊ฐ
|

Chris
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 70๊ฐ
|

WebPerson
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 68๊ฐ
|

Koosha Paridehpour
๐
GitHub ๊ธฐ์ฌ๋ก ์ง๊ณ๋ ์ปค๋ฐ 68๊ฐ
|
2026-11-03 02:09:16 UTC์ ์ฌํ์ธ: release/v3.8.53 ๊ธฐ๋ณธ ๋ธ๋์น์ ๋ํด ์ ์ฅ์ Contributors API๊ฐ ๋ณด๊ณ ํ GitHub ๊ธฐ์ฌ ์ปค๋ฐ์
๋๋ค. API๋ 903๊ฐ์ ID(์ฌ์ฉ์ 429๋ช
, ๋ด 2๊ฐ, ์ต๋ช
472๊ฐ)๋ฅผ ๋ฐํํ์ผ๋ฉฐ, ์ด ํ์์๋ ์ ์ง ๊ด๋ฆฌ์, ๋ด ๋ฐ ์ต๋ช
ID๋ฅผ ์ ์ธํ๊ณ ๊ณต๋ ์์๋ฅผ ์ ์งํฉ๋๋ค. ์ด ๋ชฉ๋ก์ ์์ ๋ณํฉ๋ PR ์์ ๋ฐ ์๋์ Git ๋ฉํ๋ฐ์ดํฐ ์กฐ์ฌ ๊ฒฐ๊ณผ์๋ ๋ณ๊ฐ์
๋๋ค.
> ๐ ์ด๋ฌํ ๊ธฐ์ฌ์๋ค์ด ์ ๊ณตํ ๊ธฐ๋ฅ, ๋ฒ๊ทธ ์์ ๋ฐ ์ธํ๋ผ ๊ฐ์ ์ OmniRoute๋ฅผ ์์ ์ ์ด๊ณ ํ๋ถํ ๊ธฐ๋ฅ์ ๊ฐ์ถ ์ ํ์ผ๋ก ๋ง๋๋ **ํต์ฌ ์์**์
๋๋ค. ๋ชจ๋ ํ ๋ฆฌํ์คํธ, ๋ชจ๋ ํ
์คํธ ์ผ์ด์ค, ๋ชจ๋ i18n ๋ฒ์ญ ํ์ผ์ด ์ค์ํฉ๋๋ค. ์คํ ์์ค๋ ์ด์ ๊ฐ์ ์ฌ๋๋ค์ ์ํด ๋ง๋ค์ด์ง๋๋ค.
---
## ๐ ์คํฐ์
์๋น๋ก OmniRoute๋ฅผ ํ์ํด ์ฃผ์๋ ๋ชจ๋ ๋ถ๊ป ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ฌ๋ฌ๋ถ์ ๋ชจ๋ ํ์์ ํ๋ก์ ํธ๊ฐ ๋ฌด๋ฃ๋ก ๋
๋ฆฝ์ฑ์ ์ ์งํ๋ฉฐ ๊ณ์ ๋ฐ์ ํ๋ ๋ฐ ํฐ ํ์ด ๋ฉ๋๋ค.
โฆ ๊ทธ๋ฆฌ๊ณ ์ต๋ช
์ผ๋ก ๋จ๊ธฐ๋ฅผ ์ํ์๋ ๋ค๋ฅธ ๋ถ๋ค๊ป๋ ๊ฐ์ฌ๋๋ฆฝ๋๋ค ๐
๊ณต๊ฐ GitHub Sponsors ์ ๋ณด๋ 2026-10-18์ GitHub Sponsors GraphQL API๋ฅผ ํตํด ์ฌ๊ฒ์ฆ๋์์ต๋๋ค. ์ด 14๊ฑด ์ค ๊ณต๊ฐ ํ์์ 11๊ฑด(ํ์ฌ 6๊ฑด, ๊ณผ๊ฑฐ 5๊ฑด)์
๋๋ค. ์์ ํ์ฌ ํ์์ ํ์๋ GitHub์ isActive ์ํ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ๊ณผ๊ฑฐ์ ๊ณต๊ฐ ์ผํ์ฑ ํ์์์๊ฒ๋ ๊ณ์ ๊ฐ์ฌ๋ฅผ ํํ๋ฉฐ, ๋น๊ณต๊ฐ ์คํฐ์๋ ์ต๋ช
์ผ๋ก ์ ์ง๋ฉ๋๋ค. Ko-fi, Buy Me a Coffee, Liberapay, PIX ๋ฐ ์ํธํํ ํ์์ ๊ณต๊ฐ ์คํฐ์ ๊ธฐ๋ก์ด ์์ผ๋ฏ๋ก ํ์๋์ง ์์ต๋๋ค.
๐ ์คํฐ์๊ฐ ๋์ด ์ฃผ์ธ์ โ โ ๋ชจ๋ ํ์๊ธ์ OmniRoute๊ฐ ๋ฌด๋ฃ๋ก ๋
๋ฆฝ์ฑ์ ์ ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
## ๐ฅ 1,000๋ช
์ด์์ ๊ธฐ์ฌ์
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
2026-11-02์ ๋ผ์ด๋ธ release/v3.8.53 ํ 1c7135e0fb(7,972๊ฐ ์ปค๋ฐ)์ ๊ธฐ์ค์ผ๋ก ๊ฐ์ฌ๋์์ต๋๋ค: ์ ๊ทํ๋ ์ธ๊ฐ Git ID 1,074๊ฐ โ 759๊ฐ๋ ์ปค๋ฐ ์์ฑ์๋ก ํ์๋๊ณ (๋ฉ์ธํ
์ด๋ ํฌํจ), 315๊ฐ๋ ๋ช
์์ ์ธ Co-authored-by ํธ๋ ์ผ๋ฌ์๋ง ํ์๋ฉ๋๋ค. ์ด ์ง๊ณ์๋ .mailmap์ด ์ ์ฉ๋๋ฉฐ, ์ด๋ฉ์ผ ์ฃผ์๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ ๋น๊ตํฉ๋๋ค. ์ซ์ ํ์๊ณผ ์ผ๋ฐ GitHub noreply ์ฃผ์๋ ๋์ผํ ํธ๋ค์ ์ธ์ฝ๋ฉํ๋ ๊ฒฝ์ฐ์๋ง ํตํฉํ๊ณ , ๋ด/์์ด์ ํธ/์๋น์ค/์๋ฆฌ ํ์์ ID 29๊ฐ๋ ์ ์ธํ๋ฉฐ, ํ์ ์ด๋ฆ์ด ์ผ์นํ๋ค๋ ์ด์ ๋ง์ผ๋ก ์ผ๋ฐ ์ด๋ฉ์ผ ์ฃผ์๋ฅผ ํตํฉํ์ง ์์ต๋๋ค. 2026-08-24 ๊ฐ์ฌ์์๋ 639๋ช
์ด ๊ฒ์๋์์ผ๋ฉฐ, ํด๋น ๊ฐ์ฌ์ ๊ธฐ์ค ac02c5b42f์ ์ด ๋ฐฉ๋ฒ์ ๋ค์ ์คํํ๋ฉด 619๋ช
์ด๋ฏ๋ก, ์ฆ๊ฐ๋ ๋์จํด์ง ๋ฐฉ๋ฒ์ด ์๋๋ผ ์๋ก์ด ๊ธฐ์ฌ์๋ค์ ์ํ ๊ฒ์
๋๋ค.
### ๊ธฐ์ฌ ๋ฐฉ๋ฒ
1. ์ ์ฅ์๋ฅผ ํฌํฌํฉ๋๋ค
2. **ํ์ฑ** `release/vX.Y.Z` ํ์์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค(`main`์ด ์๋) โ [๋ธ๋์น ๋ฐ ๋ฆด๋ฆฌ์ค ๋ชจ๋ธ](docs/ops/BRANCHING_MODEL.md) ์ฐธ์กฐ
3. ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค(`git checkout -b feat/amazing-feature`)
4. ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค(`git commit -m 'feat: add amazing feature'`)
5. ๋ธ๋์น์ ํธ์ํฉ๋๋ค(`git push origin feat/amazing-feature`)
6. **base = ํด๋น `release/vX.Y.Z` ๋ธ๋์น**๋ก Pull Request๋ฅผ ์ฝ๋๋ค
์์ธํ ์ง์นจ์ [CONTRIBUTING.md](CONTRIBUTING.md)๋ฅผ ์ฐธ์กฐํ์ธ์.
### ์ ๋ฒ์ ๋ฆด๋ฆฌ์ค
```bash
# ๋ฆด๋ฆฌ์ค๋ฅผ ์์ฑํฉ๋๋ค โ npm publish๊ฐ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## ๐ ์คํ
## ๐ StarMapper
## ๐ ๊ฐ์ฌ์ ๋ง
OmniRoute๋ ๊ฑฐ์ธ๋ค์ ์ด๊นจ ์์ ์ ์์ต๋๋ค. **[9router](https://github.com/decolua/9router)**์ ํฌํฌ์ด์ Go ํ๋ก์ ํธ **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**์ TypeScript ํฌํธ๋ก ์์ํ์ผ๋ฉฐ, ์ดํ ์๋์ ๋ชจ๋ ํ์ ์์คํ
์ ๋จผ์ ์ด ๊ธธ์ ๊ฐ์ฒํ ์คํ ์์ค ํ๋ก์ ํธ์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค. ๊ฐ๊ฐ์ ํ๋ก์ ํธ๋ OmniRoute์ ๊ตฌ์ฒด์ ์ธ ํ ๋ถ๋ถ์ ํ์ฑํ์ต๋๋ค. ์ด ๋ชจ๋ ํ๋ก์ ํธ์ ๊ฐ์ฌ์ ๋ง์์ ์ ํฉ๋๋ค. ๐
> โญ ๋ณ ๊ฐ์๋ 2026๋
11์ 3์ผ GitHub REST API์์ ํ์ธํ์ต๋๋ค โ ์ด ํ๋ก์ ํธ๋ค์ ๋ณ์ ๋๋ฌ ์ฃผ์ธ์. ๋ณ ๊ฐ์๋ ํด๋น ๋ ์ง์ ์ ํํ ์ค๋
์ท์ด๋ฉฐ ์์ฐ์ค๋ฝ๊ฒ ๋ณ๋๋ฉ๋๋ค.
### ๐งฌ ๊ณ๋ณด ๋ฐ ๊ฒ์ดํธ์จ์ด
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| 9router | 31,861 | ์ด ํฌํฌ๊ฐ ๊ธฐ๋ฐ์ผ๋ก ์ผ์ ์๋ณธ ํ๋ก์ ํธ๋ก, ์ฌ๊ธฐ์ ๋ฉํฐ๋ชจ๋ฌ API์ ์์ ํ TypeScript ์ฌ์์ฑ์ ์ถ๊ฐํ์ต๋๋ค. |
| CLIProxyAPI | 57,329 | ์ด JavaScript / TypeScript ํฌํธ์ ์๊ฐ์ ์ค Go ๊ตฌํ์
๋๋ค. |
| LiteLLM | 62,580 | ๊ณต๊ฐ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ์
์ด ๋น์ฉ ์ถ์ ๋๊ธฐํ์ ์ฌ์ฉ๋๊ณ , ํ๋ก๋ฐ์ด๋ ์ ๊ทํ ๋ชจ๋ธ์ด ๋ผ์ฐํ
์ค๊ณ์ ๋ฐ์๋ AI ๊ฒ์ดํธ์จ์ด์
๋๋ค. |
| codex-chatgpt-web | 15,435 | ๋ธ๋ผ์ฐ์ ์ธ์
, ์๋ต ํ๋ ์ด๋ฐ, ์ฌ์ฉ๋ ๋ฐ ์น ๊ฒ์ ์ด๋ํฐ๋ฅผ ํฌํจํ์ฌ, ๋ฒค๋๋ง๋ ChatGPT Web โ Codex Responses ๋ธ๋ฆฌ์ง์ MIT ์์ค๋ฅผ ์ ์ฉํ์ต๋๋ค. |
| free-claude-code | 65,966 | ์คํธ๋ฆผ ๋ณต๊ตฌ, no-thinking ๋ณ์นญ, ํด๋ฐฑ ์น ๊ฒ์, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์ ํ, ๋ก๊ทธ ๋น์๋ณํ ๋ฐ ๊ฐํ๋ ๋ฐ์ฒ ํ๋ฆ์ ํจํด์ ํฌํ
ํ์ต๋๋ค. |
| composer-api | 347 | Cursor Composer์ ๋๊ตฌ ์ ํ, ์ถ๋ ฅ ์ ์ฝ ๋ฐ ๋๊ตฌ ์ปค๋ฐ ํจํด์ ๋ค์ดํฐ๋ธ Cursor ์คํ๊ธฐ์ ์ ์ฉํ์ต๋๋ค. |
| codex-multi-auth | 561 | Codex OAuth ์ฌ์ธ์ฆ์ ์ ๊ท ๋ก๊ทธ์ธ ๋ฐ ๋ฆฌํ๋ ์ ํ ํฐ ์ํ ํจํด์ ํฌํ
ํ์ต๋๋ค. |
| opencode-anthropic-auth | 562 | Claude Code ํธํ ๋ณํ ๊ธฐ๋ณธ๊ฐ๊ณผ ๊ฒฐ์ ํค๋ ๋์์ OmniRoute์ ๊ตฌ์ฑ ๊ธฐ๋ฐ ๋ธ๋ฆฌ์ง์ ์ผ๋ฐํํ์ต๋๋ค. |
| grok2api-merged | 2 | Grok ๋ชจ๋ธ ๋งคํ, ๊ฐ์ง TypeError Statsig ์์ฑ๊ธฐ, ์์ฒญ ๋ฐ ๋๋ฐ์ด์ค ๊ธฐ๋ณธ๊ฐ, NDJSON ์๋ต ํ๋ก์ธ์๊ฐ OmniRoute์ Grok Web ์คํ๊ธฐ์ ์ค์ง์ ์ผ๋ก ์ ์ฉ๋์์ต๋๋ค. |
| TQZHR/grok2api | 707 | grok2api-merged์ ์ฃผ์ ์ ์ด ์ฝ๋ ์์ค์ด๋ฉฐ, ๋ชจ๋ธ, ํค๋, ํ์ด๋ก๋, Statsig ๋ฐ ํ๋ก์ธ์ ๊ตฌํ์ด Grok Web ๊ณ๋ณด์ ๋ณด์กด๋์ด ์์ต๋๋ค. |
| chenyme/grok2api | 7,874 | Grok ํ์ด๋ก๋ ๋ฐ ๋๋ฐ์ด์ค ๊ธฐ๋ณธ๊ฐ, Statsig ์์ฑ๊ธฐ, ๊ทธ๋ฆฌ๊ณ TQZHR๊ณผ grok2api-merged๋ฅผ ๊ฑฐ์ณ ์ ํด์ง result.response ํ๋ก์ธ์์ ๊ธฐ๋ฐ MIT ์์ค์
๋๋ค. |
| grok2api-pro | 27 | ํ๋ก์ ํ ๊ณ์ธต์ ๋ํด grok2api-merged๊ฐ ์ถ์ฒ๋ก ๋ช
์ํ ์ ์ด ์์ค์
๋๋ค. OmniRoute๋ ํด๋น ๊ณ๋ณด ๊ณ ์ง๋ฅผ ๋ณด์กดํ์ง๋ง, ์ ํ๋ Grok Web ์คํ๊ธฐ์ ํ๋ก์ ํ์ ํฌํ
ํ๋ค๊ณ ์ฃผ์ฅํ์ง๋ ์์ต๋๋ค. |
| GrokProxy | 52 | ์ฟ ํค ์ธ์ฆ ๋ฐฉ์์ Grok ํ๋ก์์ result.response.token ์คํธ๋ฆฌ๋ฐ ํจํด์ด OmniRoute์ Grok Web ์ ์ก ๊ณ์ธต์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| GrokBridge | 5 | ์๋ณธ Grok Web ๊ตฌํ์ HTTP/๋ธ๋ผ์ฐ์ ์
์คํธ๋ฆผ ์ค๊ณ์ ์ฐธ๊ณ ํ์ต๋๋ค. ์ง์ ์ ์ธ HTTP ๊ฒฝ๋ก๋ GrokProxy์์ ํ์๋์์ผ๋ฏ๋ก ๋
๋ฆฝ์ ์ธ ์ฝ๋ ํฌํธ๋ ์ฃผ์ฅํ์ง ์์ต๋๋ค. |
### ๐๏ธ ์ปจํ
์คํธ ๋ฐ ํ ํฐ ์์ถ โ ์์ง
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| Caveman | 116,957 | ๋ฐ์ด๋ด ๋ฌธ๊ตฌ์ธ "์ ๋ง์ ํ ํฐ์ ์ฐ์ง? ์ ์ ํ ํฐ์ผ๋ก๋ ๋๋๋ฐ" ํ๋ก์ ํธ โ ๋๊ตด์ธ ๋งํฌ ์ฒ ํ์ด ํ์ค ์์ถ ๋ชจ๋์ 30๊ฐ ์ด์์ ๋ถํ์ํ ํํ ์ ๊ฑฐ/์์ถ ๊ท์น์ ๊ธฐ๋ฐ์ด ๋์์ต๋๋ค. |
| RTK โ Rust Token Killer | 85,350 | ๊ณ ์ฑ๋ฅ ๋ช
๋ น ์ถ๋ ฅ ์์ถ โ RTK ์์ง, JSON ํํฐ DSL, ์์ ์ถ๋ ฅ ๋ณต๊ตฌ, ๊ทธ๋ฆฌ๊ณ RTK โ Caveman ์คํ ํ์ดํ๋ผ์ธ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| headroom | 78,672 | ๋๋๋ฆด ์ ์๋ ์ปจํ
์คํธ ์์ถ(SmartCrusher) โ headroom ์์ง๊ณผ ccr ๊ฒ์ ๋ง์ปค ํจํด์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| LLMLingua | 6,797 | ํ๋กฌํํธ ์์ถ ์ฐ๊ตฌ(LLMLingua / LLMLingua-2) โ ๋น๋๊ธฐ, ์ฝ๋ ์์ , ์คํจ ์ ์๋ณธ ๊ฐ๋ฐฉ ๋ฐฉ์์ llmlingua ์์ง์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| llmlingua-2-js | 33 | LLMLingua ์์ง์ ์์ปค ์ค๋ ๋ ๋ฐฑ์๋๋ก ์ฌ์ฉ๋๋ JS/ONNX ํฌํธ(MobileBERT / XLM-RoBERTa)์
๋๋ค. |
| Troglodita | 50 | PT-BR ํ ํฐ ์์ถ โ ๋ธ๋ผ์ง ํฌ๋ฅดํฌ๊ฐ์ด ๋ฌธ๋ฒ์ ๋ง์ถ ๊ตฐ๋๋๊ธฐ ํํ ์ถ์ ๋ฐ ๋ถํ์ํ ํํ ์ ๊ฑฐ ๊ธฐ๋ฅ์ผ๋ก pt-BR ์ธ์ด ํฉ์ ์ง์ํฉ๋๋ค. |
| ponytail | 182,929 | ๋ฐ์ด๋ด "๊ฒ์ผ๋ฅธ ์๋์ด ๊ฐ๋ฐ์" YAGNI ์ฝ๋ ์คํฌ โ less-code ์ถ๋ ฅ ์คํ์ผ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. ์ด๋ Caveman์ ๊ฐ๊ฒฐํ ๋ฌธ์ฒด์ ๊ฐ์ ์ถ๋ ฅ ์ถ์์, ๊ฐ์ฅ ์์ ์์
๊ฐ๋ฅํ ๋ณ๊ฒฝ์ ์ ๋ํด _์์ฑ๋_ ์ฝ๋๋ฅผ ์ค์
๋๋ค. |
| i-have-adhd | 59,838 | ํ๋ ์ฐ์ ์ ADHD ์นํ์ ์๋ต ์คํ์ผ์ ๋ค์ฏ ๊ฐ ์ธ์ด์ ๊ฑธ์น OmniRoute์ ๊ฐ๊ฒฐํ ์ถ๋ ฅ ์คํ์ผ์ ์ ์ฉํ์ต๋๋ค. |
### ๐งฉ ์ปดํฉํธ ํ์, ํ ํฐ ์ฐ๊ตฌ ๋ฐ ์ฝ๋ ์ธ์ ๋๊ตฌ
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| TOON | 25,602 | ํ ํฐ ์งํฅ ๊ฐ์ฒด ํ๊ธฐ๋ฒ(Token-Oriented Object Notation) โ ์ด ๊ธฐ๋ฐ์ ํค๋+ํ ๋ชจ๋ธ์ด ํ ํ์ ์์ถ ๋จ๊ณ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| GCF โ Graph Compact Format | 61 | ์ปดํฉํธํ ๊ทธ๋ํ ํ์๊ณผ ๋ฒ์ฉ ํ๋กํ ์ค๊ณ๊ฐ OmniRoute์ ํ ํ์ ์์ถ ๋ฐ Headroom ์ฝ๋ฑ ํ์์ ๋ฐ์๋์์ต๋๋ค. |
| gcf-typescript | 4 | MIT TypeScript ๊ตฌํ์ Headroom ๋ฒ์ฉ ํ๋กํ ์ฝ๋ฑ์ผ๋ก ์ง์ ๋ฒค๋๋งํ๊ณ ํ์ฅํ์ต๋๋ค. |
| token-optimizer-mcp | 566 | Brotli/SQLite ์บ์ + ์ธ์
๋ณ ์ปจํ
์คํธ ๋ธํ โ session-dedup ์์ง์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| token-savior | 1,203 | Bash ์ถ๋ ฅ ์์ถ + MCP ํ๋กํ โ ์์ถ ์ค๋จ ๊ท์จ๊ณผ MCP ๋๊ตฌ ๋งค๋ํ์คํธ ์ถ์์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| token-saver | 162 | ์ฝํ
์ธ ์ธ์ ๋ฐฉ์์ ํ์ผ ํ์๋ณ ์ถ๋ ฅ ์์ถ๊ณผ ์คํจ ์ธ์งํ ์ค๋จ โ ํ์๋ณ ๋์คํจ์น์ ์ต์ ์ด๋ ๋ฏธ๋ฌ ์ ๊ฑด๋๋ฐ๊ธฐ๋ฅผ ๊ฒ์ฆํ์ต๋๋ค. |
| token-optimizer | 2,853 | "์ ๋ น ํ ํฐ ์ฐพ๊ธฐ" โ ์คํ๋ก๋ + ๋ณต๊ตฌ ๊ฐ๋ฅํ ํธ๋ค ํจํด์ด CCR ์คํ๋ก๋ ๊ตฌ์์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| TokenMizer | 34 | ์ธ์
๊ทธ๋ํ + ํด ๊ฐ ์ค ์ค๋ณต ์ ๊ฑฐ ์ฒญ์ฌ์ง์ด session-dedup ์ค๊ณ์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| OmniCompress | 3 | Rust ์ด ๊ธฐ๋ฐ JSON + ์ฝํ
์ธ ์ฃผ์ ๊ธฐ๋ฐ ๊ฒ์ + ๋ฉ์์ง ๊ฐ ์ค๋ณต ์ ๊ฑฐ โ headroom/ccr/session-dedup ์์ง ์ค๊ณ์ ์บ์ ์์ ์ ์ธ "์์ถ ํ์์ ์์น์ ๋ฌด๊ดํ๋ค"๋ ๋ถ๋ณ์์ ๊ฒ์ฆํ์ต๋๋ค. |
| mcp-compressor | 140 | MCP ๋๊ตฌ ์คํค๋ง/์ค๋ช
์์ถ โ MCP ๋๊ตฌ ๋งค๋ํ์คํธ์ ํญ๋ชฉ ์ ์ถ์์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| RepoMapper | 218 | Aider ์คํ์ผ์ ์ ์ฅ์ ๋งต ์์ ์ง์ โ ์ ์ฅ์ ๋งต ๋ฐ ๊ฒ์ ์์ ์ง์ ํ์์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| quiet-shell-mcp | 4 | MCP๋ฅผ ํตํ ์ ์ธ์ ์
ธ ์ถ๋ ฅ ์ถ์ โ ์ ์ธ์ bash ์ถ๋ ฅ ์์ถ์ ๊ฒ์ฆํ์ต๋๋ค. |
| ts-morph | 6,222 | TypeScript Compiler API ๋๊ตฌ ํคํธ โ ๋ฌธ์์ด, ํ
ํ๋ฆฟ ๋ฐ ์ ๊ท์ ๋ฆฌํฐ๋ด์ ๋ณด์กดํ๋ ํ์ ๊ธฐ๋ฐ ์ฃผ์ ์ ๊ฑฐ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
### ๐ง ๋ฉ๋ชจ๋ฆฌ ๋ฐ RAG
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| Mem0 | 68,294 | ๋ฒ์ฉ ๋ฉ๋ชจ๋ฆฌ ๊ณ์ธต โ ํ๋ก์๋ฅผ ์ฐ๊ธฐ/์ฝ๊ธฐ ๊ฒฝ๊ณ๋ก ์ฌ์ฉํ๋ ๋ชจ๋ธ์ด ๋น์ฌ์ ๋ฉ๋ชจ๋ฆฌ ์ํคํ
์ฒ์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| Letta (MemGPT) | 25,321 | ๊ณ์ธตํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ์ํ ์ ์ฅ ์์ด์ ํธ โ ๋น์ฌ์ Context Control & Recovery (CCR) ๊ณ์ธต ๋ชจ๋ธ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| WFGY | 1,804 | ๋ฐ๋ณต์ ์ผ๋ก ๋ฐ์ํ๋ 16๊ฐ์ง RAG/LLM ์ฅ์ ๋ชจ๋์ ๋ํ ProblemMap ๋ถ๋ฅ ์ฒด๊ณ โ ๋น์ฌ์ ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋์์ ๊ณต์ ํ๋ ์ฉ์ด ์ฒด๊ณ์
๋๋ค. |
### ๐ฐ๏ธ ํธ๋ํฝ ๊ฒ์ฌ, MITM ๋ฐ ํฌ๋ช
ํ๋ก์
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| llm-interceptor | 81 | ์ฝ๋ฉ ์ด์์คํดํธ โ LLM ํธ๋ํฝ์ MITM ๊ฐ๋ก์ฑ๊ธฐ/๋ถ์์ ์ด๊ธฐ Traffic Inspector ์๊ตฌ ์ฌํญ์ ์ํฅ์ ์ฃผ์์ต๋๋ค. ์ด์ ์ ๋์ถ๋ ๋ค ๊ฐ์ง ๋ชจ๋ โ SSE ๋ณํฉ, ๋ํ ์ ๊ทํ, ์ํฌ๋ฆฟ ๋ง์คํน ๋ฐ ํค๋ ์ ์ โ ์ ๊ณต๊ฐ ํ๋กํ ์ฝ ํ์ค์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋
๋ฆฝ์ ์ธ ํด๋ฆฐ๋ฃธ ๊ตฌํ์ผ๋ก ๋์ฒด๋์์ต๋๋ค. ๋ ํธ์คํธ ํจ์ค์ค๋ฃจ ํ๋ฉด(passthrough.ts ๋ฐ _internal/bypass.cjs)์ OmniRoute ๋ด๋ถ์์ ๋
๋ฆฝ์ ์ผ๋ก ๋ถ๋ฅ๋ ๊ตฌํ์ผ๋ก ๋จ์ ์์ผ๋ฉฐ, ํด๋น ๋์ฒด ์์
์ ์ผ๋ถ๋ก ๋ค์ ์์ฑ๋์ง ์์์ต๋๋ค. |
| ProxyBridge | 6,978 | ํ๋ก์ธ์ค๋ณ ํฌ๋ช
ํ๋ก์ ๋ผ์ฐํ
โ ์ฅ์ ์์ MITM ์ข
๋ฃ, ์์ผ ์ ํด ์๊ฐ ์ด๊ณผ, /proc ํ๋ก์ธ์ค ์ดํธ๋ฆฌ๋ทฐ์
๋ฐ TPROXY ์บก์ฒ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
### ๐ ๋ชจ๋ธ ๋ฐ์ดํฐ, ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฐ UI
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| models.dev | 7,486 | AI ๋ชจ๋ธ ์ฌ์, ๊ฐ๊ฒฉ ๋ฐ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค โ ๋น์ฌ์ ๋ชจ๋ธ ์นดํ๋ก๊ทธ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋๊ธฐํ๋ฉ๋๋ค. |
| React Flow / xyflow | 38,874 | ์ค์๊ฐ Compression Studio ๋ฐ Combo/Routing Studio๋ฅผ ๊ตฌ๋ํ๋ ๋
ธ๋ ๊ธฐ๋ฐ ๊ทธ๋ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. |
| LangGraph | 44,349 | LangGraph Studio์ ์ค์๊ฐ ์ํฌํ๋ก ๊ทธ๋ํ ์๊ฐํ๋ ๋น์ฌ Studio์ ์ค์๊ฐ ์บ์ค์ผ์ด๋ ๋ณด๊ธฐ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| Langfuse | 36,907 | ํธ๋ ์ด์ค โ ์คํฌ โ ์์ฑ์ผ๋ก ์ด์ด์ง๋ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ชจ๋ธ์ด ๋น์ฌ์ Compression Studio ์ํฐํด ๊ตฌ์ฑ์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| Kiali | 3,647 | Istio ์๋น์ค ๋ฉ์ ๊ด์ธก ๊ฐ๋ฅ์ฑ โ Routing/Combo Studio์ ์ํท ๋ธ๋ ์ด์ปค ๋ฐฐ์ง์ ์ค๋ฅ ์ฃ์ง ์๊ฐํ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| lobe-icons | 2,666 | ๋์๋ณด๋ ์ ๋ฐ์ ํ๋ก๋ฐ์ด๋ ์์ด์ฝ์ผ๋ก ํ์๋๋ AI/LLM ๋ธ๋๋ ๋ก๊ณ ๋ฅผ ์ ๊ณตํฉ๋๋ค. |
| flag-icons | 12,499 | README ์ธ์ด ์ ํ๊ธฐ์์ ์ฌ์ฉํ๋ MIT ๋ผ์ด์ ์ค SVG ๊ตญ๊ธฐ๋ฅผ ์ ๊ณตํฉ๋๋ค. |
### ๐ก๏ธ ๋ณด์
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| awesome-secure-defaults | 723 | ๋ณด์ ๊ธฐ๋ณธ๊ฐ์ ์ ๊ณตํ๋ ์์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ชฉ๋ก์ผ๋ก, ๋น์ฌ์ ๋ณด์ ์ ํ(Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink)์ ์๋ดํฉ๋๋ค. |
### ๐งญ ๋ณด์ ๋๊ตฌ
| ํ๋ก์ ํธ | โญ | OmniRoute์ ์๊ฐ์ ์ค ๋ฐฉ์ |
| ClawRouter | 6,649 | ์์ฒญ ์ค๋ณต ์ ๊ฑฐ, ๊ธด๊ธ ๋ฌด๋น์ฉ ํด๋ฐฑ, ํ๋ฌ๊ทธํ Auto-Combo ์ ๋ต ๋ฐ ๋ค๊ตญ์ด ์๋ ๋ถ๋ฅ์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| Antigravity-Manager | 32,785 | ๊ณ์ ์ธ์ ๋ชจ๋ธ ์ฌ๋งคํ, ์คํ ํ์ผ ๊ฒฝ๋ก ๊ฒ์ฆ ๋ฐ ํ๋ ๋ ์ด๋ธ ๋์์ด OmniRoute์ Antigravity ๋ฐํ์์ ์ํฅ์ ์ฃผ์์ต๋๋ค. |
| vscode-antigravity-cockpit | 4,852 | ๊ฐ๊ฒฐํ ํ ๋น๋ ์ด๊ธฐํ ์นด์ดํธ๋ค์ด ํ์์ด OmniRoute์ ํด๋น ํ๋ก๋ฐ์ด๋ ์ ํ ํ์ ๋ฐฉ์์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| AionUi | 33,996 | ACP ํตํฉ ๊ธฐ๋ฅ์ด ์ค์น๋ CLI ์์ด์ ํธ์ ์๋ ๊ฐ์ง์ ์๊ฐ์ ์ฃผ์์ต๋๋ค. |
| CodexBar | 22,955 | Grok Build ํ ๋น๋ ํ๋ฉด์ ์๋ณํ์ผ๋ฉฐ, ์ดํ OmniRoute๊ฐ ๋ผ์ด๋ธ ์์ด์ด ํ์์ ๋
๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ๊ณ ์์ ํ์ต๋๋ค. |
## ๐ ๋ผ์ด์ ์ค
MIT ๋ผ์ด์ ์ค - ์์ธํ ๋ด์ฉ์ [LICENSE](LICENSE)๋ฅผ ์ฐธ์กฐํ์ธ์.
---
**[โฌ ๋งจ ์๋ก ๋์๊ฐ๊ธฐ](#-omniroute)** ยท ์คํ ์์ค AI ์ปค๋ฎค๋ํฐ๋ฅผ ์ํด โค๏ธ๋ก ์ ์๋์์ต๋๋ค.
Diego Souza ์ ์ ยท OmniRoute v3.8.54 ยท Node โฅ22.22.2 ยท MIT ๋ผ์ด์ ์ค ยท omniroute.online