OmniRoute: 여러 AI 제공자를 하나의 엔드포인트로 잇는 로컬 게이트웨이

OmniRoute 소개

여러 개의 대규모 언어 모델(LLM)을 동시에 쓰다 보면 관리해야 할 것이 빠르게 늘어납니다. 제공자마다 SDK와 엔드포인트가 다르고, 구독 요금제는 다 쓰지 못한 채 매달 만료되며, 한도(rate limit)에 걸리면 작업이 중간에 멈춥니다. 게다가 Claude Code, Cursor, Codex 같은 코딩 도구는 저마다 별도의 설정을 요구합니다. 이렇게 흩어진 자격 증명과 설정을 손으로 관리하는 일은 그 자체로 상당한 부담입니다.

OmniRoute은 이 문제를 로컬 게이트웨이(gateway) 방식으로 풀어내는 도구입니다. 사용자의 컴퓨터에서 돌아가는 하나의 프록시가 http://localhost:20128/v1 이라는 단일 OpenAI 호환 엔드포인트를 열어 두고, 그 뒤에서 여러 AI 제공자로 요청을 분배합니다. 코딩 도구는 이 엔드포인트 하나만 바라보면 되고, 한 제공자의 한도가 소진되면 OmniRoute가 밀리초 단위로 다음 제공자로 요청을 넘깁니다. OpenAI, Claude(Anthropic), Gemini, Responses API 형식 사이의 변환도 게이트웨이가 처리하므로, 도구가 어떤 API 규격을 쓰든 그대로 연결됩니다.

저장소 기준으로 카탈로그에는 290개 제공자와 500개 이상의 모델이 등록되어 있고, 이 가운데 90개 이상이 무료 티어를 제공하며 40개 이상은 조건 없이 계속 무료입니다. 지원하는 코딩 도구는 33종(CLI 코딩 도구 25종 + CLI 에이전트 8종)이고, 대시보드 UI는 43개 언어로 번역되어 있습니다. TypeScript로 작성된 MIT 라이선스 오픈소스이며, 최신 릴리스는 v3.8.50 계열입니다. 이 게시물에서는 4단계 폴백(fallback) 구조, 무료 티어 집계, 19가지 라우팅 전략, 12개 엔진 토큰 압축 스택, 에이전트 프로토콜, 실행 환경과 설치 방법을 차례로 정리합니다.

OmniRoute가 겨냥하는 문제

저자는 README 첫 부분에서 여러 AI 제공자를 손으로 관리할 때 반복되는 열 가지 불편을 나열하고, 각각에 대응하는 OmniRoute의 기능을 짝지어 보여줍니다. 구독 한도가 쓰이지 않은 채 만료되는 문제, 작업 중간에 한도에 걸리는 문제, 도구 출력이 토큰을 소모하는 문제, 도구마다 설정이 따로인 문제, 팀이 하나의 구독을 두고 경쟁하는 문제 등이 목록에 들어 있습니다.

OmniRoute의 동작 방식: 하나의 엔드포인트와 4단계 폴백

OmniRoute의 핵심은 요청 하나가 여러 제공자를 자동으로 오가도록 만드는 데 있습니다. 저자는 이를 콤보(combo) 라고 부르는데, 콤보는 OmniRoute가 순서대로 시도할 모델의 사슬입니다. 한 제공자의 한도가 떨어지거나 응답에 실패하거나 비용이 치솟으면, 콤보가 조용히 다음 모델로 미끄러져 내려갑니다. 기본 폴백은 다음 4단계로 구성됩니다.

단계 계층 대표 대상 넘어가는 조건
1 구독(Subscription) Claude Code, Codex, Copilot 구독 한도 소진
2 API 키(API Key) DeepSeek, Groq, xAI 예산 초과
3 저비용(Cheap) GLM(0.5달러), MiniMax(0.2달러) 예산 초과
4 무료(Free) Kiro, Qoder, Pollinations 마지막 단계로 항상 유지

