🚀 OmniRoute — The Free AI Gateway (한국어)
🌐 Languages: 🇺🇸 English · 🇪🇸 es · 🇫🇷 fr · 🇩🇪 de · 🇮🇹 it · 🇷🇺 ru · 🇨🇳 zh-CN · 🇯🇵 ja · 🇰🇷 ko · 🇸🇦 ar · 🇮🇳 hi · 🇮🇳 in · 🇹🇭 th · 🇻🇳 vi · 🇮🇩 id · 🇲🇾 ms · 🇳🇱 nl · 🇵🇱 pl · 🇸🇪 sv · 🇳🇴 no · 🇩🇰 da · 🇫🇮 fi · 🇵🇹 pt · 🇷🇴 ro · 🇭🇺 hu · 🇧🇬 bg · 🇸🇰 sk · 🇺🇦 uk-UA · 🇮🇱 he · 🇵🇭 phi · 🇧🇷 pt-BR · 🇨🇿 cs · 🇹🇷 tr
Never stop coding. Smart routing to FREE & low-cost AI models with automatic fallback.
범용 API 프록시 — 하나의 엔드포인트, 60개 이상의 공급자, 가동 중지 시간 없음. 이제MCP 서버(25개 도구),A2A 프로토콜,메모리/스킬 시스템및Electron 데스크톱 앱을 사용할 수 있습니다.
채팅 완료 • 임베딩 • 이미지 생성 • 비디오 • 음악 • 오디오 • 순위 재지정 •웹 검색• MCP 서버 • A2A 프로토콜 • 100% TypeScript---
🌐사용 가능 언어:🇺🇸 영어 | 🇧🇷 포르투갈어(브라질) | 🇪🇸 스페인어 | 🇫🇷 프랑스어 | 🇮🇹 이탈리아어 | 🇷🇺 Русский | 🇨🇳 中文(简体) | 🇩🇪 독일어 | 🇮🇳 힌디어 | 🇹🇭 ไท้ | 🇺🇦 Украѕнська | 🇸🇦 العربية | 🇯🇵 일본어 | 🇻🇳 Tiếng Viet | 🇧🇬 Български | 🇩🇰 단스크어 | 🇫🇮 수오미 | 🇮🇱 언어 | 🇭🇺 마자르어 | 🇮🇩 인도네시아어 | instagram 한국어 | 🇲🇾 바하사 멜라유 | 🇳🇱 네덜란드 | 🇳🇴 노르스크 | 🇵🇹 포르투갈어(포르투갈) | 🇷🇴 Română | 🇵🇱 폴스키 | 🇸instagram 슬로벤치나 | 🇸🇪 스벤스카 | 🇵🇭 필리핀어 | 🇨🇿 체슈티나---
🖼️ Main Dashboard
📸 Dashboard Preview
<상세>
| 페이지 | 스크린샷 | |
|---|---|---|
| 공급자 | ![]() |
|
| 콤보 | ![]() |
|
| 분석 | ![]() |
|
| 건강 | ![]() |
|
| 번역가 | ![]() |
|
| 설정 | ![]() |
|
| CLI 도구 | ![]() |
|
| 사용 로그 | ![]() |
|
| 엔드포인트 | ![]() |
🤖 Free AI Provider for your favorite coding agents
무제한 코딩을 위한 무료 API 게이트웨이인 OmniRoute를 통해 AI 기반 IDE 또는 CLI 도구를 연결하세요.
<테이블>
오픈클로
⭐ 205K
나노봇
⭐ 20.9K
피코클로
⭐ 14.6K
제로클로
⭐ 9.9K
아이언클로
⭐ 2.1K
오픈코드
⭐ 106K
코덱스 CLI
⭐ 60.8K
클로드 코드
⭐ 67.3K
제미니 CLI
⭐ 94.7K
킬로 코드
⭐ 15.5K
📡 모든 에이전트는 http://localhost:20128/v1 또는 http://cloud.omniroute.online/v1를 통해 연결됩니다. 하나의 구성, 무제한 모델 및 할당량---
🤔 Why OmniRoute?
돈을 낭비하지 말고 한도에 도달하지 마세요.
OmniRoute는 이 문제를 해결합니다.
- ✅구독 극대화- 할당량을 추적하고 재설정하기 전에 모든 비트를 사용하세요.
- ✅자동 대체- 구독 → API 키 → 저렴한 → 무료, 다운타임 없음
- ✅다중 계정- 공급자별 계정 간 라운드 로빈
- ✅유니버설- Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, 모든 CLI 도구와 함께 작동---
📧 Support
💬커뮤니티에 가입하세요!WhatsApp 그룹 — 도움을 받고, 팁을 공유하고, 최신 소식을 받아보세요.
-웹사이트: omniroute.online -GitHub: github.com/diegosouzapw/OmniRoute -문제: github.com/diegosouzapw/OmniRoute/issues -WhatsApp: 커뮤니티 그룹 -기여: CONTRIBUTING.md를 참조하거나, PR을 열거나, '좋은 첫 호'를 선택하세요. -원래 프로젝트: decolua의 9router### 🐛 Reporting a Bug?
이슈를 열 때 system-info 명령을 실행하고 생성된 파일을 첨부하세요.```bash npm run system-info
그러면 Node.js 버전, OmniRoute 버전, OS 세부 정보, 설치된 CLI 도구(qoder, gemini, claude, codex, antigravity, droid 등), Docker/PM2 상태, 시스템 패키지 등 문제를 신속하게 재현하는 데 필요한 모든 정보가 포함된 `system-info.txt`가 생성됩니다. GitHub 문제에 직접 파일을 첨부하세요.---
## 🔄 How It Works
┌─────────────┐ │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...) │ Tool │ └──────┬──────┘ │ http://localhost:20128/v1 ↓ ┌─────────────────────────────────────────┐ │ OmniRoute (Smart Router) │ │ • Format translation (OpenAI ↔ Claude) │ │ • Quota tracking + Embeddings + Images │ │ • Auto token refresh │ └──────┬──────────────────────────────────┘ │ ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI │ ↓ quota exhausted ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc. │ ↓ budget limit ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M) │ ↓ budget limit └─→ [Tier 4: FREE] Qoder, Qwen, Kiro (unlimited)
Result: Never stop coding, minimal cost
---
## 🎯 What OmniRoute Solves — 30 Real Pain Points & Use Cases
>**AI 도구를 사용하는 모든 개발자는 매일 이러한 문제에 직면합니다.**OmniRoute는 비용 초과부터 지역적 차단, 손상된 OAuth 흐름부터 프로토콜 운영 및 기업 관찰 가능성까지 모든 문제를 해결하기 위해 구축되었습니다.
<상세>
<summary><b>💸 1. "고가의 구독료를 지불했지만 여전히 한도 때문에 방해를 받습니다."</b></summary>
개발자는 Claude Pro, Codex Pro 또는 GitHub Copilot에 대해 월 20~200달러를 지불합니다. 비용을 지불하더라도 할당량에는 5시간 사용량, 주간 한도 또는 분당 비율 한도 등 상한선이 있습니다. 코딩 세션이 진행되는 동안 공급자는 응답을 중단하고 개발자는 흐름과 생산성을 잃게 됩니다.
**OmniRoute가 이를 해결하는 방법:**
-**스마트 4계층 폴백**— 구독 할당량이 소진되면 수동 개입 없이 자동으로 API 키 → 저렴함 → 무료로 리디렉션됩니다.
-**공급자 제한 추적**— 캐시된 할당량 스냅샷은 서버 측 일정(기본값 `PROVIDER_LIMITS_SYNC_INTERVAL_MINUTES=70`)에 따라 새로 고쳐지며 UI에서 수동 새로 고침이 가능합니다.
-**다중 계정 지원**— 자동 라운드 로빈 기능을 갖춘 공급자당 여러 계정 — 하나가 소진되면 다음 계정으로 전환
-**사용자 정의 콤보**— 9가지 균형 전략(우선순위, 가중치 적용, 채우기 우선, 라운드 로빈, P2C, 무작위, 최소 사용, 비용 최적화, 엄격 무작위)을 갖춘 사용자 정의 가능한 폴백 체인
-**Codex 비즈니스 할당량**— 대시보드에서 직접 비즈니스/팀 작업 공간 할당량 모니터링</details>
<상세>
<summary><b>🔌 2. "여러 공급자를 사용해야 하는데 각각 API가 다릅니다."</b></summary>
OpenAI는 하나의 형식을 사용하고 Claude(Anthropic)는 또 다른 형식을 사용하고 Gemini는 또 다른 형식을 사용합니다. 개발자가 다른 제공업체의 모델을 테스트하거나 이들 사이에서 대체하려는 경우 SDK를 재구성하고, 엔드포인트를 변경하고, 호환되지 않는 형식을 처리해야 합니다. 사용자 지정 공급자(FriendLI, NIM)에는 비표준 모델 끝점이 있습니다.
**OmniRoute가 이를 해결하는 방법:**
-**통합 엔드포인트**— 단일 `http://localhost:20128/v1`이 60개 이상의 모든 공급자에 대한 프록시 역할을 합니다.
-**형식 번역**— 자동 및 투명함: OpenAI ← Claude ← Gemini ← Responses API
-**응답 삭제**— OpenAI SDK v1.83+를 손상시키는 비표준 필드(`x_groq`, `usage_breakdown`, `service_tier`)를 제거합니다.
-**역할 정규화**— OpenAI가 아닌 제공업체에 대해 '개발자' → '시스템'을 변환합니다. GLM/ERNIE의 경우 `시스템` → `사용자`
-**Think 태그 추출**— DeepSeek R1과 같은 모델에서 `<think>` 블록을 표준화된 `reasoning_content`로 추출합니다.
-**Gemini의 구조화된 출력**— `json_schema` → `responseMimeType`/`responseSchema` 자동 변환
-**`stream`의 기본값은 `false`**— OpenAI 사양에 맞춰 Python/Rust/Go SDK에서 예기치 않은 SSE를 방지합니다.</details>
<상세>
<summary><b>🌐 3. "내 AI 공급자가 내 지역/국가를 차단합니다."</b></summary>
OpenAI/Codex와 같은 공급자는 특정 지역의 액세스를 차단합니다. OAuth 및 API 연결 중에 사용자에게 'unsupported_country_region_territory'와 같은 오류가 발생합니다. 이는 특히 개발도상국의 개발자에게 실망스러운 일입니다.
**OmniRoute가 이를 해결하는 방법:**
-**3레벨 프록시 구성**— 3가지 레벨로 구성 가능한 프록시: 글로벌(모든 트래픽), 공급자별(하나의 공급자만), 연결/키별
-**색상으로 구분된 프록시 배지**— 시각적 표시기: 🟢 글로벌 프록시, 🟡 공급자 프록시, 🔵 연결 프록시, 항상 IP 표시
-**프록시를 통한 OAuth 토큰 교환**— OAuth 흐름도 프록시를 통과하여 `unsupported_country_region_territory`를 해결합니다.
-**프록시를 통한 연결 테스트**- 연결 테스트에서는 구성된 프록시를 사용합니다(더 이상 직접 우회 없음).
-**SOCKS5 지원**— 아웃바운드 라우팅을 위한 전체 SOCKS5 프록시 지원
-**TLS 지문 스푸핑**— 'wreq-js'를 통한 브라우저와 유사한 TLS 지문으로 봇 감지 우회
-**🔏 CLI 지문 일치**— 기본 CLI 바이너리 서명과 일치하도록 헤더와 본문 필드의 순서를 변경하여 계정 플래그 위험을 대폭 줄입니다. 프록시 IP는 보존됩니다. 스텔스**및**IP 마스킹을 동시에 얻을 수 있습니다.</details>
<상세>
<summary><b>🆓 4. "AI를 코딩에 활용하고 싶은데 돈이 없어요"</b></summary>
모든 사람이 AI 구독 비용으로 월 20~200달러를 지불할 수 있는 것은 아닙니다. 학생, 신흥 국가의 개발자, 취미생활자, 프리랜서는 무료로 고품질 모델에 액세스해야 합니다.
**OmniRoute가 이를 해결하는 방법:**
-**무료 계층 제공자 내장**— 100% 무료 제공자에 대한 기본 지원: Qoder(OAuth를 통한 5개의 무제한 모델: kimi-k2-thinking, qwen3-coder-plus, deepseek-r1, minimax-m2, kimi-k2), Qwen(4개의 무제한 모델: qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next, Vision-model), Kiro (Claude + AWS Builder ID 무료), Gemini CLI(180K 토큰/월 무료)
-**Ollama Cloud**— 'api.ollama.com'의 클라우드 호스팅 Ollama 모델(무료 "Light Usage" 계층 포함) `ollamacloud/<model>` 접두사를 사용하세요.
-**무료 전용 콤보**— 체인 `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = 다운타임 없이 월 $0
-**NVIDIA NIM 무료 액세스**— ~40RPM 개발 - build.nvidia.com에서 70개 이상의 모델에 영원히 무료 액세스(크레딧에서 순수 속도 제한으로 전환)
-**비용 최적화 전략**— 가장 저렴한 공급자를 자동으로 선택하는 라우팅 전략</details>
<상세>
<summary><b>🔒 5. "AI 게이트웨이를 무단 액세스로부터 보호해야 합니다."</b></summary>
AI 게이트웨이를 네트워크(LAN, VPS, Docker)에 노출하면 주소가 있는 사람은 누구나 개발자의 토큰/할당량을 사용할 수 있습니다. 보호하지 않으면 API는 오용, 즉각적인 주입, 남용에 취약해집니다.
**OmniRoute가 이를 해결하는 방법:**
-**API 키 관리**— 전용 `/dashboard/api-manager` 페이지를 통해 공급자별 생성, 순환 및 범위 지정
-**모델 수준 권한**— 모두 허용/제한 토글을 사용하여 API 키를 특정 모델(`openai/*`, 와일드카드 패턴)로 제한합니다.
-**API 엔드포인트 보호**— `/v1/models`에 대한 키를 요구하고 목록에서 특정 공급자를 차단합니다.
-**Auth Guard + CSRF 보호**— 'withAuth' 미들웨어 + CSRF 토큰으로 보호되는 모든 대시보드 경로
-**속도 제한기**— 구성 가능한 창으로 IP당 속도 제한
-**IP 필터링**— 액세스 제어를 위한 허용 목록/차단 목록
-**프롬프트 주입 가드**— 악성 프롬프트 패턴 제거
-**AES-256-GCM 암호화**— 저장된 자격 증명은 암호화됩니다.</details>
<상세>
<summary><b>🛑 6. "공급업체가 다운되어 코딩 흐름이 손실되었습니다."</b></summary>
AI 제공자는 불안정해지거나, 5xx 오류를 반환하거나, 임시 속도 제한에 도달할 수 있습니다. 개발자가 단일 공급자에 의존하는 경우 중단됩니다. 회로 차단기가 없으면 반복적으로 재시도하면 애플리케이션이 중단될 수 있습니다.
**OmniRoute가 이를 해결하는 방법:**
-**모델별 회로 차단기**— 구성 가능한 임계값 및 쿨다운(닫힘/열림/반열림)을 통한 자동 열기/닫기, 계단식 블록 방지를 위한 모델별 범위 지정
-**지수 백오프**— 점진적인 재시도 지연
-**Anti-Thundering Herd**— 동시 재시도 폭풍에 대한 뮤텍스 + 세마포어 보호
-**콤보 폴백 체인**— 기본 공급자가 실패하면 개입 없이 자동으로 체인을 통과합니다.
-**콤보 회로 차단기**— 콤보 체인 내에서 실패한 공급자를 자동으로 비활성화합니다.
-**상태 대시보드**— 가동 시간 모니터링, 회로 차단기 상태, 잠금, 캐시 통계, p50/p95/p99 대기 시간</details>
<상세>
<summary><b>🔧 7. "각각의 AI 도구를 구성하는 것은 지루하고 반복적입니다."</b></summary>
개발자는 Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code 등을 사용합니다. 각 도구에는 서로 다른 구성(API 엔드포인트, 키, 모델)이 필요합니다. 공급자나 모델을 전환할 때 재구성하는 것은 시간 낭비입니다.
**OmniRoute가 이를 해결하는 방법:**
-**CLI 도구 대시보드**— Claude Code, Codex CLI, OpenClaw, Kilo Code, Antigravity, Cline을 원클릭으로 설정할 수 있는 전용 페이지
-**GitHub Copilot Config Generator**— 대량 모델 선택을 통해 VS Code용 `chatLanguageModels.json`을 생성합니다.
-**온보딩 마법사**— 처음 사용자를 위한 4단계 설정 안내
-**하나의 엔드포인트, 모든 모델**— `http://localhost:20128/v1`을 한 번 구성하고 60개 이상의 공급자에 액세스</details>
<상세>
<summary><b>🔑 8. "여러 공급자의 OAuth 토큰 관리는 지옥이다"</b></summary>
Claude Code, Codex, Gemini CLI, Copilot — 모두 만료되는 토큰과 함께 OAuth 2.0을 사용합니다. 개발자는 지속적으로 재인증을 수행하고 'client_secret 누락', 'redirect_uri_mismatch' 및 원격 서버 오류를 처리해야 합니다. LAN/VPS의 OAuth는 특히 문제가 됩니다.
**OmniRoute가 이를 해결하는 방법:**
-**자동 토큰 새로 고침**— OAuth 토큰이 만료되기 전에 백그라운드에서 새로 고쳐집니다.
-**OAuth 2.0(PKCE) 내장**— Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, Qoder에 대한 자동 흐름
-**다중 계정 OAuth**— JWT/ID 토큰 추출을 통해 공급자당 여러 계정
-**OAuth LAN/원격 수정**— `redirect_uri`에 대한 개인 IP 감지 + 원격 서버에 대한 수동 URL 모드
-**Nginx 뒤의 OAuth**— 역방향 프록시 호환성을 위해 `window.location.origin`을 사용합니다.
-**원격 OAuth 가이드**— VPS/Docker의 Google Cloud 자격 증명에 대한 단계별 가이드</details>
<상세>
<summary><b>📊 9. "내가 얼마를 어디에 쓰는지 모르겠어요"</b></summary>
개발자는 여러 유료 제공업체를 이용하지만 지출에 대한 통합된 보기가 없습니다. 각 제공업체에는 자체 청구 대시보드가 있지만 통합된 보기는 없습니다. 예상치 못한 비용이 쌓일 수 있습니다.
**OmniRoute가 이를 해결하는 방법:**
-**비용 분석 대시보드**— 토큰별 비용 추적 및 공급자별 예산 관리
-**계층당 예산 한도**— 자동 폴백을 트리거하는 계층당 지출 한도
-**모델별 가격 구성**— 모델당 가격 구성 가능
-**API 키당 사용 통계**— 키당 요청 수 및 마지막으로 사용된 타임스탬프
-**분석 대시보드**— 통계 카드, 모델 사용 차트, 성공률 및 대기 시간이 포함된 공급자 테이블</details>
<상세>
<summary><b>🐛 10. "AI 호출에서는 오류나 문제를 진단할 수 없습니다."</b></summary>
호출이 실패하면 개발자는 속도 제한, 만료된 토큰, 잘못된 형식 또는 공급자 오류인지 알 수 없습니다. 여러 터미널에 걸쳐 조각화된 로그. 관찰 가능성이 없으면 디버깅은 시행착오를 겪게 됩니다.
**OmniRoute가 이를 해결하는 방법:**
-**통합 로그 대시보드**— 탭 4개: 요청 로그, 프록시 로그, 감사 로그, 콘솔
-**콘솔 로그 뷰어**— 색상으로 구분된 레벨, 자동 스크롤, 검색, 필터 기능을 갖춘 실시간 터미널 스타일 뷰어
-**SQLite 프록시 로그**— 서버를 다시 시작해도 지속되는 영구 로그
-**번역기 플레이그라운드**— 4가지 디버깅 모드: 플레이그라운드(형식 번역), 채팅 테스터(왕복), 테스트 벤치(일괄), 라이브 모니터(실시간)
-**원격 측정 요청**— p50/p95/p99 대기 시간 + X-요청-ID 추적
-**회전을 통한 파일 기반 로깅**— 앱 로그는 크기, 보존 일수 및 아카이브 수에 따라 회전합니다. 통화 로그 아티팩트는 보존 일수 및 파일 수에 따라 순환됩니다.
-**시스템 정보 보고서**— `npm run system-info`는 전체 환경(노드 버전, OmniRoute 버전, OS, CLI 도구, Docker/PM2 상태)과 함께 `system-info.txt`를 생성합니다. 즉각적인 분류를 위해 문제를 보고할 때 첨부하세요.</details>
<상세>
<summary><b>🏗️ 11. "게이트웨이 배포 및 유지 관리가 복잡합니다."</b></summary>
다양한 환경(로컬, VPS, Docker, 클라우드)에서 AI 프록시를 설치, 구성 및 유지 관리하는 것은 노동 집약적입니다. 하드코딩된 경로, 디렉터리의 'EACCES', 포트 충돌, 크로스 플랫폼 빌드와 같은 문제로 인해 마찰이 가중됩니다.
**OmniRoute가 이를 해결하는 방법:**
-**npm 전역 설치**— `npm install -g omniroute && omniroute` — 완료
-**Docker 다중 플랫폼**— AMD64 + ARM64 기본(Apple Silicon, AWS Graviton, Raspberry Pi)
-**Docker Compose 프로필**— `base`(CLI 도구 없음) 및 `cli`(Claude Code, Codex, OpenClaw 포함)
-**Electron 데스크탑 앱**— 시스템 트레이, 자동 시작, 오프라인 모드를 갖춘 Windows/macOS/Linux용 기본 앱
-**분할 포트 모드**— 고급 시나리오(역방향 프록시, 컨테이너 네트워킹)를 위한 별도의 포트에 있는 API 및 대시보드
-**클라우드 동기화**— Cloudflare Workers를 통해 장치 간 구성 동기화
-**DB 백업**— 외부에서 관리되는 백업의 경우 `DISABLE_SQLITE_AUTO_BACKUP`을 사용하여 모든 설정의 자동 백업, 복원, 내보내기 및 가져오기</details>
<상세>
<summary><b>🌍 12. "인터페이스는 영어로만 제공되며 우리 팀은 영어를 사용하지 않습니다."</b></summary>
영어를 사용하지 않는 국가, 특히 라틴 아메리카, 아시아, 유럽의 팀은 영어 전용 인터페이스로 인해 어려움을 겪고 있습니다. 언어 장벽으로 인해 채택이 줄어들고 구성 오류가 증가합니다.
**OmniRoute가 이를 해결하는 방법:**
-**대시보드 i18n — 30개 언어**— 한국어, 아랍어, 불가리아어, 덴마크어, 독일어, 스페인어, 핀란드어, 프랑스어, 히브리어, 힌디어, 헝가리어, 인도네시아어, 이탈리아어, 일본어, 말레이어, 네덜란드어, 노르웨이어, 폴란드어, 포르투갈어(PT/BR), 루마니아어, 러시아어, 슬로바키아어, 스웨덴어, 태국어, 우크라이나어, 베트남어, 중국어, 필리핀어, 영어를 포함한 500개 이상의 키 번역됨
-**RTL 지원**— 아랍어 및 히브리어에 대해 오른쪽에서 왼쪽으로 지원
-**다국어 README**— 30개의 완전한 문서 번역
-**언어 선택기**— 실시간 전환을 위한 헤더의 지구본 아이콘</details>
<상세>
<summary><b>🔄 13. "채팅 이상의 것이 필요합니다. 임베딩, 이미지, 오디오가 필요합니다."</b></summary>
AI는 단순한 채팅 완성이 아닙니다. 개발자는 이미지를 생성하고, 오디오를 기록하고, RAG용 임베딩을 만들고, 문서 순위를 다시 지정하고, 콘텐츠를 조정해야 합니다. 각 API에는 서로 다른 엔드포인트와 형식이 있습니다.
**OmniRoute가 이를 해결하는 방법:**
-**임베딩**— 6개 공급자와 9개 이상의 모델이 포함된 `/v1/embeddings`
-**이미지 생성**— 10개 공급자와 20개 이상의 모델(OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, Antigravity, SD WebUI, ComfyUI)이 포함된 `/v1/images/세대`
-**텍스트-비디오**— `/v1/videos/세대` — ComfyUI(AnimateDiff, SVD) 및 SD WebUI
-**텍스트-음악**— `/v1/music/세대` — ComfyUI(안정적인 오디오 오픈, MusicGen)
-**오디오 전사**— `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
-**텍스트 음성 변환**— `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3,**Inworld**,**Cartesia**,**PlayHT**, + 기존 제공업체
-**조정**— `/v1/moderations` — 콘텐츠 안전 확인
-**재순위**— `/v1/rerank` — 문서 관련성 재순위
-**응답 API**— Codex에 대한 전체 `/v1/responses` 지원</details>
<상세>
<summary><b>🧪 14. "모델별로 품질을 테스트하고 비교할 방법이 없습니다."</b></summary>
개발자는 자신의 사용 사례(코드, 번역, 추론)에 가장 적합한 모델을 알고 싶어하지만 수동으로 비교하는 것은 느립니다. 통합 평가 도구가 없습니다.
**OmniRoute가 이를 해결하는 방법:**
-**LLM 평가**— 인사말, 수학, 지리, 코드 생성, JSON 준수, 번역, 마크다운, 안전 거부를 다루는 사전 로드된 10가지 사례를 사용한 골든 세트 테스트
-**4가지 일치 전략**— `exact`, `contains`, `regex`, `custom`(JS 함수)
-**번역기 플레이그라운드 테스트 벤치**— 여러 입력 및 예상 출력을 사용한 일괄 테스트, 공급업체 간 비교
-**채팅 테스터**— 시각적 응답 렌더링을 포함한 전체 왕복
-**라이브 모니터**— 프록시를 통해 흐르는 모든 요청의 실시간 스트림</details>
<상세>
<summary><b>📈 15. "성능 저하 없이 확장해야 합니다"</b></summary>
요청량이 증가함에 따라 동일한 질문을 캐싱하지 않으면 중복 비용이 발생합니다. 멱등성이 없으면 중복 요청으로 인해 처리가 낭비됩니다. 공급자별 요금 제한을 준수해야 합니다.
**OmniRoute가 이를 해결하는 방법:**
-**의미 체계 캐시**— 2계층 캐시(서명 + 의미 체계)로 비용과 대기 시간 감소
-**멱등성 요청**— 동일한 요청에 대한 중복 제거 기간은 5초입니다.
-**속도 제한 감지**— 제공업체별 RPM, 최소 간격 및 최대 동시 추적
-**편집 가능한 속도 제한**— 설정 → 지속성을 통한 복원력에서 구성 가능한 기본값
-**API 키 검증 캐시**— 프로덕션 성능을 위한 3계층 캐시
-**원격 측정 기능을 갖춘 상태 대시보드**— p50/p95/p99 대기 시간, 캐시 통계, 가동 시간</details>
<상세>
<summary><b>🤖 16. "모델 동작을 전체적으로 제어하고 싶습니다."</b></summary>
특정 언어, 특정 어조로 모든 응답을 원하거나 추론 토큰을 제한하려는 개발자. 모든 도구/요청에서 이를 구성하는 것은 비현실적입니다.
**OmniRoute가 이를 해결하는 방법:**
-**시스템 프롬프트 삽입**— 모든 요청에 전역 프롬프트 적용
-**생각 예산 검증**— 요청별 토큰 할당 제어 추론(패스스루, 자동, 사용자 정의, 적응형)
-**9가지 라우팅 전략**— 요청 배포 방법을 결정하는 글로벌 전략
-**와일드카드 라우터**— `provider/*` 패턴은 모든 공급자에게 동적으로 라우팅됩니다.
-**콤보 활성화/비활성화 토글**— 대시보드에서 직접 콤보를 토글합니다.
-**공급자 토글**— 한 번의 클릭으로 공급자에 대한 모든 연결을 활성화/비활성화합니다.
-**차단된 제공자**— `/v1/models` 목록에서 특정 제공자를 제외합니다.</details>
<상세>
<summary><b>🧰 17. "최고급 제품 기능으로 MCP 도구가 필요합니다"</b></summary>
많은 AI 게이트웨이는 MCP를 숨겨진 구현 세부 사항으로만 노출합니다. 팀에는 가시적이고 관리 가능한 운영 레이어가 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- 대시보드 탐색 및 엔드포인트 프로토콜 탭에 MCP가 나타납니다.
- 프로세스, 도구, 범위 및 감사가 포함된 전용 MCP 관리 페이지
- `omniroute --mcp` 및 클라이언트 온보딩을 위한 기본 제공 빠른 시작</details>
<상세>
<summary><b>🧠 18. "동기화 + 스트림 작업 경로를 갖춘 A2A 오케스트레이션이 필요합니다."</b></summary>
에이전트 워크플로에는 수명 주기 제어를 통해 직접 응답과 장기 실행 스트리밍 실행이 모두 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- `message/send` 및 `message/stream`이 포함된 A2A JSON-RPC 엔드포인트(`POST /a2a`)
- 터미널 상태 전파를 통한 SSE 스트리밍
- `tasks/get` 및 `tasks/cancel`을 위한 작업 수명 주기 API</details>
<상세>
<summary><b>🛰️ 19. "추측된 상태가 아닌 실제 MCP 프로세스 상태가 필요합니다."</b></summary>
운영팀은 API에 접근할 수 있는지 여부뿐만 아니라 MCP가 실제로 활성화되어 있는지 알아야 합니다.
**OmniRoute가 이를 해결하는 방법:**
- PID, 타임스탬프, 전송, 도구 개수 및 범위 모드가 포함된 런타임 하트비트 파일
- 하트비트 + 최근 활동을 결합한 MCP 상태 API
- 프로세스/가동 시간/하트비트 최신성을 위한 UI 상태 카드</details>
<상세>
<summary><b>📋 20. "감사 가능한 MCP 도구 실행이 필요합니다."</b></summary>
도구가 구성을 변경하거나 운영 작업을 트리거하는 경우 팀에는 법의학적 추적성이 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- MCP 도구 호출에 대한 SQLite 지원 감사 로깅
- 도구, 성공/실패, API 키, 페이지 매김 기준으로 필터링
- 자동화를 위한 대시보드 감사 테이블 + 통계 엔드포인트</details>
<상세>
<summary><b>🔐 21. "통합별로 범위가 지정된 MCP 권한이 필요합니다."</b></summary>
다양한 클라이언트에는 도구 범주에 대한 최소 권한 액세스 권한이 있어야 합니다.
**OmniRoute가 이를 해결하는 방법:**
- 제어된 도구 액세스를 위한 10개의 세분화된 MCP 범위
- MCP 관리 UI의 범위 적용 및 가시성
- 운영 툴링을 위한 안전한 기본 자세</details>
<상세>
<summary><b>⚙️ 22. "재배치 없이 운영 통제가 필요해요"</b></summary>
팀은 사고 또는 비용 이벤트 중에 빠른 런타임 변경이 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- MCP 대시보드에서 직접 콤보 활성화 전환
- 사전 정의된 정책 팩의 복원력 프로필 적용
- 동일한 운영 패널에서 회로 차단기 상태 재설정</details>
<상세>
<summary><b>🔄 23. "실시간 A2A 작업 수명주기 가시성 및 취소가 필요합니다."</b></summary>
수명주기 가시성이 없으면 작업 사고를 분류하기가 어려워집니다.
**OmniRoute가 이를 해결하는 방법:**
- 페이지 매김을 통한 상태/기술별 작업 목록/필터링
- 작업 메타데이터, 이벤트 및 아티팩트에 대한 드릴다운
- 작업 취소 끝점 및 확인이 포함된 UI 작업</details>
<상세>
<summary><b>🌊 24. "A2A 로드를 위한 활성 스트림 측정항목이 필요합니다."</b></summary>
스트리밍 워크플로에는 동시성 및 라이브 연결에 대한 운영 통찰력이 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- A2A 상태에 통합된 활성 스트림 카운터
- 마지막 작업 타임스탬프 및 상태별 개수
- 실시간 운영 모니터링을 위한 A2A 대시보드 카드</details>
<상세>
<summary><b>🪪 25. "클라이언트를 위한 표준 에이전트 검색이 필요합니다."</b></summary>
외부 클라이언트 및 오케스트레이터에는 온보딩을 위해 컴퓨터에서 읽을 수 있는 메타데이터가 필요합니다.
**OmniRoute가 이를 해결하는 방법:**
- `/.well-known/agent.json`에 에이전트 카드가 노출됨
- 관리 UI에 표시되는 능력과 기술
- A2A 상태 API에는 자동화를 위한 검색 메타데이터가 포함되어 있습니다.</details>
<상세>
<summary><b>🧭 26. "제품 UX에서 프로토콜 검색 기능이 필요합니다."</b></summary>
사용자가 프로토콜 표면을 발견할 수 없는 경우 채택 및 지원 품질이 저하됩니다.
**OmniRoute가 이를 해결하는 방법:**
- 프록시, MCP, A2A 및 API 엔드포인트에 대한 탭이 포함된 통합**엔드포인트**페이지
- MCP 및 A2A에 대한 인라인 서비스 상태 토글(온라인/오프라인)
- 개요에서 전용 관리 탭으로의 링크</details>
<상세>
<summary><b>🧪 27. "실제 클라이언트와의 엔드투엔드 프로토콜 검증이 필요합니다"</b></summary>
모의 테스트는 출시 전에 프로토콜 호환성을 검증하기에 충분하지 않습니다.
**OmniRoute가 이를 해결하는 방법:**
- 앱을 부팅하고 실제 MCP SDK 클라이언트 전송을 사용하는 E2E 제품군
- 흐름 검색, 전송, 스트리밍, 가져오기 및 취소에 대한 A2A 클라이언트 테스트
- MCP 감사 및 A2A 작업 API에 대한 교차 확인 주장</details>
<상세>
<summary><b>📡 28. "모든 인터페이스에 걸쳐 통합된 관찰 가능성이 필요합니다."</b></summary>
프로토콜별로 관찰 가능성을 분할하면 사각지대가 발생하고 MTTR이 길어집니다.
**OmniRoute가 이를 해결하는 방법:**
- 대시보드/로그/분석을 하나의 제품으로 통합
- OpenAI, MCP 및 A2A 계층 전반에 걸쳐 상태 + 감사 + 원격 측정 요청
- 상태 및 자동화를 위한 운영 API</details>
<상세>
<summary><b>💼 29. "프록시 + 도구 + 에이전트 오케스트레이션을 위해 하나의 런타임이 필요합니다."</b></summary>
여러 개별 서비스를 실행하면 운영 비용과 오류 모드가 증가합니다.
**OmniRoute가 이를 해결하는 방법:**
- OpenAI 호환 프록시, MCP 서버, A2A 서버가 하나의 스택에 있음
- 공유 인증, 복원력, 데이터 저장소 및 관찰 가능성
- 모든 상호 작용 표면에 걸쳐 일관된 정책 모델</details>
<상세>
<summary><b>🚀 30. "글루 코드 확장 없이 에이전트 워크플로를 제공해야 합니다."</b></summary>
여러 임시 서비스와 스크립트를 결합할 때 팀의 속도가 느려집니다.
**OmniRoute가 이를 해결하는 방법:**
- 클라이언트와 에이전트를 위한 통합 엔드포인트 전략
- 내장된 프로토콜 관리 UI 및 연기 검증 경로
- 프로덕션 준비 기반(보안, 로깅, 탄력성, 백업)</details>
### Example Playbooks (Integrated Use Cases)
**플레이북 A: 유료 구독 극대화 + 저렴한 백업**```txt
Combo: "maximize-claude"
1. cc/claude-opus-4-6
2. glm/glm-4.7
3. if/kimi-k2-thinking
Monthly cost: $20 + small backup spend
Outcome: higher quality, near-zero interruption
플레이북 B: 비용이 전혀 들지 않는 코딩 스택```txt Combo: "free-forever"
- gc/gemini-3-flash
- if/kimi-k2-thinking
- qw/qwen3-coder-plus
Monthly cost: $0 Outcome: stable free coding workflow
**플레이북 C: 연중무휴 상시 가동 폴백 체인**```txt
Combo: "always-on"
1. cc/claude-opus-4-6
2. cx/gpt-5.2-codex
3. glm/glm-4.7
4. minimax/MiniMax-M2.1
5. if/kimi-k2-thinking
Outcome: deep fallback depth for deadline-critical workloads
플레이북 D: MCP + A2A를 사용한 에이전트 작업```txt
- Start MCP transport (
omniroute --mcp) for tool-driven operations - Run A2A tasks via
message/sendandmessage/stream - Observe via /dashboard/endpoint (MCP and A2A tabs)
- Toggle services via inline status controls
---
## 🆓 Start Free — Zero Configuration Cost
>**$0/월**로 몇 분 만에 AI 코딩을 설정할 수 있습니다. 무료 계정을 연결하고 내장된**무료 스택**콤보를 사용하세요.
| 단계 | 액션 | 제공자 잠금 해제 |
| ---- | ------------------------------------- | ----------------------------------------------------- |
| 1 |**Kiro**연결(AWS Builder ID OAuth) | 클로드 소네트 4.5, 하이쿠 4.5 —**무제한**|
| 2 |**Qoder**연결(Google OAuth) | kimi-k2-thinking, qwen3-coder-plus, deepseek-r1... —**무제한**|
| 3 | 연결**Qwen**(장치 코드) | qwen3-coder-plus, qwen3-coder-flash... —**무제한**|
| 4 |**Gemini CLI**(Google OAuth) 연결 | gemini-3-flash, gemini-2.5-pro —**180K/월 무료**|
| 5 | `/dashboard/combos` →**Free Stack ($0)**템플릿 | 모든 무료 공급자를 자동으로 라운드 로빈 |
**모든 IDE/CLI를 다음으로 지정하세요:**`http://localhost:20128/v1` · API 키: `any-string` · 완료.
>**선택적 추가 적용 범위(무료):**Groq API 키(30RPM 무료), NVIDIA NIM(40RPM 무료, 70개 이상의 모델), Cerebras(100만 토크/일), LongCat API 키(5000만 토큰/일!), Cloudflare Workers AI(10K 뉴런/일, 50개 이상의 모델).## 빠른 시작
### 1) Install and run
```bash
npm install -g omniroute
omniroute
pnpm 사용자:
better-sqlite3및@swc/core에 필요한 기본 빌드 스크립트를 활성화하려면 설치 후pnpm recognition-builds -g를 실행하세요.``배쉬 pnpm install -g omniroute pnpm recognition-builds -g # 모든 패키지 선택 → 승인 옴니루트
대시보드는 http://localhost:20128에서 열리고 API 기본 URL은 http://localhost:20128/v1입니다.
| 명령 | 설명 |
|---|---|
| '옴니루트' | 서버 시작(PORT=20128, 동일한 포트에 API 및 대시보드) |
omniroute --port 3000 |
표준/API 포트를 3000으로 설정 |
옴니루트 --mcp |
MCP 서버 시작(stdio 전송) |
omniroute --no-open |
브라우저를 자동으로 열지 않음 |
omniroute --help |
도움말 표시 |
선택적 분할 포트 모드:```bash PORT=20128 DASHBOARD_PORT=20129 omniroute
API: http://localhost:20128/v1
Dashboard: http://localhost:20129
### Long-Running Streaming Timeouts
대부분의 배포에는 다음만 필요합니다.
| 변수 | 기본값 | 목적 |
| ----------- | ---------------- | ------------------------------------------------------------------------------------------------- |
| `REQUEST_TIMEOUT_MS` | `600000` | 업스트림 가져오기, 숨겨진 Undici 시간 초과, TLS 지문 요청 및 API 브리지 요청/프록시 시간 초과에 대한 공유 기준 |
| `STREAM_IDLE_TIMEOUT_MS` | REQUEST_TIMEOUT_MS`를 상속합니다 | OmniRoute가 SSE 스트림을 중단하기 전 스트리밍 청크 간의 최대 간격 |
이전 버전과의 호환성은 유지됩니다. 기존 `FETCH_TIMEOUT_MS`, `API_BRIDGE_PROXY_TIMEOUT_MS` 및 기타 레이어별 시간 제한 변수는 계속 작동하며 공유 기준을 재정의합니다.
더 세밀한 제어가 필요한 경우 고급 재정의를 사용할 수 있습니다.| Variable | 기본값 | 목적 |
| --------------------------- | ----------------------------- | ------------------------------------------------------- |
| `FETCH_TIMEOUT_MS` | REQUEST_TIMEOUT_MS`를 상속합니다 | 기본 가져오기 중단 신호에 사용되는 총 업스트림 요청 시간 초과 |
| `FETCH_HEADERS_TIMEOUT_MS` | 'FETCH_TIMEOUT_MS'를 상속합니다 | 업스트림 응답 헤더 수신을 위한 Undici 시간 제한 |
| `FETCH_BODY_TIMEOUT_MS` | 'FETCH_TIMEOUT_MS'를 상속합니다 | 업스트림 본문 청크 사이의 Undici 시간 제한(`0`은 비활성화) |
| `FETCH_CONNECT_TIMEOUT_MS` | `30000` | Undici TCP 연결 시간 초과 |
| `FETCH_KEEPALIVE_TIMEOUT_MS` | '4000' | Undici 유휴 연결 유지 소켓 시간 초과 |
| `TLS_CLIENT_TIMEOUT_MS` | 'FETCH_TIMEOUT_MS'를 상속합니다 | `wreq-js`를 통해 수행된 TLS 지문 요청 시간 초과 |
| `API_BRIDGE_PROXY_TIMEOUT_MS` | REQUEST_TIMEOUT_MS` 또는 `30000`을 상속합니다 | API 포트에서 대시보드 포트로의 `/v1` 프록시 전달 시간 초과 |
| `API_BRIDGE_SERVER_REQUEST_TIMEOUT_MS` | `최대(API_BRIDGE_PROXY_TIMEOUT_MS, 300000)` | API 브릿지 서버의 수신 요청 시간 초과 |
| `API_BRIDGE_SERVER_HEADERS_TIMEOUT_MS` | `60000` | API 브릿지 서버의 수신 헤더 시간 초과 |
| `API_BRIDGE_SERVER_KEEPALIVE_TIMEOUT_MS` | `5000` | API 브릿지 서버의 연결 유지 시간 초과 |
| `API_BRIDGE_SERVER_SOCKET_TIMEOUT_MS` | `0` | API 브릿지 서버의 소켓 비활성 시간 초과(`0`은 비활성화) |
Nginx, Caddy, Cloudflare 또는 다른 역방향 프록시 뒤에서 OmniRoute를 실행하는 경우 프록시가
시간 제한은 OmniRoute 스트림/가져오기 시간 제한보다 높습니다.### 2) Connect providers and create your API key
1. 대시보드 → `공급자`를 열고 하나 이상의 공급자(OAuth 또는 API 키)를 연결합니다.
2. 대시보드 → `Endpoints`를 열고 API 키를 생성합니다.
3. (선택 사항) 대시보드 → `콤보`를 열고 폴백 체인을 설정합니다.### 3) Point your coding tool to OmniRoute
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Endpoint page]
Model: if/kimi-k2-thinking (or any provider/model prefix)
Claude Code, Codex CLI, Gemini CLI, Cursor, Cline, OpenClaw, OpenCode 및 OpenAI 호환 SDK와 함께 작동합니다.### 4) Enable and validate protocols (v2.0)
MCP(도구 기반 작업용):```bash omniroute --mcp
그런 다음 `stdio`를 통해 MCP 클라이언트를 연결하고 다음과 같은 테스트 도구를 사용하세요.
-`omniroute_get_health`
-`omniroute_list_combos`
**A2A(에이전트 간 워크플로용):**```bash
curl http://localhost:20128/.well-known/agent.json
curl -X POST http://localhost:20128/a2a \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":"quickstart","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Give me a short quota summary."}]}}'
5) Validate everything end-to-end (recommended)
npm run test:protocols:e2e
이 제품군은 실행 중인 앱에 대해 실제 MCP 및 A2A 클라이언트 흐름의 유효성을 검사합니다.### Alternative: run from source
cp .env.example .env
npm install
PORT=20128 DASHBOARD_PORT=20129 NEXT_PUBLIC_BASE_URL=http://localhost:20129 npm run dev
<상세>
Void Linux 사용자의 경우 xbps-src를 사용하여 기본 패키지를 빌드할 수 있습니다. 이 블록을 srcpkgs/omniroute/template으로 저장합니다.```bash
Template file for 'omniroute'
pkgname=omniroute version=3.4.1 revision=1 hostmakedepends="nodejs python3 make" depends="openssl" short_desc="Universal AI gateway with smart routing for multiple LLM providers" maintainer="zenobit zenobit@disroot.org" license="MIT" homepage="https://github.com/diegosouzapw/OmniRoute" distfiles="https://github.com/diegosouzapw/OmniRoute/archive/refs/tags/v${version}.tar.gz" checksum=009400afee90a9f32599d8fe734145cfd84098140b7287990183dde45ae2245b system_accounts="_omniroute" omniroute_homedir="/var/lib/omniroute" export NODE_ENV=production export npm_config_engine_strict=false export npm_config_loglevel=error export npm_config_fund=false export npm_config_audit=false
do_build() { # Determine target CPU arch for node-gyp local _gyp_arch case "$XBPS_TARGET_MACHINE" in aarch64*) _gyp_arch=arm64 ;; armv7*|armv6*) _gyp_arch=arm ;; i686*) _gyp_arch=ia32 ;; *) _gyp_arch=x64 ;; esac
# 1) Install all deps – skip scripts (no network in do_build, native modules
# compiled separately below; better-sqlite3 is serverExternalPackage so
# Next.js does not execute it during next build)
NODE_ENV=development npm ci --ignore-scripts
# 2) Build the Next.js standalone bundle
npm run build
# 3) Copy static assets into standalone
cp -r .next/static .next/standalone/.next/static
[ -d public ] && cp -r public .next/standalone/public || true
# 4) Compile better-sqlite3 native binding for the target architecture.
# Use node-gyp directly so CC/CXX from xbps-src cross-toolchain are used
# without npm altering them.
local _node_gyp=/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js
(cd node_modules/better-sqlite3 && node "$_node_gyp" rebuild --arch="$_gyp_arch")
# 5) Place the compiled binding into the standalone bundle
local _bs3_release=.next/standalone/node_modules/better-sqlite3/build/Release
mkdir -p "$_bs3_release"
cp node_modules/better-sqlite3/build/Release/better_sqlite3.node "$_bs3_release/"
# 6) Remove arch-specific sharp bundles – upstream sets images.unoptimized=true
# so sharp is not used at runtime; x64 .so files would break aarch64 strip
rm -rf .next/standalone/node_modules/@img
# 7) Copy pino runtime deps omitted by Next.js static analysis:
# pino-abstract-transport – required by pino's worker thread
# split2 – dep of pino-abstract-transport
# process-warning – dep of pino itself
for _mod in pino-abstract-transport split2 process-warning; do
cp -r "node_modules/$_mod" .next/standalone/node_modules/
done
}
do_check() { npm run test:unit }
do_install() { vmkdir usr/lib/omniroute/.next
vcopy .next/standalone/. usr/lib/omniroute/.next/standalone
# Prevent removal of empty Next.js app router dirs by the post-install hook
for _d in \
.next/standalone/.next/server/app/dashboard \
.next/standalone/.next/server/app/dashboard/settings \
.next/standalone/.next/server/app/dashboard/providers; do
touch "${DESTDIR}/usr/lib/omniroute/${_d}/.keep"
done
cat > "${WRKDIR}/omniroute" <<'EOF'
#!/bin/sh export PORT="${PORT:-20128}" export DATA_DIR="${DATA_DIR:-${XDG_DATA_HOME:-${HOME}/.local/share}/omniroute}" export LOG_TO_FILE="${LOG_TO_FILE:-false}" mkdir -p "${DATA_DIR}" exec node /usr/lib/omniroute/.next/standalone/server.js "$@" EOF vbin "${WRKDIR}/omniroute" }
post_install() { vlicense LICENSE }
</details>
---
## 🐳 Docker
OmniRoute는 [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute)에서 공개 Docker 이미지로 제공됩니다.
**빠른 실행:**```bash
docker run -d \
--name omniroute \
--restart unless-stopped \
--stop-timeout 40 \
-p 20128:20128 \
-v omniroute-data:/app/data \
diegosouzapw/omniroute:latest
환경 파일 포함:```bash
Copy and edit .env first
cp .env.example .env
docker run -d
--name omniroute
--restart unless-stopped
--stop-timeout 40
--env-file .env
-p 20128:20128
-v omniroute-data:/app/data
diegosouzapw/omniroute:latest
**Docker Compose 사용:**```bash
# Base profile (no CLI tools)
docker compose --profile base up -d
# CLI profile (Claude Code, Codex, OpenClaw built-in)
docker compose --profile cli up -d
Docker 배포를 위한 대시보드 지원에는 이제 '대시보드 → 엔드포인트'에서 원클릭Cloudflare Quick Tunnel이 포함됩니다. 첫 번째 활성화는 필요한 경우에만 cloudflared를 다운로드하고 현재 /v1 끝점에 대한 임시 터널을 시작하며 생성된 https://*.trycloudflare.com/v1 URL을 일반 공개 URL 바로 아래에 표시합니다.
참고:
- 빠른 터널 URL은 일시적이며 다시 시작할 때마다 변경됩니다.
- 빠른 터널은 OmniRoute 또는 컨테이너를 다시 시작한 후에 자동으로 복원되지 않습니다. 필요할 때 대시보드에서 다시 활성화하세요.
- 관리형 설치는 현재
x64/arm64에서 Linux, macOS 및 Windows를 지원합니다. - 제한된 컨테이너 환경에서 시끄러운 QUIC UDP 버퍼 경고를 방지하기 위해 관리형 빠른 터널은 기본적으로 HTTP/2 전송으로 설정됩니다. 다른 전송을 원할 경우
CLOUDFLARED_PROTOCOL=quic또는auto를 설정하세요. - Docker 이미지는 시스템 CA 루트를 번들로 묶어 관리형 'cloudflared'에 전달합니다. 이는 터널이 컨테이너 내부에서 부트스트랩할 때 TLS 신뢰 실패를 방지합니다.
- SQLite는 WAL 모드에서 실행됩니다. OmniRoute가 최신 변경 사항을 다시
storage.sqlite로 검사할 수 있도록docker stop이 완료되도록 허용해야 합니다. - 번들 Compose 파일에는 이미 40초 중지 유예 기간이 설정되어 있습니다. 이미지를 직접 실행하는 경우
--stop-timeout 40(또는 유사)을 유지하여 수동 중지로 인해 종료 정리가 중단되지 않도록 하세요. - OmniRoute가 다운로드하는 대신 기존 바이너리를 사용하도록 하려면
CLOUDFLARED_BIN=/absolute/path/to/cloudflared를 설정합니다.
Caddy와 함께 Docker Compose 사용(HTTPS Auto-TLS):
OmniRoute는 Caddy의 자동 SSL 프로비저닝을 사용하여 안전하게 노출될 수 있습니다. 도메인의 DNS A 레코드가 서버의 IP를 가리키는지 확인하세요.```yaml services: omniroute: image: diegosouzapw/omniroute:latest container_name: omniroute restart: unless-stopped volumes: - omniroute-data:/app/data environment: - PORT=20128 - NEXT_PUBLIC_BASE_URL=https://your-domain.com
caddy: image: caddy:latest container_name: caddy restart: unless-stopped ports: - "80:80" - "443:443" command: caddy reverse-proxy --from https://your-domain.com --to http://omniroute:20128
volumes: omniroute-data:
| 이미지 | 태그 | 사이즈 | 설명 |
| ----------- | -------- | ------ | -------- |
| `diegosouzapw/omniroute` | `최신` | ~250MB | 최신 안정 릴리스 |
| `diegosouzapw/omniroute` | `1.0.3` | ~250MB | 현재 버전 |---
## 🖥️ Desktop App — Offline & Always-On
> 🆕**신규!**이제 OmniRoute를 Windows, macOS, Linux용**기본 데스크톱 애플리케이션**으로 사용할 수 있습니다.
OmniRoute를 독립형 데스크톱 앱으로 실행하세요. 로컬 모델에는 터미널, 브라우저, 인터넷이 필요하지 않습니다. Electron 기반 앱에는 다음이 포함됩니다.
- 🖥️**기본 창**— 시스템 트레이 통합이 가능한 전용 앱 창
- 🔄**자동 시작**— 시스템 로그인 시 OmniRoute 실행
- 🔔**기본 알림**— 할당량 소진 또는 공급자 문제에 대한 알림 받기
- ⚡**원클릭 설치**— NSIS(Windows), DMG(macOS), AppImage(Linux)
- 🌐**오프라인 모드**— 번들 서버를 사용하여 완전히 오프라인으로 작동### 빠른 시작
```bash
# Development mode
npm run electron:dev
# Build for your platform
npm run electron:build # Current platform
npm run electron:build:win # Windows (.exe)
npm run electron:build:mac # macOS (.dmg) — x64 & arm64
npm run electron:build:linux # Linux (.AppImage)
System Tray
최소화되면 OmniRoute는 빠른 작업을 통해 시스템 트레이에 표시됩니다.
- 대시보드 열기
- 서버 포트 변경
- 애플리케이션 종료
📖 전체 문서: electron/README.md---
💰 Pricing at a Glance
| 계층 | 공급자 | 비용 | 할당량 재설정 | 최고의 대상 | |
|---|---|---|---|---|---|
| 💳 구독 | 클로드 코드 (Pro) | $20/월 | 5시간 + 매주 | 이미 구독 중 | |
| 코덱스(플러스/프로) | $20-200/월 | 5시간 + 매주 | OpenAI 사용자 | ||
| 제미니 CLI | 무료 | 180K/월 + 1K/일 | 모든 사람! | ||
| GitHub 부조종사 | $10-19/월 | 월간 | GitHub 사용자 | ||
| 🔑 API 키 | 엔비디아 NIM | 무료(영원한 개발) | ~40RPM | 70개 이상의 공개 모델 | |
| 대뇌 | 무료(100만 톡/일) | 60K TPM/30RPM | 세계에서 가장 빠른 | ||
| 그로크 | 무료(30RPM) | 14.4KRPD | 초고속 라마/젬마 | ||
| DeepSeek V3.2 | 100만 달러당 $0.27/$1.10 | 없음 | 최고의 가격/품질 추론 | ||
| xAI Grok-4 고속 | 100만 달러당 $0.20/$0.50🆕 | 없음 | 가장 빠른 + 도구 호출, 초저 | ||
| xAI Grok-4(표준) | 100만 달러당 $0.20/$1.50 🆕 | 없음 | xAI의 추론 주력 | ||
| 미스트랄 | 무료 평가판 + 유료 | 요금 제한 | 유럽의 AI | ||
| 오픈라우터 | 종량제 | 없음 | 100개 이상의 모델이 결합되어 있습니다. | ||
| 💰 저렴한 | GLM-5(Z.AI를 통해) 🆕 | $0.5/1M | 매일 오전 10시 | 128K 출력, 최신 플래그십 | |
| GLM-4.7 | $0.6/1M | 매일 오전 10시 | 예산 백업 | ||
| 미니맥스 M2.5 🆕 | $0.3/1M 입력 | 5시간 롤링 | 추론 + 에이전트 작업 | ||
| 미니맥스 M2.1 | $0.2/1M | 5시간 롤링 | 가장 저렴한 옵션 | ||
| Kimi K2.5(문샷 API) 🆕 | 종량제 | 없음 | 직접 Moonshot API 액세스 | ||
| 키미 K2 | $9/월 정액 | 1000만 토큰/월 | 예측 가능한 비용 | ||
| 🆓 무료 | Qoder | $0 | 무제한 | 5개 모델 무제한 | |
| 퀀 | $0 | 무제한 | 4개 모델 무제한 | ||
| 키로 | $0 | 무제한 | 클로드 소네트/하이쿠(AWS 빌더) | ||
| LongCat 플래시라이트 🆕 | $0(5천만 토크/일 🔥) | 1RPS | 지구상에서 가장 큰 무료 할당량 | ||
| 수분 AI 🆕 | $0(열쇠 필요 없음) | 요청 1개/15초 | GPT-5, 클로드, DeepSeek, 라마 4 | ||
| Cloudflare 작업자 AI 🆕 | $0(10,000개의 뉴런/일) | ~150회/일 | 50개 이상의 모델, 글로벌 엣지 | ||
| 스케일웨이 AI 🆕 | $0(총 1백만 토큰) | 요금 제한 | EU/GDPR, Qwen3 235B, 라마 70B | > 🆕새 모델 추가됨(2026년 3월):$0.20/$0.50/M의 Grok-4 Fast 제품군(1143ms로 벤치마크 — Gemini 2.5 Flash보다 30% 빠름), 128K 출력의 Z.AI를 통한 GLM-5, MiniMax M2.5 추론, DeepSeek V3.2 업데이트된 가격, Moonshot 직접 API를 통한 Kimi K2.5. |
💡 $0 콤보 스택 — 완전한 무료 설정:```
🆓 Ultimate Free Stack 2026 — 11 Providers, $0 Forever
Kiro (kr/) → Claude Sonnet/Haiku UNLIMITED Qoder (if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED LongCat Lite (lc/) → LongCat-Flash-Lite — 50M tokens/day 🔥 Pollinations (pol/) → GPT-5, Claude, DeepSeek, Llama 4 — no key needed Qwen (qw/) → qwen3-coder-plus, qwen3-coder-flash, qwen3-coder-next UNLIMITED Gemini (gemini/) → Gemini 2.5 Flash — 1,500 req/day free API key Cloudflare AI (cf/) → Llama 70B, Gemma 3, Mistral — 10K Neurons/day Scaleway (scw/) → Qwen3 235B, Llama 70B — 1M free tokens (EU) Groq (groq/) → Llama/Gemma ultra-fast — 14.4K req/day NVIDIA NIM (nvidia/) → 70+ open models — 40 RPM forever Cerebras (cerebras/) → Llama/Qwen world-fastest — 1M tok/day
**비용이 0입니다. 코딩을 중단하지 마세요.**이를 하나의 OmniRoute 콤보로 구성하면 모든 폴백이 자동으로 발생하므로 수동 전환이 필요하지 않습니다.---
---
## 🆓 Free Models — What You Actually Get
> 아래의 모든 모델은**신용카드가 필요 없이 100% 무료**입니다. 하나의 할당량이 소진되면 OmniRoute는 둘 사이를 자동으로 라우팅합니다. 이를 모두 결합하여 깨지지 않는 $0 콤보를 만듭니다.### 🔵 CLAUDE MODELS (via Kiro — AWS Builder ID)
| 모델 | 접두사 | 한도 | 비율 제한 |
| ------ | ------ | ------------- | -------- |
| `클로드-소네트-4.5` | `kr/` |**무제한**| 보고된 일일 한도 없음 |
| `claude-haiku-4.5` | `kr/` |**무제한**| 보고된 일일 한도 없음 |
| `클로드-오푸스-4.6` | `kr/` |**무제한**| Kiro를 통한 최신 Opus |### 🟢 QODER MODELS (Free PAT via qodercli)
| 모델 | 접두사 | 한도 | 비율 제한 |
| ------------------ | ------ | ------------- | --------------- |
| `kimi-k2-생각` | `만약/` |**무제한**| 보고된 한도 없음 |
| `qwen3-coder-plus` | `만약/` |**무제한**| 보고된 한도 없음 |
| '깊은 탐색-r1' | `만약/` |**무제한**| 보고된 한도 없음 |
| `minimax-m2.1` | `만약/` |**무제한**| 보고된 한도 없음 |
| '키미-k2' | `만약/` |**무제한**| 보고된 한도 없음 |
> 권장 연결 방법:**Personal Access Token + `qodercli`**. 브라우저 OAuth는
> 'QODER_OAUTH_*' 환경 변수가 구성되지 않은 한 실험적이며 기본적으로 비활성화됩니다.### 🟡 QWEN MODELS (Device Code Auth)
| 모델 | 접두사 | 한도 | 비율 제한 |
| ------ | ------ | ------------- | ------ |
| `qwen3-coder-plus` | `qw/` |**무제한**| 보고된 한도 없음 |
| `qwen3-coder-flash` | `qw/` |**무제한**| 보고된 한도 없음 |
| `qwen3-coder-next` | `qw/` |**무제한**| 보고된 한도 없음 |
| `비전 모델` | `qw/` |**무제한**| 다중 모드(이미지) |### 🟣 GEMINI CLI (Google OAuth)
| 모델 | 접두사 | 한도 | 비율 제한 |
| ----------- | ------ | -------------- | ------------- |
| `gemini-3-플래시 미리보기` | `gc/` |**180K 톡/월**+ 1K/일 | 월별 재설정 |
| `gemini-2.5-pro` | `gc/` | 180K/월(공유 풀) | 고품질 |### ⚫ NVIDIA NIM (Free API Key — build.nvidia.com)
| 계층 | 일일 한도 | 비율 제한 | 메모 |
| ---------- | ------------ | ----------- | ----------------------------------------- |
| 무료(개발자) | 토큰 한도 없음 |**~40RPM**| 70개 이상의 모델; 2025년 중반 순수 비율 제한으로 전환 |
인기 무료 모델: `moonshotai/kimi-k2.5`(Kimi K2.5), `z-ai/glm4.7`(GLM 4.7), `deepseek-ai/deepseek-v3.2`(DeepSeek V3.2), `nvidia/llama-3.3-70b-instruct`, `deepseek/deepseek-r1`### ⚪ CEREBRAS (Free API Key — inference.cerebras.ai)
| 계층 | 일일 한도 | 비율 제한 | 메모 |
| ---- | ----------------- | ---------------- | ------------------------------ |
| 무료 |**100만 토큰/일**| 60K TPM/30RPM | 세계에서 가장 빠른 LLM 추론; 매일 재설정 |
무료로 사용 가능: `llama-3.3-70b`, `llama-3.1-8b`, `deepseek-r1-distill-llama-70b`### 🔴 GROQ (Free API Key — console.groq.com)
| 계층 | 일일 한도 | 비율 제한 | 메모 |
| ---- | ------------- | ---------------- | ---------------------------- |
| 무료 |**14,400RPD**| 모델당 30RPM | 신용카드 없음; 429 한도, 청구되지 않음 |
무료로 제공됨: `llama-3.3-70b-versatile`, `gemma2-9b-it`, `mixtral-8x7b`, `whisper-large-v3`### 🔴 LONGCAT AI (Free API Key — longcat.chat) 🆕
| 모델 | 접두사 | 일일 무료 할당량 | 메모 |
| ---------------- | ------ | ----------------- | ---------- |
| 'LongCat-Flash-Lite' | `lc/` |**5천만 토큰**품목 | 사상 최대 규모의 무료 할당량 |
| 'LongCat-Flash-Chat' | `lc/` | 50만 토큰 | 다단계 채팅 |
| 'LongCat-플래시 사고' | `lc/` | 50만 토큰 | 추론 / CoT |
| 'LongCat-Flash-Thinking-2601' | `lc/` | 50만 토큰 | 2026년 1월 버전 |
| 'LongCat-Flash-Omni-2603' | `lc/` | 50만 토큰 | 다중 모드 |
> 공개 베타 버전에서는 100% 무료입니다. 이메일이나 전화로 [longcat.chat](https://longcat.chat)에 가입하세요. 매일 00:00 UTC에 재설정됩니다.### 🟢 POLLINATIONS AI (No API Key Required) 🆕
| 모델 | 접두사 | 비율 제한 | 뒤에 공급자 |
| ---------- | ------ | ---------- | ------------------ |
| '오픈아이' | `폴/` | 요청 1개/15초 | GPT-5 |
| '클로드' | `폴/` | 요청 1개/15초 | 인류학 클로드 |
| `쌍둥이자리` | `폴/` | 요청 1개/15초 | 구글 제미니 |
| '깊은 탐색' | `폴/` | 요청 1개/15초 | DeepSeek V3 |
| `라마` | `폴/` | 요청 1개/15초 | 메타 라마 4 스카우트 |
| '미스트랄' | `폴/` | 요청 1개/15초 | 미스트랄 AI |
> ✨**마찰 없음:**가입이나 API 키가 없습니다. 빈 키 필드가 있는 Pollinations 공급자를 추가하면 즉시 작동합니다.### 🟠 CLOUDFLARE WORKERS AI (Free API Key — cloudflare.com) 🆕
| 계층 | 일일 뉴런 | 동등한 사용법 | 메모 |
| ---- | ------------- | -------------------------- | ---------- |
| 무료 |**10,000**| ~150 LLM 응답 / 500초 오디오 / 15K 임베드 | 글로벌 에지, 50개 이상의 모델 |
인기 있는 무료 모델: `@cf/meta/llama-3.3-70b-instruct`, `@cf/google/gemma-3-12b-it`, `@cf/openai/whisper-large-v3-turbo`(무료 오디오!), `@cf/qwen/qwen2.5-coder-15b-instruct`
> [dash.cloudflare.com](https://dash.cloudflare.com)의 API 토큰 + 계정 ID가 필요합니다. 공급자 설정에 계정 ID를 저장합니다.### 🟣 SCALEWAY AI (1M Free Tokens — scaleway.com) 🆕
| 계층 | 무료 할당량 | 위치 | 메모 |
| ---- | ------------- | ------------ | ---------------------- |
| 무료 |**100만 개의 토큰**| 🇫🇷 파리, EU | 한도 내에서는 신용카드가 필요하지 않습니다 |
무료로 이용 가능: `qwen3-235b-a22b-instruct-2507`(Qwen3 235B!), `llama-3.1-70b-instruct`, `mistral-small-3.2-24b-instruct-2506`, `deepseek-v3-0324`
> EU/GDPR을 준수합니다. [console.scaleway.com](https://console.scaleway.com)에서 API 키를 받으세요.
>**💡 최고의 무료 스택(11개 제공자, 영원히 $0):**
>
>````
> 키로(kr/) → Claude Sonnet/Haiku UNLIMITED
> Qoder(if/) → kimi-k2-thinking, qwen3-coder-plus, deepseek-r1 UNLIMITED
> LongCat Lite (lc/) → LongCat-Flash-Lite — 5천만 토큰/일 🔥
> 수분(pol/) → GPT-5, Claude, DeepSeek, Llama 4 - 열쇠 필요 없음
> Qwen(qw/) → qwen3-coder 모델 무제한
> Gemini(gemini/) → Gemini 2.5 Flash — 1,500 요청/일 무료
> Cloudflare AI(cf/) → 50개 이상의 모델 — 10,000개의 뉴런/일
> Scaleway(scw/) → Qwen3 235B, Llama 70B — 1M 무료 토큰(EU)
> Groq(groq/) → Llama/Gemma — 14.4K 요청/일 초고속
> NVIDIA NIM(nvidia/) → 70개 이상의 공개 모델 — 영원히 40RPM
> 대뇌(cerebras/) → Llama/Qwen 세계 최고 속도 — 100만 tok/일
>````## 🎙️ Free Transcription Combo
>**$0**에 모든 오디오/비디오 전사 — Deepgram이 무료로 200달러, AssemblyAI가 50달러로 대체, Groq Whisper를 무제한 긴급 백업으로 제공합니다.
| 공급자 | 무료 크레딧 | 최고의 모델 | 비율 제한 |
| ----------------- | --------- | ------------------------------- | --------------- |
| 🟢**딥그램**|**$200 무료**(가입) | `nova-3` — 최고의 정확도, 30개 이상의 언어 | 무료 크레딧에는 RPM 제한이 없습니다 |
| 🔵**AssemblyAI**|**$50 무료**(가입) | `universal-3-pro` — 챕터, 감정, PII | 무료 크레딧에는 RPM 제한이 없습니다 |
| 🔴**그로크**|**영원히 무료**| `whisper-large-v3` — OpenAI 속삭임 | 30RPM(속도 제한) |
**`/dashboard/combos`에 제안된 콤보:**```
Name: free-transcription
Strategy: Priority
Nodes:
[1] deepgram/nova-3 → uses $200 free first
[2] assemblyai/universal-3-pro → fallback when Deepgram credits run out
[3] groq/whisper-large-v3 → free forever, emergency fallback
그런 다음 /dashboard/media →녹화탭에서 오디오 또는 비디오 파일을 업로드하고 → 콤보 엔드포인트를 선택하고 → 지원되는 형식으로 변환을 가져옵니다.## 💡 Key Features
OmniRoute v2.0은 단순한 릴레이 프록시가 아닌 운영 플랫폼으로 구축되었습니다.### 🆕 New — ClawRouter-Inspired Improvements (Mar 2026)
| 기능 | 그것이 하는 일 | |
|---|---|---|
| ⚡Grok-4 빠른 제품군 | $0.20/$0.50/M의 xAI 모델 — 벤치마크 1143ms(Gemini 2.5 Flash보다 30% 빠름) | |
| 🧠Z.AI를 통한 GLM-5 | 128K 출력 컨텍스트, $0.5/1M — GLM 제품군의 최신 플래그십 | |
| 🔮미니맥스 M2.5 | $0.30/1M의 추론 + 에이전트 작업 — M2.1에서 대폭 업그레이드 | |
| 🎯모델별 toolCalling 플래그 | 레지스트리의 모델별 toolCalling: true/false — AutoCombo는 도구를 사용할 수 없는 모델을 건너뜁니다. |
|
| 🌍다국어 의도 감지 | AutoCombo 채점의 PT/ZH/ES/AR 키워드 — 영어가 아닌 콘텐츠에 대한 더 나은 모델 선택 | |
| 📊벤치마크 기반 폴백 | 라이브 요청의 실제 p95 대기 시간은 콤보 점수를 제공합니다. AutoCombo는 실제 데이터에서 학습합니다 | |
| 🔁중복 제거 요청 | 콘텐츠 해시 기반 중복 제거 창 — 다중 에이전트 안전, 중복 청구 방지 | |
| 🔌플러그형 라우터 전략 | 확장 가능한 RouterStrategy 인터페이스 — 사용자 정의 라우팅 로직을 플러그인으로 추가 |
### 🚀 Previous v2.0.9+ — Playground, CLI Fingerprints & ACP |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🎮모델 놀이터 | 모든 모델을 직접 테스트할 수 있는 대시보드 페이지 — 제공자/모델/엔드포인트 선택기, 모나코 편집기, 스트리밍, 중단, 타이밍 | |
| 🔏CLI 지문 매칭 | 기본 CLI 서명과 일치하도록 공급자별 헤더/본문 순서 - 설정 > 보안에서 공급자별로 전환합니다.프록시 IP는 보존됩니다 | |
| 🤝ACP 지원(에이전트 클라이언트 프로토콜) | CLI 에이전트 검색(Codex, Claude, Goose, Gemini CLI, OpenClaw + 9개 이상), 프로세스 생성기, /api/acp/agents 엔드포인트 |
|
| 🤖ACP 상담원 대시보드 | 디버그 › 에이전트 페이지 — 모든 CLI 도구에 대한 설치 상태, 버전, 사용자 지정 에이전트 양식이 포함된 14개 에이전트의 그리드입니다.OpenCode사용자에게는 사용 가능한 모든 모델과 함께 즉시 사용 가능한 구성을 자동 생성하는 "opencode.json 다운로드" 버튼이 표시됩니다. | |
🔧사용자 정의 모델 apiFormat 라우팅 |
apiFormat: "responses"를 사용하는 사용자 정의 모델은 이제 Responses API 변환기 |
|
| 🏢Codex 작업 공간 격리 | 이메일당 여러 Codex 작업 공간 — OAuth는 작업 공간 ID로 연결을 올바르게 구분합니다 | |
| 🔄전자 자동 업데이트 | 데스크탑 앱에서 업데이트 확인 + 재시작 시 자동 설치 | ### 🤖 Agent & Protocol Operations (v2.0) |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🔧MCP 서버(25개 도구) | 3가지 전송을 통한 IDE/에이전트 도구: stdio, SSE(/api/mcp/sse), 스트리밍 가능한 HTTP(/api/mcp/stream). 18개 코어 + 3개 메모리 + 4개 스킬 툴 |
|
| 🤝A2A 서버(JSON-RPC + SSE) | 동기화 및 스트리밍 흐름을 통한 에이전트 간 작업 실행 | |
| 🧭통합 엔드포인트 페이지 | 엔드포인트 프록시, MCP, A2A 및 API 엔드포인트 탭이 있는 탭 관리 페이지 | |
| 🎚️서비스 활성화/비활성화 토글 | 설정 지속성을 갖춘 MCP 및 A2A용 ON/OFF 스위치(기본값: OFF) | |
| 🛰️MCP 런타임 하트비트 | 실제 프로세스 상태(pid, 가동 시간, 하트비트 기간, 전송, 범위 모드) | |
| 📋MCP 감사 추적 | 성공/실패 및 주요 속성이 포함된 필터링 가능한 감사 로그 | |
| 🔐MCP 범위 적용 | 제어된 도구 액세스를 위한 10개의 세부적인 범위 권한 | |
| 📡A2A 작업 수명주기 관리 | 작업 나열/필터링, 이벤트/아티팩트 검사, 실행 중인 작업 취소 | |
| 📋에이전트 카드 검색 | 클라이언트 자동 검색을 위한 /.well-known/agent.json |
|
| 🧪프로토콜 E2E 테스트 하네스 | 실제 MCP SDK + A2A 클라이언트는 test:protocols:e2e로 흐릅니다 |
|
| ⚙️작동 제어 | 하나의 제어 표면에서 콤보 전환, 탄력성 프로필 적용, 차단기 재설정 | ### 🧠 Routing & Intelligence |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🎯스마트 4계층 폴백 | 자동 경로: 구독 → API 키 → 저렴한 → 무료 | |
| 📊실시간 할당량 추적 | 라이브 토큰 수 + 공급자별 카운트다운 재설정 | |
| 🔄형식 번역 | OpenAI ⇔ Claude ⇔ Gemini ⇔ 스키마 안전 변환을 통한 응답 | |
| 👥다중 계정 지원 | 지능적인 선택을 통해 공급자당 여러 계정 | |
| 🔄자동 토큰 새로고침 | 재시도 시 OAuth 토큰이 자동으로 새로 고쳐집니다. | |
| 🎨맞춤형 콤보 | 9가지 밸런싱 전략 + 폴백 체인 제어 | |
| 🌐와일드카드 라우터 | provider/* 동적 라우팅 |
|
| 🧠사고 예산 통제 | 통과, 자동, 사용자 정의 및 적응형 추론 제한 | |
| 🔀모델 별칭 | 내장 + 사용자 정의 모델 앨리어싱 및 마이그레이션 안전 | |
| ⚡배경 저하 | 우선순위가 낮은 백그라운드 작업을 저렴한 모델로 라우팅 | |
| 🧪작업 인식 스마트 라우팅 | 콘텐츠 유형별 모델 자동 선택(코딩/비전/분석/요약) | |
| 🔄A2A 에이전트 워크플로 | 상태 저장 다단계 에이전트 실행을 위한 결정적 FSM 조정자 | |
| 🔀적응형 라우팅 | 토큰 볼륨 및 프롬프트 복잡성을 기반으로 한 동적 전략 재정의 | |
| 🎲공급자 다양성 | Shannon 엔트로피 점수 균형 자동 콤보 트래픽 분배 | |
| 💬시스템 프롬프트 삽입 | 일관되게 적용되는 글로벌 행동 제어 | |
| 📄응답 API 호환성 | Codex 및 고급 에이전트 작업 흐름에 대한 전체 /v1/responses 지원 |
### 🎵 Multi-Modal APIs |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🖼️이미지 생성 | 클라우드 및 로컬 백엔드가 포함된 /v1/images/세대 |
|
| 📐임베딩 | 검색 및 RAG 파이프라인용 /v1/embeddings |
|
| 🎤오디오 전사 | /v1/audio/transcriptions — 7개 공급자(Deepgram Nova 3, AssemblyAI, Groq Whisper, HuggingFace, ElevenLabs, OpenAI, Azure), 자동 언어 감지, MP4/MP3/WAV 지원 |
|
| 🔊텍스트 음성 변환 | /v1/audio/speech — 올바른 오류 메시지가 있는 10개 공급자(ElevenLabs, OpenAI, Deepgram, Cartesia, PlayHT, HuggingFace, Nvidia NIM, Inworld, Coqui, Tortoise) |
|
| 🎬비디오 생성 | /v1/videos/세대(ComfyUI + SD WebUI 워크플로) |
|
| 🎵음악 세대 | /v1/music/세대(ComfyUI 워크플로) |
|
| 🛡️조정 | /v1/moderations 안전 확인 |
|
| 🔀재순위 | 관련성 점수를 위한 /v1/rerank |
|
| 🔍웹 검색🆕 | /v1/search — 5개 공급자(Serper, Brave, Perplexity, Exa, Tavily), 월 6,500개 이상의 무료, 자동 장애 조치, 캐시 |
### 🛡️ Resilience, Security & Governance |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🔌회로 차단기 | 임계값 제어를 통한 모델별 트립/복구 | |
| 🎯엔드포인트 인식 모델 | 사용자 정의 모델은 지원되는 엔드포인트 + API 형식을 선언합니다 | |
| 🛡️천둥 방지 무리 | 재시도/비율 이벤트에 대한 뮤텍스 + 세마포어 보호 | |
| 🧠의미 + 서명 캐시 | 두 개의 캐시 레이어로 비용/지연 시간 감소 | |
| ⚡멱등성 요청 | 중복 보호 창 | |
| 🔒TLS 지문 스푸핑 | 브라우저와 유사한 TLS 지문 —봇 감지 및 계정 플래그 지정 감소 | |
| 🔏CLI 지문 매칭 | 기본 CLI 요청 서명과 일치 —프록시 IP를 보존하면서 금지 위험을 줄입니다 | |
| 🌐IP 필터링 | 노출된 배포에 대한 허용 목록/차단 목록 제어 | |
| 📊편집 가능한 속도 제한 | 지속성을 통해 구성 가능한 전역/공급자 수준 제한 | |
| 📉우아한 저하 | 핵심 게이트웨이 작업을 보호하는 다계층 기능 대체 | |
| 📜구성 감사 추적 | 간단한 롤백으로 운영 드리프트를 방지하는 Diff 기반 변경 추적 | |
| ⏳공급자 상태 동기화 | 승인 실패 전에 경고를 트리거하는 사전 예방적 토큰 만료 모니터링 | |
| 🚪금지된 계정 자동 비활성화 | 영구 차단된 토큰 계정을 자동으로 봉인하는 작동 회로 차단기 | |
| 🔑API 키 관리 + 범위 지정 | 보안 키 발급/교체 및 모델/공급자 제어 | |
| 👁️범위가 지정된 API 키 공개🆕 | ALLOW_API_KEY_REVEAL을 통한 API 키 복구 선택 |
|
🛡️보호된 /models |
모델 카탈로그에 대한 선택적 인증 게이팅 및 공급자 숨기기 | ### 📊 Observability & Analytics |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 📝요청 + 프록시 로깅 | 전체 요청/응답 및 프록시 로깅 | |
| 📉스트리밍된 상세 로그🆕 | SSE 페이로드 스트림을 UI로 깔끔하게 재구성 | |
| 📋통합 로그 대시보드 | 한 페이지에서 요청, 프록시, 감사 및 콘솔 보기 | |
| 🔍원격 측정 요청 | p50/p95/p99 대기 시간 및 요청 추적 | |
| 🏥건강 대시보드 | 가동 시간, 차단기 상태, 잠금, 캐시 통계 | |
| 💰비용 추적 | 예산 제어 및 모델별 가격 가시성 | |
| 📈분석 시각화 | 모델/공급자 사용량 통찰력 및 추세 보기 | |
| 🧪평가 프레임워크 | 구성 가능한 매치 전략을 사용한 골든 세트 테스트 | |
| 📡실시간 진단🆕 | 정확한 콤보 라이브 테스트를 위한 시맨틱 캐시 우회 | ### ☁️ Deployment & Platform |
| 기능 | 그것이 하는 일 | |
|---|---|---|
| 🌐어디서나 배포 | 로컬호스트, VPS, Docker, 클라우드 환경 | |
| 🚇Cloudflare 터널🆕 | 대시보드에서 원클릭 Quick Tunnel 통합 | |
| 🔑API 키 모델 필터링 | 할당된 Bearer 컨텍스트 역할을 통해 필터링된 기본 /v1/models 응답 | |
| ⚡스마트 캐시 우회 | 구성 가능한 TTL 휴리스틱 및 강제 재페치 제어 | |
| 🔄백업/복원 | 내보내기/가져오기 및 재해 복구 흐름 | |
| 🧙온보딩 마법사 | 첫 실행 안내 설정 | |
| 🔧CLI 도구 대시보드 | 널리 사용되는 코딩 도구를 위한 원클릭 설정 | |
| 🎮모델 놀이터 | 대시보드에서 공급자/모델/엔드포인트 테스트 | |
| 🔏CLI 지문 토글 | 설정 > 보안 | 공급자별 지문 일치 |
| 🌐i18n(30개 언어) | RTL 적용 범위를 포함한 전체 대시보드 + 문서 언어 지원 | |
| 🧹모든 모델 지우기 | 공급자 세부정보에서 원클릭 모델 목록 삭제 | |
| 👁️사이드바 컨트롤🆕 | 모양 설정에서 구성요소 및 통합 숨기기 | |
| 📋이슈 템플릿 | 버그 및 기능을 위한 표준화된 GitHub 템플릿 | |
| 📂사용자 정의 데이터 디렉터리 | 저장 위치에 대한 DATA_DIR 재정의 |
### Feature Deep Dive |
Smart fallback with practical cost control
Combo: "my-coding-stack"
1. cc/claude-opus-4-6
2. nvidia/llama-3.3-70b
3. glm/glm-4.7
4. if/kimi-k2-thinking
할당량, 속도 또는 상태가 실패하면 OmniRoute는 수동 전환 없이 자동으로 다음 후보로 이동합니다.#### Protocol management that is visible and operable
- MCP + A2A는 UI 및 문서에서 검색 가능합니다(숨겨지지 않음).
- 프로토콜 상태 API는 실시간 운영 데이터(
/api/mcp/*,/api/a2a/*)를 노출합니다. - 대시보드에는 2일 차 작업에 대한 작업이 포함됩니다(콤보 토글, 차단기 재설정, 작업 취소).#### Translator + validation workflow
번역기 영역에는 다음이 포함됩니다.
-플레이그라운드: 변환 확인 요청 -채팅 테스터: 전체 요청/응답 왕복 -테스트 벤치: 한 번에 여러 사례 실행 -라이브 모니터: 실시간 교통 상황 보기
또한 npm run test:protocols:e2e를 통해 실제 클라이언트를 사용한 프로토콜 검증도 가능합니다.
📖MCP 서버 README— 도구 참조, IDE 구성 및 클라이언트 예제
📖A2A 서버 README— 기술, JSON-RPC 방법, 스트리밍 및 작업 수명 주기## 🧪 Evaluations (Evals)
OmniRoute에는 골든 세트에 대해 LLM 응답 품질을 테스트하기 위한 내장 평가 프레임워크가 포함되어 있습니다. 대시보드의분석 → 평가를 통해 액세스하세요.### Built-in Golden Set
사전 로드된 "OmniRoute Golden Set"에는 다음에 대한 테스트 사례가 포함되어 있습니다.
- 인사말, 수학, 지리, 코드 생성
- JSON 형식 준수, 번역, 마크다운 생성
- 안전 거부(유해 콘텐츠), 카운팅, 부울 논리### Evaluation Strategies
| 전략 | 설명 | 예 | |
|---|---|---|---|
| '정확하다' | 출력은 정확히 일치해야 합니다 | ``4"` | |
포함 |
출력에는 하위 문자열(대소문자 구분 안 함)이 포함되어야 합니다. | ``파리"` | |
정규식 |
출력은 정규식 패턴과 일치해야 합니다 | ``1.*2.*3"` | |
| '맞춤형' | 사용자 정의 JS 함수가 true/false를 반환합니다. | (출력) => 출력.길이 > 10 |
--- |
📖 Setup Guide
Protocol Setup (MCP + A2A)
<상세>
stdio 모드에서 MCP 전송을 시작합니다.```bash omniroute --mcp
권장되는 검증 흐름:
1. stdio를 통해 MCP 클라이언트를 연결합니다.
2. `omniroute_get_health`를 실행합니다.
3. `omniroute_list_combos`를 실행합니다.
4. `/dashboard/mcp`를 열어 하트비트, 활동 및 감사를 확인합니다.
자동화에 유용한 API:
- `GET /api/mcp/status`
- `GET /api/mcp/tools`
- `GET /api/mcp/audit`
- `GET /api/mcp/audit/stats`</details>
<상세>
<summary><b>🤝 A2A 설정(Agent2Agent)</b></summary>
에이전트를 검색합니다.```bash
curl http://localhost:20128/.well-known/agent.json
작업 보내기:```bash
curl -X POST http://localhost:20128/a2a
-H 'content-type: application/json'
-d '{"jsonrpc":"2.0","id":"setup-a2a","method":"message/send","params":{"skill":"quota-management","messages":[{"role":"user","content":"Summarize quota status."}]}}'
수명주기 관리:
- `GET /api/a2a/status`
- `GET /api/a2a/tasks`
- `GET /api/a2a/tasks/:id`
- `POST /api/a2a/tasks/:id/cancel`
운영 UI:
- 작업/상태/스트림 관찰 가능성 및 연기 작업을 위한 `/dashboard/a2a`</details>
<상세>
<summary><b>🧪 엔드투엔드 프로토콜 검증</b></summary>
실제 클라이언트에서 두 프로토콜을 모두 검증합니다.```bash
npm run test:protocols:e2e
이는 다음을 확인합니다.
- MCP SDK 클라이언트 연결/목록/호출
- A2A 검색/전송/스트리밍/가져오기/취소
- MCP 감사 및 A2A 작업 관리 API의 데이터 교차 확인
<상세>
Dashboard → Providers → Connect Claude Code
→ OAuth login → Auto token refresh
→ 5-hour + weekly quota tracking
Models:
cc/claude-opus-4-6
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
**프로 팁:**복잡한 작업에는 Opus를 사용하고, 속도를 높이려면 Sonnet을 사용하세요. OmniRoute는 모델당 할당량을 추적합니다!### OpenAI Codex (Plus/Pro)
Dashboard → Providers → Connect Codex
→ OAuth login (port 1455)
→ 5-hour + weekly reset
Models:
cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
Codex Account Limit Management (5h + Weekly)
이제 각 Codex 계정에는 대시보드 -> 공급자에 정책 토글이 있습니다.
5h(ON/OFF): 5시간 창 임계값 정책을 시행합니다.- '주간'(ON/OFF): 주간 창 임계값 정책을 시행합니다.
- 임계값 동작: 활성화된 창이 사용량의 90% 이상에 도달하면 해당 계정을 건너뜁니다.
- 순환 동작: OmniRoute는 자동으로 다음 적격 Codex 계정으로 라우팅합니다.
- 재설정 동작: 공급자 'resetAt' 시간이 지나면 계정이 자동으로 다시 자격을 갖추게 됩니다.
시나리오:
5h ON+Weekly ON: 두 창이 임계값에 도달하면 계정을 건너뜁니다.5h OFF+Weekly ON: 주간 사용량만 계정을 차단할 수 있습니다.5h ON+Weekly OFF: 5시간 동안만 계정을 차단할 수 있습니다.resetAt통과: 계정이 자동으로 순환에 다시 들어갑니다(수동 재활성화 없음).### Gemini CLI (FREE 180K/month!)
Dashboard → Providers → Connect Gemini CLI
→ Google OAuth
→ 180K completions/month + 1K/day
Models:
gc/gemini-3-flash-preview
gc/gemini-2.5-pro
**최고의 가치:**엄청난 무료 등급! 유료 등급 이전에 사용하세요.### GitHub Copilot
Dashboard → Providers → Connect GitHub
→ OAuth via GitHub
→ Monthly reset (1st of month)
Models:
gh/gpt-5
gh/claude-4.5-sonnet
gh/gemini-3.1-pro-preview
<상세>
- 가입: build.nvidia.com
- 무료 API 키 받기(1000 추론 크레딧 포함)
- 대시보드 → 공급자 추가 → NVIDIA NIM:
- API 키:
nvapi-your-key
- API 키:
모델:nvidia/llama-3.3-70b-instruct, nvidia/mistral-7b-instruct 외 50개 이상
**프로 팁:**OpenAI 호환 API — OmniRoute의 형식 변환과 원활하게 작동합니다!### DeepSeek
- 회원가입: platform.deepseek.com
- API 키 받기
- 대시보드 → 공급자 추가 → DeepSeek
모델:deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)
- 회원가입: console.groq.com
- API 키 받기(무료 등급 포함)
- 대시보드 → 공급자 추가 → Groq
모델:groq/llama-3.3-70b, groq/mixtral-8x7b
**프로 팁:**초고속 추론 — 실시간 코딩에 가장 적합합니다!### OpenRouter (100+ Models)
- 회원가입: openrouter.ai
- API 키 받기
- 대시보드 → 공급자 추가 → OpenRouter
**모델:**단일 API 키를 통해 모든 주요 제공업체의 100개 이상의 모델에 액세스할 수 있습니다.
대시보드 동작:OpenRouter 모델은사용 가능한 모델에서 관리됩니다. 수동 추가, 가져오기 및 자동 동기화는 모두 동일한 목록을 업데이트합니다.
<상세>
- 회원가입: Zhipu AI
- Coding Plan에서 API Key 받기
- 대시보드 → API 키 추가:
- 제공자:
glm - API 키:
your-key
- 제공자:
사용:glm/glm-4.7
**프로 팁:**코딩 계획은 1/7 비용으로 3배 할당량을 제공합니다! 매일 오전 10시에 초기화됩니다.### MiniMax M2.1 (5h reset, $0.20/1M)
- 회원가입: 미니맥스
- API 키 받기
- 대시보드 → API Key 추가
사용:minimax/MiniMax-M2.1
**프로 팁:**긴 컨텍스트(100만 토큰)에 대한 가장 저렴한 옵션!### Kimi K2 ($9/month flat)
- 구독: 문샷 AI
- API 키 받기
- 대시보드 → API Key 추가
용도:kimi/kimi-latest
**프로 팁:**1,000만 토큰에 대해 월 $9 고정 = 유효 비용 $0.90/1M!
<상세>
Dashboard → Connect Qoder
→ Qoder OAuth login
→ Unlimited usage
Models:
if/kimi-k2-thinking
if/qwen3-coder-plus
if/glm-4.7
if/minimax-m2
if/deepseek-r1
Qwen (4 FREE models via Device Code)
Dashboard → Connect Qwen
→ Device code authorization
→ Unlimited usage
Models:
qw/qwen3-coder-plus
qw/qwen3-coder-flash
Kiro (Claude FREE)
Dashboard → Connect Kiro
→ AWS Builder ID or Google/GitHub
→ Unlimited usage
Models:
kr/claude-sonnet-4.5
kr/claude-haiku-4.5
<상세>
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. cc/claude-opus-4-6 (Subscription primary)
2. glm/glm-4.7 (Cheap backup, $0.6/1M)
3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
Use in CLI: premium-coding
Example 2: Free-Only (Zero Cost)
Name: free-combo
Models:
1. gc/gemini-3-flash-preview (180K free/month)
2. if/kimi-k2-thinking (unlimited)
3. qw/qwen3-coder-plus (unlimited)
Cost: $0 forever!
<상세>
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [from OmniRoute dashboard]
Model: cc/claude-opus-4-6
Claude Code
원클릭 구성을 위해 대시보드의CLI 도구페이지를 사용하거나 ~/.claude/settings.json을 수동으로 편집하세요.### Codex CLI
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-omniroute-api-key"
codex "your prompt"
OpenClaw
옵션 1 - 대시보드(권장):``` Dashboard → CLI Tools → OpenClaw → Select Model → Apply
**옵션 2 — 수동:**`~/.openclaw/openclaw.json`을 편집합니다.```json
{
"models": {
"providers": {
"omniroute": {
"baseUrl": "http://127.0.0.1:20128/v1",
"apiKey": "sk_omniroute",
"api": "openai-completions"
}
}
}
}
**참고:**OpenClaw는 로컬 OmniRoute에서만 작동합니다. IPv6 해결 문제를 방지하려면
localhost대신127.0.0.1을 사용하세요.### Cline / Continue / RooCode
Settings → API Configuration:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [from OmniRoute dashboard]
Model: if/kimi-k2-thinking
OpenCode
**1단계:**OmniRoute를 사용자 지정 공급자로 추가합니다.```bash opencode /connect
Select "Other" → Enter ID: "omniroute" → Enter your OmniRoute API key
**2단계:**프로젝트 루트에서 `opencode.json`을 생성/편집합니다.```json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"omniroute": {
"npm": "@ai-sdk/openai-compatible",
"name": "OmniRoute",
"options": {
"baseURL": "http://localhost:20128/v1"
},
"models": {
"cc/claude-sonnet-4-20250514": { "name": "Claude Sonnet 4" },
"gg/gemini-2.5-pro": { "name": "Gemini 2.5 Pro" },
"if/kimi-k2-thinking": { "name": "Kimi K2 (Free)" }
}
}
}
}
**3단계:**OpenCode에서 모델을 선택합니다.```bash /models
Select any OmniRoute model from the list
>**팁:**OmniRoute `/v1/models` 엔드포인트에서 사용 가능한 모델을 `models` 섹션에 추가하세요. OmniRoute 대시보드에서 'provider/model-id' 형식을 사용하세요.</details>
---
## 문제 해결
<상세>
<summary><b>문제해결 가이드를 펼치려면 클릭하세요.</b></summary>
**"언어 모델이 메시지를 제공하지 않았습니다"**
- 공급자 할당량 소진 → 대시보드 할당량 추적기 확인
- 해결 방법: 콤보 폴백을 사용하거나 더 저렴한 계층으로 전환하세요.
**비율 제한**
- 구독 할당량 초과 → GLM/MiniMax로 대체
- 콤보 추가: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
**OAuth 토큰이 만료되었습니다**
- OmniRoute에 의해 자동 새로고침
- 문제가 지속되는 경우: Dashboard → Provider → Reconnect
**높은 비용**
- 대시보드 → 비용에서 사용 통계를 확인하세요.
- 기본 모델을 GLM/MiniMax로 전환
- 중요하지 않은 작업에는 무료 계층(Gemini CLI, Qoder)을 사용합니다.
**대시보드/API 포트가 잘못되었습니다**
- `PORT`는 표준 기본 포트(및 기본적으로 API 포트)입니다.
- `API_PORT`는 OpenAI 호환 API 리스너만 재정의합니다.
- `DASHBOARD_PORT`는 대시보드/Next.js 리스너만 재정의합니다.
- 'NEXT_PUBLIC_BASE_URL'을 대시보드/공개 URL로 설정합니다(OAuth 콜백용).
**클라우드 동기화 오류**
- 'BASE_URL'이 실행 중인 인스턴스를 가리키는지 확인하세요.
- 'CLOUD_URL'이 예상 클라우드 엔드포인트를 가리키는지 확인하세요.
- `NEXT_PUBLIC_*` 값을 서버 측 값에 맞게 유지합니다.
**첫 번째 로그인이 작동하지 않습니다**
- `.env`에서 `INITIAL_PASSWORD`를 확인하세요.
- 설정되지 않은 경우 대체 비밀번호는 '123456'입니다.
**요청 로그 없음**
- 요청 아티팩트는 요청당 하나의 JSON 파일로 `DATA_DIR/call_logs/`에 기록됩니다.
- 자세한 단계별 페이로드가 필요한 경우 대시보드 → 로그 → 요청 로그에서 파이프라인 캡처를 활성화합니다.
- `logs/application/app.log`에 애플리케이션 콘솔 로그도 저장하려면 `APP_LOG_TO_FILE=true`를 설정하세요.
- 필요에 따라 `APP_LOG_MAX_FILE_SIZE`, `APP_LOG_RETENTION_DAYS`, `APP_LOG_MAX_FILES` 및 `CALL_LOG_MAX_ENTRIES`를 조정합니다.
**OpenAI 호환 공급자에 대해 연결 테스트에서 "잘못됨"이 표시됨**
- 많은 공급자가 '/models' 엔드포인트를 노출하지 않습니다.
- OmniRoute v1.0.6+에는 채팅 완료를 통한 대체 검증이 포함되어 있습니다.
- 기본 URL에 '/v1' 접미사가 포함되어 있는지 확인하세요.### 🔐 OAuth on a Remote Server
<a name="oauth-on-a-remote-server"></a>
<a name="oauth-em-servidor-remoto"></a>
>**⚠️ VPS, Docker 또는 원격 서버에서 OmniRoute를 실행하는 사용자에게 중요**#### Why does Antigravity / Gemini CLI OAuth fail on remote servers?
**Antigravity**및**Gemini CLI**공급자는**Google OAuth 2.0**을 사용합니다. Google에서는 앱의 Google Cloud Console에 사전 등록된 URI 중 하나와 정확히 일치하도록 OAuth 흐름의 'redirect_uri'를 요구합니다.
OmniRoute에 번들로 제공되는 OAuth 자격 증명은**`localhost`에만 등록됩니다**. 원격 서버(예: `https://omniroute.myserver.com`)에서 OmniRoute에 액세스하면 Google은 다음을 통한 인증을 거부합니다.```
Error 400: redirect_uri_mismatch
Solution: Configure your own OAuth credentials
서버의 URI를 사용하여 Google Cloud Console에서OAuth 2.0 클라이언트 ID를 만들어야 합니다.#### Step-by-step
1. Google Cloud Console 열기
이동: https://console.cloud.google.com/apis/credentials
2. 새 OAuth 2.0 클라이언트 ID 생성
-"+ 자격 증명 만들기"→**"OAuth 클라이언트 ID"**를 클릭합니다.
- 애플리케이션 유형:"웹 애플리케이션"
- 이름: 원하는 것(예:
OmniRoute Remote)
3. 승인된 리디렉션 URI 추가
**"승인된 리디렉션 URI"**필드에 다음을 추가합니다.``` https://your-server.com/callback
> `your-server.com`을 서버의 도메인 또는 IP로 바꿉니다(필요한 경우 포트 포함, 예: `http://45.33.32.156:20128/callback`).
**4. 자격 증명 저장 및 복사**
생성 후 Google은**클라이언트 ID**및**클라이언트 비밀번호**를 표시합니다.
**5. 환경 변수 설정**
`.env`(또는 Docker 환경 변수)에서:```bash
# For Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
# For Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-your-secret
6. OmniRoute 다시 시작```bash
npm:
npm run dev
Docker:
docker restart omniroute
**7. 다시 연결해 보세요**
대시보드 → 공급자 → Antigravity(또는 Gemini CLI) → OAuth
이제 Google은 `https://your-server.com/callback`으로 올바르게 리디렉션됩니다.---
#### Temporary workaround (without custom credentials)
지금 바로 자격 증명을 설정하고 싶지 않은 경우에도**수동 URL 흐름**을 사용할 수 있습니다.
1. OmniRoute는 Google 인증 URL을 엽니다.
2. 승인 후 Google은 `localhost`로 리디렉션을 시도합니다(원격 서버에서는 실패함).
3. 브라우저의 주소 표시줄에서**전체 URL을 복사**하세요(페이지가 로드되지 않는 경우에도 해당).
4. 해당 URL을 OmniRoute 연결 모달에 표시된 필드에 붙여넣습니다.
5.**"연결"**을 클릭하세요.
> 이는 리디렉션 페이지 로드 여부에 관계없이 URL의 인증 코드가 유효하기 때문에 작동합니다.---
<상세>
<summary><b>🇧🇷 포르투갈어 버전</b></summary>#### Por que o OAuth do Antigravity / Gemini CLI falha em servidores remotos?
Os는**반중력**및**Gemini CLI**를 인증하기 위해**Google OAuth 2.0**을 입증했습니다. O Google은 'redirect_uri'를 사용하여 Fluxo를 사용하지 않습니다. OAuth seja**시험**uma das URIs pre-cadastradas no Google Cloud Console do aplicativo.
OAuth는 OmniRoute에 대한 신용 정보를 포함하지 않으므로**`localhost`**에 대한 액세스 권한을 갖습니다. 액세스 권한이 있는 OmniRoute em um servidor remoto(예: `https://omniroute.meuservidor.com`), Google rejeita a autenticação com:```
Error 400: redirect_uri_mismatch
Solução: Configure suas próprias credenciais OAuth
Você precisa criar umOAuth 2.0 Client IDno Google Cloud Console com a URI do seu servidor.#### Passo a passo
1. Google Cloud Console에 액세스
아브라: https://console.cloud.google.com/apis/credentials
2. Crie um novo OAuth 2.0 클라이언트 ID
- em 클릭**"+ 자격 증명 만들기"→"OAuth 클라이언트 ID"**
- 적용 분야:"웹 애플리케이션"
- 이름: escolha qualquer nome (예:
OmniRoute Remote)
3. 승인된 리디렉션 URI로서의 Adicione
아니요**"승인된 리디렉션 URI"**, 추가:``` https://seu-servidor.com/callback
> `seu-servidor.com` pelo domínio 또는 IP do seu servidor로 대체합니다(필요한 포트 포함, 예: `http://45.33.32.156:20128/callback`).
**4. 사본을 자격 증명으로 저장**
Após criar, o Google morerá o**클라이언트 ID**e o**클라이언트 비밀번호**.
**5. 다양한 주변 환경으로 구성**
`.env`가 없습니다(Docker의 다양한 주변 환경).```bash
# Para Antigravity:
ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
# Para Gemini CLI:
GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
6. Reinicie 또는 OmniRoute```bash
Se usando npm:
npm run dev
Se usando Docker:
docker restart omniroute
**7. Tente conectar novamente**
대시보드 → 공급자 → Antigravity(또는 Gemini CLI) → OAuth
Agora에서는 'https://seu-servidor.com/callback' 및 자동 기능으로 Google을 리디렉션합니다.---
#### Workaround temporário (sem configurar credenciais próprias)
Se não quiser criar credenciais próprias agora, ainda é possível usar o fluxo**manual de URL**:
1. OmniRoute는 Google 자동 생성 URL을 확인합니다.
2. Após você autorizar, o Google Tentará redirectionar para `localhost` (que falha no servidor remoto)
3.**URL 복사 완료**da barra de endereço do seu browser (mesmo que a página não carregue)
4. Cole essa URL no campo que aparece no modal de conexão do OmniRoute
5. Clique em**"연결"**
> 이 해결 방법은 URL을 통해 자동으로 코드를 확인하거나 독립적으로 리디렉션할 수 있도록 하는 것입니다.</details>
---
</details>
## 🛠️ Tech Stack
<상세>
<summary><b>기술 스택 세부정보를 펼치려면 클릭하세요.</b></summary>
-**런타임**: Node.js 18–22 LTS(⚠️ Node.js 24+는**지원되지 않음**- `better-sqlite3` 네이티브 바이너리는 호환되지 않음)
-**언어**: TypeScript 5.9 — `src/` 및 `open-sse/` 전체에서**100% TypeScript**(v2.0 이후 핵심 모듈에서는 `any`가 0임)
-**프레임워크**: Next.js 16 + React 19 + Tailwind CSS 4
-**데이터베이스**: LowDB(JSON) + SQLite(도메인 상태 + 프록시 로그 + MCP 감사 + 라우팅 결정)
-**스키마**: Zod(MCP 도구 I/O 검증, API 계약)
-**프로토콜**: MCP(stdio/HTTP) + A2A v0.3(JSON-RPC 2.0 + SSE)
-**스트리밍**: 서버에서 보낸 이벤트(SSE)
-**인증**: OAuth 2.0(PKCE) + JWT + API 키 + MCP 범위 승인
-**테스트**: Node.js 테스트 실행기 + Vitest(단위, 통합, E2E를 포함한 900개 이상의 테스트)
-**CI/CD**: GitHub Actions(자동 npm 게시 + 출시 시 Docker Hub)
-**웹사이트**: [omniroute.online](https://omniroute.online)
-**패키지**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
-**Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
-**복원력**: 회로 차단기, 지수 백오프, 천둥 방지 무리, TLS 스푸핑, 자동 콤보 자가 치유</details>
---
## 문서
| 문서 | 설명 |
| --------------------------------- | -------------------------------------- |
| [사용자 가이드](docs/USER_GUIDE.md) | 공급자, 콤보, CLI 통합, 배포 |
| [API 참조](docs/API_REFERENCE.md) | 예제가 포함된 모든 엔드포인트 |
| [MCP 서버](open-sse/mcp-server/README.md) | 16개의 MCP 도구, IDE 구성, Python/TS/Go 클라이언트 |
| [A2A 서버](src/lib/a2a/README.md) | JSON-RPC 2.0 프로토콜, 스킬, 스트리밍, 작업 관리 |
| [자동 콤보 엔진](docs/auto-combo.md) | 6단계 채점, 모드 팩, 자가 치유 |
| [문제 해결](docs/TROUBLESHOOTING.md) | 일반적인 문제 및 해결 방법 |
| [건축](docs/ARCHITECTURE.md) | 시스템 아키텍처 및 내부 |
| [기여](CONTRIBUTING.md) | 개발 설정 및 지침 |
| [OpenAPI 사양](docs/openapi.yaml) | OpenAPI 3.0 사양 |
| [보안정책](SECURITY.md) | 취약점 보고 및 보안 관행 |
| [VM 배포](docs/VM_DEPLOYMENT_GUIDE.md) | 전체 가이드: VM + nginx + Cloudflare 설정 |
| [기능 갤러리](docs/FEATURES.md) | 스크린샷을 포함한 시각적 대시보드 둘러보기 |
| [출시 체크리스트](docs/RELEASE_CHECKLIST.md) | 출시 전 유효성 검사 단계 |---
## 🗺️ Roadmap
OmniRoute에는 여러 개발 단계에 걸쳐**210개 이상의 기능이 계획되어 있습니다**. 주요 영역은 다음과 같습니다.
| 카테고리 | 계획된 기능 | 하이라이트 |
| ---------------- | ---------------- | ------------------------------------------------------------------------- |
| 🧠**라우팅 및 인텔리전스**| 25세 이상 | 최저 대기 시간 라우팅, 태그 기반 라우팅, 실행 전 할당량, P2C 계정 선택 |
| 🔒**보안 및 규정 준수**| 20세 이상 | SSRF 강화, 자격 증명 클로킹, 엔드포인트당 속도 제한, 관리 키 범위 지정 |
| 📊**관측성**| 15세 이상 | OpenTelemetry 통합, 실시간 할당량 모니터링, 모델별 비용 추적 |
| 🔄**공급자 통합**| 20세 이상 | 동적 모델 레지스트리, 공급자 쿨다운, 다중 계정 Codex, Copilot 할당량 구문 분석 |
| ⚡**성능**| 15세 이상 | 듀얼 캐시 레이어, 프롬프트 캐시, 응답 캐시, 스트리밍 Keepalive, 배치 API |
| 🌐**생태계**| 10세 이상 | WebSocket API, 구성 핫 리로드, 분산 구성 저장소, 상용 모드 |### 🔜 Coming Soon
- 🔗**OpenCode 통합**— OpenCode AI 코딩 IDE에 대한 기본 공급자 지원
- 🔗**TRAE 통합**— TRAE AI 개발 프레임워크를 완벽하게 지원
- 📦**Batch API**— 대량 요청에 대한 비동기식 일괄 처리
- 🎯**태그 기반 라우팅**— 사용자 정의 태그 및 메타데이터를 기반으로 요청 라우팅
- 💰**최저 비용 전략**— 가장 저렴한 제공업체를 자동으로 선택합니다.
> 📝 [`docs/new-features/`](docs/new-features/)에서 전체 기능 사양 확인 가능(217개 세부 사양)---
## 👥 Contributors
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
### How to Contribute
1. 저장소 포크
2. 기능 브랜치를 생성합니다(`git checkout -b feature/amazing-feature`)
3. 변경 사항을 커밋합니다(`git commit -m 'Add amazing feature'`)
4. 브랜치로 푸시(`git push 원점 기능/amazing-feature`)
5. 풀 리퀘스트 열기
자세한 지침은 [CONTRIBUTING.md](CONTRIBUTING.md)를 참조하세요.### Releasing a New Version
```bash
# Create a release — npm publish happens automatically
gh release create v2.0.0 --title "v2.0.0" --generate-notes
📊 Star History
Stargazers over time
🙏 Acknowledgments
이 포크에 영감을 준 원본 프로젝트인**decolua의9router**에게 특별히 감사드립니다. OmniRoute는 추가 기능, 다중 모드 API 및 전체 TypeScript 재작성을 통해 놀라운 기반을 구축합니다.
이 JavaScript 포트에 영감을 준 최초의 Go 구현인**CLIProxyAPI**에게 특별히 감사드립니다.---
라이선스
MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.---









