> **프로바이더 계정을 직접 가져오세요.** 이는 별도로 자격이 되는 서드파티 무료 티어 전반에 걸친 추정 합계이며, OmniRoute가 부여하는 토큰이 아닙니다. 가입하고, 필요한 경우 자격 증명을 발급받고, 사용할 수 있는 프로바이더를 연결하세요. 각 프로바이더는 자체 한도, 가용성, 약관을 통제합니다.
>
> 무료 티어를 손으로 쌓는 것은 고통스럽습니다 — 수십 개의 SDK, 수십 개의 속도 제한, 그리고 실제로 얼마나 있는지 알 수 없습니다. OmniRoute는 **34개의 반복 풀 키에 걸친 467개의 무료 티어 항목**을 카탈로그화하고, **공개된 양의 월간 예산이 있는 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)**
## 📈 게이트웨이는 계속 성장합니다
```bash
# 프로바이더를 연결한 후 Dashboard → Endpoints에서 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.53**의 주요 변경 사항입니다. 전체 변경 이력은 [`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** — 에이전트 플릿으로 들어오는 A2A 위임, Agent Card의 Conductor 스킬, Faro 푸시투토크 음성 채팅이 포함된 대시보드 패널을 제공합니다. → [A2A 서버](docs/frameworks/A2A-SERVER.md)
- **🛂 적응형 수락 제어 및 과부하 보호** — 부하가 큰 채팅 요청은 503을 반환하는 대신 대기열에 들어가며, 연결별 원자적 RPM 롤링 리스를 사용합니다. → [복원력 가이드](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ 표준 `/v1/models` 정렬** — 각 공급자마다 연속된 하나의 공급자별 그룹 블록을 구성하며(콤보 우선 고정), 모든 카탈로그 소스에서 안정적인 순서를 유지합니다. → [API 레퍼런스](docs/reference/API_REFERENCE.md)
- **🗜️ 압축 강화** — 기본적으로 활성화되는 인플레이션 가드, DE / FR / JA + 중국어(문언문)용 Caveman 팩, Gradle 및 .NET용 RTK 필터를 제공합니다. → [압축](docs/compression/COMPRESSION_ENGINES.md)
- **💸 정확한 정액제 비용** — 구독 / 코딩 요금제 공급자의 비용 분석에는 **$0**으로 표시되며, 예산, 할당량 및 라우팅에서는 계속 추정값을 사용합니다. → [API 레퍼런스](docs/reference/API_REFERENCE.md)
- **⚖️ Quota-Share 라우팅** — 공유 계정의 할당량을 풀링된 키 전체에 공정하게 분배하며, 유휴 몫을 빌려줄 수 있도록 작업 보존 방식으로 동작합니다. → [복원력 가이드](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 단일 명령 CLI/에이전트 설정** — 등록된 `setup-*` 명령 15개를 제공합니다. `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`)과 VPS 설치용 `antigravity` OAuth 도우미를 사용해 원격 OmniRoute를 제어합니다. → [원격 모드](docs/guides/REMOTE-MODE.md)
- **🧭 더 스마트한 자동 라우팅** — `auto/:` 콤보, **Fusion**(모델 패널 + 판정 모델), 작업 인식 라우팅, 요청별 모델 / 모드 / 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와 신뢰 저장소 설치 프로그램을 제공합니다. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 모든 곳에서 제공되는 비용 텔레메트리** — 모든 엔드포인트에 `X-OmniRoute-*` 비용/사용량 헤더, 캐시 HIT 절감액 헤더, 키별 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 신뢰 설정, 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 등을 지원하며, **375개 공급자 카탈로그**를 새롭게 개편했습니다. → [공급자](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. → [Embedded Services](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 기본 제공되는 것들** — 플러그인 프레임워크 + 마켓플레이스, Omni/Agent/GitHub 스킬 프레임워크, Obsidian vault 통합(22개 MCP 도구), OpenAI 호환 Batch & Files API, 시맨틱 응답 캐시, 리더보드가 포함된 게이미피케이션, ACP 에이전트 검색(15개 내장 에이전트), BigQuery로의 예약 로그 내보내기, `auto/chaos` 병렬 멀티 모델 팬아웃, Telegram 봇 브리지, 인앱 버전 관리자 및 LMArena-ELO 무료 제공자 순위. → [Docs](docs/README.md)
## 🤖 호환되는 CLI 및 코딩 에이전트
> 하나의 설정 — `http://localhost:20128/v1` — 만으로 **모든** AI IDE 또는 CLI를 무료 및 저비용 모델에서 실행할 수 있습니다.
+ 다음 도구와도 호환됩니다 · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · 모든 OpenAI 호환 도구
📖 전체 37개 도구(27개 CLI Code + 10개 CLI Agent)의 도구별 설정 → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 OpenCode 플러그인 → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**단 하나의 명령으로 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"
# 또는 provider+model을 대화형으로 선택하고 도구 자체의 구성을 작성하세요.
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)
## 🌐 375개 AI 프로바이더 — 153개 카탈로그 무료 표시
> 정식 채팅, 미디어, 검색, 로컬, 클라우드 에이전트 및 시스템 컬렉션 전반에 걸쳐 **375개의 등록된 프로바이더**가 있으며, 그중 **153개가 `hasFree: true` 검색 메타데이터를 보유**하고 있습니다. 채팅 모델 레지스트리는 **239개 프로바이더 / 3,059개의 서로 다른 프로바이더-모델 쌍 / 1,475개의 원시 모델 ID**를 포함합니다. 별도의 무료 예산 카탈로그에는 **467개의 모델별 행**, **34개의 반복 풀**, **51개의 반복/키 없는 영구 무료 프로바이더**가 있습니다. 이들은 설계상 서로 다른 분모이며, 정의와 풀 중복 제거 계산은 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) 및 [Free Tiers](docs/reference/FREE_TIERS.md)에 있습니다.
### 🏢 모든 주요 연구소 — 단일 엔드포인트를 통해
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…그리고 350개 이상 — 모든 아이콘은 대시보드의 프로바이더 카탈로그에서 실시간으로 확인됩니다. 📖 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 영구 무료 — $0, 카드 불필요
OpenCode Zen DeepSeek V4, Nemotron 3 토큰 제한 없음
Kilo Code 자동 라우터, Tencent Hy3 영구 무료
Requesty GPT-OSS 120B, Nemotron 영구 무료
SiliconFlow DeepSeek V3.2 / R1 무료 티어
Z.AI GLM GLM-4.7 / 4.5-Flash 영구 무료
Baidu ERNIE ERNIE 4.0 영구 무료
Qoder AI Qwen3-Max, Kimi-K2 무제한 무료
Pollinations GPT, Llama, Claude 키 불필요
Cloudflare AI 50개 이상 모델 10K 뉴런/일
NVIDIA NIM GLM, MiniMax 무료 ~40 RPM
Cerebras GLM 4.7, GPT-OSS 1회 $5 크레딧, 카드 필요
OpenRouter :free 모델 +$10 → RPM 상향
📖 전체 기계 판독 가능 카탈로그 → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ OmniRoute 실행 환경 — 어디서나
> 같은 앱, 내 컴퓨터, 내 규칙. 전역 npm 설치부터 Termux를 통한 **휴대폰** 실행까지.
플랫폼
설치
주요 특징
📦 npm (전역)
npm install -g omniroute
명령어 하나로 모든 OS에서 실행
🐳 Docker
docker run … diegosouzapw/omniroute
멀티 아키텍처 AMD64 + ARM64
🖥️ 데스크톱 (Electron)
npm run electron: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시간 연중무휴 실행
📲 PWA
"홈 화면에 추가"
전체 화면, 오프라인, 브라우저에서 설치 가능
🧩 OpenCode 플러그인
@omniroute/opencode-provider
네이티브 OpenCode 통합
🤖 VS Code Copilot Chat
OmniCopilot 확장 프로그램 설치
네이티브 Copilot Chat 선택기에 모든 OmniRoute 모델 표시 — stable 및 Insiders
### 🧩 신규: 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**를 차례로 여세요.
편집기 내에서 **확장 프로그램** 보기를 열고 **"OmniRoute"**를 검색한 다음 **설치**를 클릭하세요.
두 스토어 모두 동일한 방식으로 작동합니다. 소스, 이슈 및 게시 실행 지침서는
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)에서 확인할 수 있습니다.
📖 [VS Code Copilot Chat 가이드](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에 모자만 씌운 셈입니다. 🎩
기능
작동 방식
🟢 서버 감독
omniroute serve를 실행하고, 이미 실행 중인 인스턴스가 있으면 중복 실행하지 않고 해당 인스턴스를 사용합니다
📊 실시간 사용량을 한눈에 확인
공급자 할당량 막대, 초기화 카운트다운이 포함된 Claude 세션/주간 한도, 30일 비용 내역
🔄 제자리에서 자동 업데이트
단계적 설치, 원자적 교체, 실패 시 롤백 — 항상 최신 릴리스 유지
🚀 로그인 시 시작
선택적으로 로그인 시 실행 가능하며, 트레이에만 표시되고 Dock 아이콘은 없습니다
🩺 진단 및 로그
한 번의 클릭으로 진단 실행 및 서버 로그 확인
```sh
brew install --cask zoispag/tap/omniroute-tray
```
다운로드를 선호하시나요? 릴리스에서 최신 .dmg를 받으세요. 소스, 이슈 및 빌드
문서는 zoispag/omniroute-tray에서 확인할 수 있습니다.
💛 @zoispag의 커뮤니티 프로젝트이며, 공식 OmniRoute 릴리스가 아닙니다.
> 서버를 넘어, 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%
혼합 프롬프트 + 도구 로그
**실제 예시 — 표준 모드:**
> **변경 전 (69 토큰):** _"React 컴포넌트가 다시 렌더링되는 이유는 아마도 렌더 사이클마다 새 객체 참조를 만들고 있기 때문일 것입니다. 인라인 객체를 prop으로 전달하면 React의 얕은 비교가 매번 이를 다른 객체로 보기 때문에 재렌더가 트리거됩니다. useMemo를 사용해 객체를 메모이제이션하는 것을 권장합니다."_
>
> **변경 후 (19 토큰):** _"렌더마다 새 객체 참조. 인라인 객체 prop = 새 참조 = 재렌더. useMemo로 감싸세요."_
>
> **동일한 답변. 토큰 72% 감소. 정확도 손실 제로.** ✅
**PT-BR 예시 — [Troglodita](https://github.com/leninejunior/troglodita) 모드:**
> **이전 (42 tokens):** _"O problema é que o componente está re-renderizando porque uma nova referência de objeto está sendo criada em cada ciclo de renderização. Eu recomendaria usar useMemo."_
>
> **이후 (12 tokens):** _"Re-render: ref nova cada ciclo (objeto inline recriado). Usar `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` 헤더 › 라우팅 콤보 재정의 › 활성 명명 프로필 › 적응형 / 자동 트리거 › 패널 기본값 › 끔. 적용된 계획은 `X-OmniRoute-Compression: ; source=` 응답 헤더로 되돌아옵니다.
토큰 임계값으로 자동 트리거하거나, 적응형 다이얼을 켜거나, 명명 프로필을 고정하거나, 요청 단위로 일회성 설정을 하거나, 라우팅 콤보별로 파이프라인을 지정하세요 — 워크로드에 맞는 방식을 택하면 됩니다. 옵트인 오프라인 **eval 하네스**(`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.53에서 보고된 패키지 집합은 다음과 같습니다:
>
> ```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 키를 추가하거나 계정 연동 절차를 완료하세요. 무료 티어는 가입, 승인 또는 결제 수단을 요구할 수 있습니다. [Free Tiers Guide](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 전용 패키지는 없습니다.
인구 조사는 2026-10-18 15:09:09 UTC에 라이브 release/v3.8.52 팁 656f01cb43 기준으로 수행되었습니다. 페이지네이션된 GitHub GraphQL 인구 조사에는 9,191개의 병합된 PR이 포함되어 있으며, 그중 3,834개는 저장소 소유자, 229개는 Dependabot, 6개는 기타 봇/앱, 그리고 835명의 서로 다른 기여자가 제출한 5,122개의 외부 PR입니다. "변경된 줄 수"는 GitHub의 추가 + 삭제 수치로, 생성된 파일, lockfile, 카탈로그, 번역 및 문서를 포함합니다. 즉, 작성된 LOC가 아니라 총 변동량(churn)입니다. 49개의 PR이 500,000줄을 초과하는 GitHub diff를 보고하며(예: 단일 제공자 추가인 #13399는 2,347개의 변경된 파일을 나열), 이로 인해 위의 여러 합계가 부풀려졌습니다. 동점인 경우 함께 순위가 매겨집니다.
### GitHub에 귀속된 커밋
2026-10-18 14:44:45 UTC에 재확인함: `release/v3.8.52` 기본 브랜치에 대해 저장소 Contributors API가 보고한 GitHub 귀속 커밋입니다. API는 849개의 ID(사용자 429명, 봇 2개, 익명 418개)를 반환했습니다. 이 표는 유지관리자, 봇, 익명 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가 무료로 독립성을 유지하는 데 도움이 됩니다.
## 👥 900명 이상의 기여자
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
2026-10-18에 라이브 release/v3.8.52의 최신 커밋 ad160ab2d1(커밋 6,826개)을 기준으로 감사함: 정규화된 실제 사람 Git ID 993개 — 707개는 커밋 작성자(유지관리자 포함)로 나타나며, 286개는 명시적인 Co-authored-by 트레일러에만 나타납니다. 이 집계에는 .mailmap을 적용하고, 이메일 주소를 대소문자 구분 없이 비교하며, 숫자형 및 일반 GitHub noreply 주소는 동일한 핸들을 나타내는 경우에만 연결하고, 봇/에이전트/서비스/자리표시자 ID 26개를 제외하며, 표시 이름이 일치한다는 이유만으로 일반 이메일 주소를 병합하지 않습니다. 2026-08-24 감사에서는 639개를 발표했으며, 이 방법을 해당 감사의 기준 커밋 ac02c5b42f에 다시 적용하면 619개가 나오므로, 증가분은 더 느슨한 방법이 아니라 새로운 기여자에서 비롯된 것입니다.
### 기여 방법
1. 저장소를 포크합니다
2. `main`이 아닌 **활성** `release/vX.Y.Z`의 최신 커밋에서 브랜치를 생성합니다 — [브랜치 및 릴리스 모델](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` 브랜치**로 설정하여 풀 리퀘스트를 엽니다
자세한 지침은 [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년 10월 18일 GitHub의 REST API를 통해 확인되었습니다 — 이 프로젝트들에 스타를 눌러 주세요. 수치는 해당 날짜를 기준으로 한 정확한 스냅샷이며 시간이 지나면서 자연스럽게 변경됩니다.
### 🧬 계보 및 게이트웨이
코딩 어시스턴트 ↔ LLM 트래픽에 대한 MITM 가로채기/분석 기능은 초기 Traffic Inspector 요구 사항을 정립하는 데 참고되었습니다. 이전에 파생된 네 가지 모듈인 SSE 병합, 대화 정규화, 비밀 정보 마스킹 및 헤더 정제는 공개 프로토콜 표준을 기반으로 한 독립적인 클린룸 구현으로 대체되었습니다. 두 가지 호스트 패스스루 영역(passthrough.ts 및 _internal/bypass.cjs)은 독립적으로 분류된 OmniRoute 내부 구현으로 유지되며, 해당 대체 작업의 일부로 다시 작성되지는 않았습니다.