별도의 콤보를 만들지 않고 모델을 auto 로 지정하면, OmniRoute가 연결된 제공자들로 가상 콤보를 즉석에서 구성해 실시간 점수로 라우팅합니다. 목적별 변형은 다음과 같습니다.

모델 ID 최적화 기준
auto 균형 잡힌 기본값(LKGP, 마지막으로 성공한 제공자를 유지)
auto/coding 코드 생성 품질 우선 가중치
auto/fast 지연 시간이 가장 낮은 대상 우선
auto/cheap 토큰당 비용이 가장 낮은 대상 우선
auto/offline 남은 한도와 여유가 가장 큰 대상 우선
auto/smart 품질 우선에 10% 탐색을 섞어 더 나은 모델 발굴

auto 콤보 엔진은 상태(health), 남은 한도, 비용, 지연 시간, 성공률, 최신성 등 12개 요소로 모든 연결 후보를 실시간 채점합니다.

OmniRoute의 무료 티어 집계

무료 티어를 손으로 쌓아 올리는 일은 그 자체가 번거롭습니다. 제공자마다 SDK와 한도가 다르고, 실제로 얼마나 남았는지 알기 어렵습니다. OmniRoute은 문서화된 무료 티어를 가진 43개 제공자 풀을 하나의 숫자로 집계해 대시보드(/dashboard/free-tiers)에 실시간으로 보여줍니다. 저자가 제시하는 값은 정상 상태에서 월 약 15.3억 토큰이고, 가입 크레딧이 붙는 첫 달에는 최대 약 21.5억 토큰까지 올라갑니다.

이 수치의 계산 방식을 저자가 명시해 둔 점이 눈에 띕니다. 모든 한도를 24시간 내내 합산하면 약 100억 토큰까지 나오지만 그 숫자는 발표하지 않고, 여러 제공자가 공유하는 무료 풀은 한 번만 계산합니다. 이용약관 검토가 필요한 15개 제공자는 따로 표시해 사용자가 판단하게 하고, 토큰 상한이 없는 영구 무료 제공자와 유료 충전으로 열리는 한도는 대표 수치에 섞지 않고 별도로 보여줍니다. 이 값들은 2주마다 라이브 카탈로그와 재감사되며 오르내립니다.

OmniRoute 무료 티어 예산 카드: 43개 제공자 풀에서 집계한 월 약 15.3억 무료 토큰과 19개 집계 가능 풀의 예산 바, 모델별 내역, 첫 달 가입 크레딧, 영구 무료 제공자 목록

카드 없이 바로 쓸 수 있는 영구 무료 제공자로는 다음이 소개되어 있습니다.

제공자 제공 모델 조건
OpenCode Zen DeepSeek V4, Nemotron 3 토큰 상한 없음
Kilo Code 자동 라우터, Tencent Hy3 영구 무료
Requesty GPT-OSS 120B, Nemotron 영구 무료
SiliconFlow DeepSeek V3.2, R1 무료 티어
Z.AI GLM GLM-4.7, GLM-4.5-Flash 영구 무료
Qoder AI Qwen3-Max, Kimi-K2 무제한 무료
Pollinations GPT, Llama, Claude 키 불필요
Cloudflare AI 50개 이상 모델 하루 10K 뉴런
Cerebras GLM 4.7, GPT-OSS 하루 100만 토큰
NVIDIA NIM GLM, MiniMax 분당 약 40회

OmniRoute의 라우팅 전략과 콤보

콤보의 각 단계에는 서로 다른 라우팅 전략을 섞어 넣을 수 있습니다. README의 전략 표에는 19가지가 실려 있고, 아래 도식과 요약 이미지는 cache-optimized 가 추가되기 전인 18가지 기준으로 그려져 있습니다.

