Files
OmniRoute/docs/i18n/ko

🚀 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

OmniRoute Dashboard

📸 Dashboard Preview

<상세>

대시보드 스크린샷을 보려면 클릭하세요.
페이지 스크린샷
공급자 공급자
콤보 콤보
분석 분석
건강 건강
번역가 번역기
설정 설정
CLI 도구 CLI 도구
사용 로그 사용법
엔드포인트 엔드포인트

🤖 Free AI Provider for your favorite coding agents

무제한 코딩을 위한 무료 API 게이트웨이인 OmniRoute를 통해 AI 기반 IDE 또는 CLI 도구를 연결하세요.

<테이블>

OpenClaw
오픈클로

205K NanoBot
나노봇

20.9K PicoClaw
피코클로

14.6K ZeroClaw
제로클로

9.9K IronClaw
아이언클로

2.1K OpenCode
오픈코드

106K Codex CLI
코덱스 CLI

60.8K 클로드 코드
클로드 코드

67.3K Gemini CLI
제미니 CLI

94.7K 킬로 코드
킬로 코드

15.5K

📡 모든 에이전트는 http://localhost:20128/v1 또는 http://cloud.omniroute.online/v1를 통해 연결됩니다. 하나의 구성, 무제한 모델 및 할당량---

🤔 Why OmniRoute?

돈을 낭비하지 말고 한도에 도달하지 마세요.

  • 구독 할당량은 매달 사용하지 않은 채 만료됩니다.
  • 속도 제한으로 인해 코딩이 중단됩니다.
  • 고가의 API(공급업체당 월 $20-50)
  • 공급자 간 수동 전환

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"

  1. gc/gemini-3-flash
  2. if/kimi-k2-thinking
  3. 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

  1. Start MCP transport (omniroute --mcp) for tool-driven operations
  2. Run A2A tasks via message/send and message/stream
  3. Observe via /dashboard/endpoint (MCP and A2A tabs)
  4. Toggle services via inline status controls

---

## 🆓 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."}]}}'
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` 템플릿)

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)

<상세>

🧩 MCP 설정(모델 컨텍스트 프로토콜)

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의 데이터 교차 확인

<상세>

💳 구독 제공업체### Claude Code (Pro/Max)
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

<상세>

🔑 API 키 제공자### NVIDIA NIM (FREE developer access — 70+ models)
  1. 가입: build.nvidia.com
  2. 무료 API 키 받기(1000 추론 크레딧 포함)
  3. 대시보드 → 공급자 추가 → NVIDIA NIM:
    • API 키: nvapi-your-key

모델:nvidia/llama-3.3-70b-instruct, nvidia/mistral-7b-instruct 외 50개 이상

**프로 팁:**OpenAI 호환 API — OmniRoute의 형식 변환과 원활하게 작동합니다!### DeepSeek

  1. 회원가입: platform.deepseek.com
  2. API 키 받기
  3. 대시보드 → 공급자 추가 → DeepSeek

모델:deepseek/deepseek-chat, deepseek/deepseek-coder### Groq (Free Tier Available!)

  1. 회원가입: console.groq.com
  2. API 키 받기(무료 등급 포함)
  3. 대시보드 → 공급자 추가 → Groq

모델:groq/llama-3.3-70b, groq/mixtral-8x7b

**프로 팁:**초고속 추론 — 실시간 코딩에 가장 적합합니다!### OpenRouter (100+ Models)

  1. 회원가입: openrouter.ai
  2. API 키 받기
  3. 대시보드 → 공급자 추가 → OpenRouter

**모델:**단일 API 키를 통해 모든 주요 제공업체의 100개 이상의 모델에 액세스할 수 있습니다.

대시보드 동작:OpenRouter 모델은사용 가능한 모델에서 관리됩니다. 수동 추가, 가져오기 및 자동 동기화는 모두 동일한 목록을 업데이트합니다.

<상세>

💰 저렴한 제공업체(백업)### GLM-4.7 (Daily reset, $0.6/1M)
  1. 회원가입: Zhipu AI
  2. Coding Plan에서 API Key 받기
  3. 대시보드 → API 키 추가:
    • 제공자: glm
    • API 키: your-key

사용:glm/glm-4.7

**프로 팁:**코딩 계획은 1/7 비용으로 3배 할당량을 제공합니다! 매일 오전 10시에 초기화됩니다.### MiniMax M2.1 (5h reset, $0.20/1M)

  1. 회원가입: 미니맥스
  2. API 키 받기
  3. 대시보드 → API Key 추가

사용:minimax/MiniMax-M2.1

**프로 팁:**긴 컨텍스트(100만 토큰)에 대한 가장 저렴한 옵션!### Kimi K2 ($9/month flat)

  1. 구독: 문샷 AI
  2. API 키 받기
  3. 대시보드 → API Key 추가

용도:kimi/kimi-latest

**프로 팁:**1,000만 토큰에 대해 월 $9 고정 = 유효 비용 $0.90/1M!

<상세>

🆓 무료 제공업체(긴급 백업)### Qoder (5 FREE models via OAuth)
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

<상세>

🎨 콤보 만들기### Example 1: Maximize Subscription → Cheap Backup
Dashboard → Combos → Create New

Name: premium-coding
Models:
  1. cc/claude-opus-4-6 (Subscription primary)
  2. glm/glm-4.7 (Cheap backup, $0.6/1M)
  3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)

Use in CLI: premium-coding

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!

<상세>

🔧 CLI 통합### Cursor IDE
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 1822 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

[![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](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

Stargazers over time

🙏 Acknowledgments

이 포크에 영감을 준 원본 프로젝트인**decolua9router**에게 특별히 감사드립니다. OmniRoute는 추가 기능, 다중 모드 API 및 전체 TypeScript 재작성을 통해 놀라운 기반을 구축합니다.

이 JavaScript 포트에 영감을 준 최초의 Go 구현인**CLIProxyAPI**에게 특별히 감사드립니다.---

라이선스

MIT 라이선스 - 자세한 내용은 LICENSE를 참조하세요.---

Built with ❤️ for developers who code 24/7
omniroute.online