# 전략 동작
1 priority 우선순위 목록을 순서대로 사용하며 각 대상을 소진한 뒤 다음으로 넘어감
2 fill-first 각 대상의 한도를 완전히 채운 뒤 이동
3 weighted 대상별 가중치에 따른 가중 무작위 선택
4 round-robin 대상을 순서대로 순환
5 p2c 둘을 뽑아 가벼운 쪽을 고르는 무작위 부하 분산
6 least-used 현재 부하가 가장 낮은 대상 선택
7 random 균등 무작위 선택(중복 제거)
8 strict-random 중복 제거 없는 순수 무작위
9 cost-optimized 실시간 카탈로그 가격 기준으로 요청당 비용 최소화
10 headroom 남은 한도가 가장 많은 대상 선택
11 reset-window 한도 초기화가 가장 먼저 오는 대상 선호
12 reset-aware 초기화 시각으로 순위를 매겨 짧은 주기를 먼저 사용
13 context-relay 긴 대화에서 여러 대상에 걸쳐 컨텍스트를 이어받음
14 context-optimized 현재 컨텍스트 크기에 가장 잘 맞는 대상 선택
15 cache-optimized 재사용 가능한 프롬프트 접두부를 같은 계정에 고정해 프롬프트 캐시 적중률 극대화
16 lkgp 마지막으로 성공한 경로에 고정(Last-Known-Good Path)
17 auto 모든 연결을 12개 요소로 실시간 채점
18 fusion 여러 모델에 병렬로 요청한 뒤 심판(judge) 모델이 하나의 답으로 종합
19 pipeline 각 단계의 출력을 다음 단계의 입력으로 연결

18가지 콤보 라우팅 전략이 요청을 어느 대상으로 보내는지 타일별로 보여주는 애니메이션 도식

여러 키가 같은 상위 계정(예: 하나의 Codex 구독)을 공유할 때는 쿼터 공유(Quota-Share) 전략으로 시간 기반 한도를 키들 사이에 가중치대로 분배할 수 있습니다. 유휴 상태인 키의 몫은 다른 키에 빌려주는 방식이라, 팀에서 하나의 구독을 나눠 쓸 때 한 사람의 폭주가 전체 한도를 소진하는 상황을 완화합니다.

OmniRoute의 3계층 회복력

장애 상황에 대비한 회복력(resilience)은 세 개의 독립된 계층으로 나뉩니다. 설계 원칙은 "실제로 고장난 것보다 더 많이 차단하지 않는다" 는 것으로, 실패의 범위에 맞는 계층만 작동시킵니다.

계층 격리 범위 작동 조건 동작
1. 서킷 브레이커 제공자 전체 408, 5xx 응답에만 반응. 임계값은 OAuth 3회, API 키 5회, 로컬 2회 차단(OPEN) 상태에서는 콤보가 다음 제공자로 우회하고, 60초/30초/15초 뒤 HALF-OPEN 탐색으로 복구 시도
2. 연결 쿨다운 키 또는 계정 하나 기본 쿨다운은 OAuth 5초, API 키 3초. 반복 실패 시 2배씩 지수 백오프 한도에 걸린 키만 건너뛰고 같은 제공자의 다른 키는 계속 사용. 429 응답은 Retry-After 헤더를 따르고, 성공하면 오류 상태를 모두 초기화
3. 모델 잠금 모델 하나 모델별 429, 로컬 404, 모드 거부 해당 모델만 격리하고 연결 전체는 유지. 나머지 모델은 즉시 계속 서비스

계정 정지, 만료, 크레딧 소진처럼 되돌릴 수 없는 상태는 쿨다운 대상이 아니라 운영자가 처리할 문제로 따로 분류합니다.

OmniRoute의 토큰 압축: 12개 엔진 스택

OmniRoute은 제공자로 보내기 전에 프롬프트를 압축해 토큰 사용량을 줄이는 기능을 내장하고 있습니다. 클라이언트를 고치지 않아도 모든 요청이 압축 파이프라인을 투명하게 통과하며, 파이프라인은 순서대로 실행되는 12개의 조합 가능한 엔진으로 이루어져 있습니다. 각 엔진은 라우팅 콤보별로 개별 토글과 설정이 가능합니다.

# 엔진 역할
1 Session-Dedup 여러 턴에 걸쳐 반복되는 내용을 제거(내용 주소 기반)
2 CCR 큰 블록을 조회 마커 뒤에 보관하고 필요할 때만 가져옴
3 Lite 공백과 이미지 URL 정리(지연 시간 부담이 가장 적은 기본선)
4 RTK 도구 실행 결과의 필터링, 중복 제거, 절단(명령어 인식)
5 Responses Tool Output 셸, 패치, 검색, 빌드 출력에 대한 무손실 우선 JSON 압축(Responses API)
6 Headroom JSON 배열의 무손실 표 형태 압축(약 30%), GCF 코덱 사용
7 Relevance 마지막 사용자 질의를 기준으로 문장별 중요도 채점 후 추출
8 Caveman 규칙 기반 산문 압축(출력 기준 약 65~75%)
9 Aggressive 요약과 오래된 턴의 점진적 노후화
10 LLMLingua-2 MobileBERT ONNX 기반 의미 단위 가지치기(코드 안전, 비동기)
11 Ultra 휴리스틱 토큰 가지치기에 소형 모델(SLM) 계층 선택 적용
12 OmniGlyph 컨텍스트를 이미지로 인코딩하는 실험 기능(가장 공격적, 선택 적용)

기본 스택 콤보는 RTK 엔진과 Caveman 엔진을 차례로 적용하며, 두 엔진이 같은 도구 출력이나 컨텍스트에 함께 작동할 때 절감률이 곱셈으로 누적됩니다. 저자가 제시하는 계산식은 다음과 같습니다.

combined = 1 − (1 − RTK) × (1 − Caveman_input)
average  = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range    = 78.4 – 94.6%

엔진을 조합한 원클릭 프리셋도 준비되어 있습니다.

모드 절감률 적합한 상황
Lite 약 15% 항상 켜 두는 안전한 기본값
Standard(Caveman) 약 30% 일상적인 코딩
Aggressive 약 50% 도구 호출이 많은 긴 세션
Ultra 약 75% 절감 극대화
RTK 60~90% 셸, 테스트, 빌드, git 출력
Stacked(RTK → Caveman) 78~95% 프롬프트와 도구 로그가 섞인 경우

Standard 모드의 실제 예시는 다음과 같습니다.

압축 전(69 토큰): "The reason your React component is re-rendering is likely because you're creating a new object reference on each render cycle. When you pass an inline object as a prop, React's shallow comparison sees it as a different object every time, which triggers a re-render. I would recommend using useMemo to memoize the object."

압축 후(19 토큰): "New object ref each render. Inline object prop = new ref = re-render. Wrap in useMemo."

코드 블록과 URL, JSON 같은 구조화된 데이터는 보존 엔진(preservation engine)이 항상 원본 그대로 지켜서 압축 과정에서 훼손되지 않도록 합니다. 12개 엔진이 입력을 줄이는 축이라면, 출력 쪽에는 결정론적이고 캐시에 안전한 응답 형태 지시를 주입하는 출력 스타일(Output Styles)이 따로 있습니다. 여기에 더해 적응형 컨텍스트 예산(adaptive context-budget)은 토큰 임계값을 켜고 끄는 대신, 모델의 컨텍스트 창에 들어갈 만큼만 손실이 적고 저렴한 엔진부터 단계적으로 올립니다.

압축을 어디까지 적용할지는 우선순위가 정해져 있습니다. 요청별 x-omniroute-compression 헤더가 가장 높고, 그다음이 라우팅 콤보 오버라이드, 활성화된 이름 붙은 프로파일, 적응형 자동 트리거, 패널 기본값 순입니다. 실제로 적용된 계획은 X-OmniRoute-Compression 응답 헤더로 되돌아옵니다. 변경을 반영하기 전에 고정된 코퍼스로 충실도와 절감률을 채점하는 오프라인 평가 도구(npm run eval:compression)도 함께 제공됩니다.

OmniRoute의 연동 도구와 실행 환경

http://localhost:20128/v1 하나만 설정하면 OpenAI 호환 도구는 그대로 붙습니다. README에 이름이 올라 있는 도구는 Claude Code, Codex CLI, Cline, Kilo Code, Roo Code, Continue, Aider, OpenCode, Factory Droid, Copilot CLI, Cursor CLI, Grok Build, Goose, OpenClaw, Warp AI, Open Interpreter 등이며, Kiro와 Antigravity, Windsurf, AMP도 함께 동작합니다. 도구별 설정 방법은 저장소의 docs/reference/CLI-TOOLS.md 에 정리되어 있습니다.

실행 환경도 넓습니다. 같은 애플리케이션을 다음 방식으로 띄울 수 있습니다.

플랫폼 설치 특징
npm(전역) npm install -g omniroute 명령 하나로 모든 OS
Docker docker run … diegosouzapw/omniroute AMD64와 ARM64 멀티 아키텍처
데스크톱(Electron) npm run electron:build 네이티브 창과 시스템 트레이, Windows/macOS/Linux
ARM 네이티브 arm64 라즈베리 파이, ARM 서버, 애플 실리콘
안드로이드(Termux) pkg install nodejs && npx -y omniroute 휴대폰에서 상시 실행, 루팅 불필요
PWA 홈 화면에 추가 전체 화면, 오프라인, 브라우저에서 설치
OpenCode 플러그인 @omniroute/opencode-provider OpenCode 네이티브 통합
소스 빌드 npm install && npm run dev 직접 수정하고 기여

OmniRoute의 CLI와 MCP, A2A

OmniRoute은 서버를 띄우는 것 외에 80개 이상의 명령을 갖춘 명령줄 도구이기도 합니다.

omniroute               # 게이트웨이와 대시보드 실행 (포트 20128)
omniroute chat          # 대화형 TUI 채팅 클라이언트
omniroute setup         # 첫 실행 안내 마법사
omniroute doctor        # 제공자, 포트, 네이티브 의존성 진단

OmniRoute CLI 터미널 데모: providers list와 combo list, health 명령 출력과 80개 이상의 명령 목록이 흐르는 화면

원격 모드(remote mode)를 쓰면 OmniRoute을 VPS에 두고 같은 CLI로 노트북에서 조작할 수 있습니다. 범위가 지정된 접근 토큰으로 한 번 로그인하면 이후 모든 명령이 원격 서버를 대상으로 실행됩니다.

omniroute connect 192.168.0.15                   # 비밀번호로 토큰 발급, 컨텍스트로 저장
omniroute models list                            # 원격 서버 기준으로 실행
omniroute configure codex                        # 원격 모델을 골라 로컬 Codex 프로파일 작성
omniroute tokens create --name ci --scope read   # 다른 머신용으로 권한을 좁힌 토큰 발급
omniroute contexts use default                   # 로컬 서버로 복귀

토큰 권한은 read, write, admin 으로 나뉘고, 프로세스를 생성하는 경로는 루프백으로만 열립니다.

그리고 OmniRoute은 에이전트 프로토콜을 통해 스스로를 제어할 수 있게 열어 둡니다. 에이전트가 라우팅, 제공자, 콤보, 캐시, 압축, 메모리 같은 게이트웨이 기능을 직접 다룰 수 있습니다.

인터페이스 엔드포인트 또는 명령 용도
MCP(stdio) omniroute --mcp Claude Desktop, Cursor 등 MCP 클라이언트 연결
MCP(HTTP) /api/mcp/stream 원격 MCP, 104개 도구와 31개 스코프, 감사 추적 포함
MCP(SSE) /api/mcp/sse 스트리밍 MCP 전송
A2A /.well-known/agent.json 에이전트 간 통신, JSON-RPC 2.0과 SSE, 6개 스킬
REST API /v1/* OpenAI 호환 채팅, 임베딩, 이미지, 오디오, OCR
웹훅 /api/webhooks 사용량, 한도, 오류, 라우팅 이벤트를 지정한 URL로 전송
원격 CLI omniroute connect <host> 범위가 지정된 토큰으로 원격 인스턴스 조작

예를 들어 Claude Code에 OmniRoute의 도구 모음을 MCP로 연결하는 명령은 다음과 같습니다.

claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream

REST 쪽에는 채팅 외에 /v1/ocr(Mistral OCR)과 /v1/audio/translations 같은 엔드포인트가 추가되어 있고, 이미지와 영상, 음성 생성도 하나의 API로 묶여 있습니다.

OmniRoute의 로컬 우선 설계

프라이버시 측면에서 OmniRoute은 로컬 우선(local-first)을 표방합니다. 게이트웨이가 사용자의 하드웨어에서 실행되므로 요청 경로에 OmniRoute의 클라우드가 개입하지 않고, API 키와 OAuth 토큰은 AES-256-GCM으로 암호화되어 사용자 디스크에 저장되며, 기본 설정에서 텔레메트리를 수집하지 않습니다. 계정 가입 절차가 없고 대시보드는 로컬 비밀번호로 보호됩니다.

게이트웨이 자체에도 API 키 범위 지정, IP 필터링, 요청 한도, 프롬프트 인젝션 방어가 들어가 있습니다. 프로세스를 생성하는 경로는 루프백에서만 접근할 수 있어 터널로 토큰이 유출되어도 프로세스를 띄울 수 없고, 업스트림 호출 전에는 차단 목록에 오른 헤더를 제거합니다. 개인정보 마스킹은 기본 비활성 상태의 선택 기능이라 요청 본문이 임의로 변형되지 않으며, 오류 응답은 스택 트레이스나 내부 경로를 노출하지 않습니다. MCP 도구 호출과 관리 작업 기록은 사용자의 SQLite에 남습니다.

OmniRoute 설치 및 사용법

npm으로 전역 설치한 뒤 실행하면 대시보드와 API가 함께 뜹니다.

npm install -g omniroute
omniroute

자격 증명을 하나도 넣지 않은 상태에서도 auto 모델은 바로 응답합니다. 인증이 필요 없는 무료 제공자인 OpenCode Free와 Felo가 auto 콤보에 미리 연결되어 있기 때문입니다. 특정 무료 백엔드를 직접 부르고 싶으면 oc/...(OpenCode Free)나 felo/... 처럼 접두어를 붙이면 됩니다.

설치 직후 동작하는 3단계: npm 전역 설치, 도구를 localhost:20128/v1로 지정, auto 모델 호출로 즉시 응답. API 키와 가입, 설정이 모두 필요 없음

curl http://localhost:20128/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'

대시보드는 http://localhost:20128, API는 http://localhost:20128/v1 에서 접근합니다. 대시보드의 Providers 메뉴에서 무료 제공자(예: 인증이 필요 없는 OpenCode Free, 무료 Claude 크레딧을 주는 Kiro AI)를 연결한 다음, 코딩 도구가 아래 값을 바라보게 설정하면 됩니다.

Base URL: http://localhost:20128/v1
API Key:  [대시보드 → Endpoints 에서 복사]
Model:    auto

설정이 끝났는지는 모델 목록을 조회해 확인할 수 있습니다.

curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"

Authorization 헤더를 붙일 수 없는 클라이언트를 위해 http://localhost:20128/vscode/YOUR_KEY/ 형태의 토큰 포함 호환 경로도 열려 있지만, 저자는 헤더 인증을 기본으로 권합니다.

npm 외의 설치 방법도 여러 가지가 준비되어 있습니다.

# Docker
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
  -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest

# pnpm
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute

# Arch Linux (AUR)
yay -S omniroute-bin && systemctl --user enable --now omniroute.service

# 소스 빌드
cp .env.example .env && npm install && PORT=20128 npm run dev

Nix 플레이크와 Podman Compose도 지원합니다. 네이티브 SQLite 엔진(better-sqlite3)은 선택 의존성이라 전역 설치가 컴파일 때문에 막히지 않고, 플랫폼에 맞는 사전 빌드 바이너리가 없으면 순수 JavaScript 엔진으로 조용히 넘어갑니다. CI나 헤드리스 환경에서 설치 후 준비 단계를 건너뛰려면 OMNIROUTE_SKIP_POSTINSTALL=1 을 붙이면 됩니다.

지원 제공자와 모델의 전체 목록은 저장소의 docs/reference/PROVIDER_REFERENCE.md 에서 확인할 수 있습니다. 카탈로그는 계속 바뀌므로 제공자와 모델 수치는 문서 위치별로 다소 달라질 수 있습니다.

OmniRoute와 다른 라우터 비교

저자는 9router, OpenRouter, CLIProxyAPI, LiteLLM 네 가지 대안과 13개 항목을 비교한 표를 각 프로젝트의 공개 문서를 근거로 제시합니다. 라우팅 자체는 어느 라우터나 하지만 압축, 에이전트 프로토콜, 메모리, 가드레일까지 한 묶음으로 제공하는 쪽은 자신뿐이라는 주장입니다.

OmniRoute와 9router, OpenRouter, CLIProxyAPI, LiteLLM의 13개 항목 비교표

항목 OmniRoute 9router OpenRouter CLIProxyAPI LiteLLM
제공자 수 290 40개 이상 400개 이상(모델 기준) 약 5 100개 이상
무료 제공자 내장 90개 이상 있음 부분 없음 없음
라우팅 전략 19 2 3 2 6
토큰 압축 엔진 12개 있음 부분 없음 없음
MCP 서버 내장 도구 104개 없음 부분 없음 부분
A2A 에이전트 프로토콜 있음 없음 없음 없음 있음
영속 메모리 있음 없음 없음 없음 없음
가드레일(개인정보, 인젝션) 있음 없음 있음 없음 있음
클라우드 에이전트 있음 없음 없음 없음 없음
TLS 지문 위장(JA3, JA4) 있음 없음 없음 없음 없음
데스크톱, Termux, PWA 있음 부분 부분 부분 부분
i18n UI 로케일 43 6 없음 없음 없음
자체 호스팅과 라이선스 MIT MIT 호스팅 SaaS MIT 오픈 코어

OpenRouter의 400개 이상은 제공자가 아니라 모델 수이고 자체 호스팅이 불가능한 호스팅 SaaS라는 점을 저자가 각주로 밝히고 있습니다. 비교 근거와 항목별 상세는 docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md 에 정리되어 있습니다. 프로젝트 저자가 자기 도구를 기준으로 작성한 비교표이므로, 실제 선택 전에는 각 프로젝트의 문서를 직접 확인하는 편이 좋습니다.

OmniRoute의 기술 스택

계층 기술
런타임 Node.js 22.x, 24.x LTS
언어 TypeScript 6.0(src/open-sse/ 전체)
프레임워크 Next.js 16, React 19, Tailwind CSS 4
데이터베이스 better-sqlite3(SQLite, WAL 저널링)와 LowDB, 95개 도메인 모듈과 110개 마이그레이션
메모리 SQLite FTS5 전문 검색과 int8 양자화 벡터 임베딩, 타입별 감쇠
스키마 Zod 4로 MCP 도구 입출력 검증과 API 계약 정의
프로토콜 MCP(stdio, HTTP, SSE)와 A2A v0.3(JSON-RPC 2.0, SSE)
스트리밍 Server-Sent Events와 WebSocket 브리지(/v1/ws)
인증과 보안 OAuth 2.0(PKCE), JWT, API 키, MCP 범위 인증, 저장 시 AES-256-GCM
스텔스 wreq-js 기반 JA3, JA4 TLS 지문 위장과 3단계 프록시
로깅 pino 구조화 JSON 로그
테스트 Node.js 테스트 러너와 Vitest, 3300개 이상 파일에 2만 5천 개 이상 테스트 케이스

OmniRoute의 라이선스

OmniRoute은 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: OmniRoute 공식 홈페이지

:github: OmniRoute 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: