# 🚀 OmniRoute — La puerta de enlace de IA gratuita
## 💰 ~1.62B Tokens / mes entre los niveles gratuitos de terceros
> **Trae tus propias cuentas de proveedor.** Esta es una estimación agregada de los niveles gratuitos de terceros elegibles de forma independiente, no una concesión de tokens de OmniRoute. Regístrate, obtén credenciales cuando sea necesario y conecta los proveedores que puedas usar; cada proveedor controla sus límites, disponibilidad y términos.
>
> Acumular niveles gratuitos a mano es complicado: decenas de SDKs, decenas de límites de tasa y sin idea de cuánto tienes realmente. OmniRoute cataloga **467 entradas de nivel gratuito en 34 claves de pool recurrentes** y calcula la cifra principal de tokens a partir de los **17 pools con un presupuesto mensual positivo publicado, más cinco límites de Groq por modelo**, deduplicados por pool compartido. Las cuotas que solo se abren tras una verificación de identidad regional (hoy: ModelScope) se muestran aparte, +~6M sujetos a verificación de identidad regional, y nunca se suman a la cifra principal. El resultado permanece visible en el panel (`/dashboard/free-tiers`).
> Resumen animado de la página en vivo `/dashboard/free-tiers`. Metodología completa (deduplicación de pools, niveles de crédito, términos de proveedores): **[docs/reference/FREE_TIERS.md](docs/reference/FREE_TIERS.md)**.
>
> Estas cifras se reauditan cada dos semanas contra el catálogo en vivo y **cambian en ambas direcciones**: un proveedor pone fin a un nivel gratuito y la cifra baja; aparece uno nuevo y sube. Publicamos lo que el catálogo calcula realmente, nunca un mejor caso redondeado al alza.
⭐ Dale una estrella al repositorio si OMNIROUTE te ayudó a ahorrar dinero y facilitar tu trabajo.
[](https://github.com/diegosouzapw/OmniRoute)
[](https://www.star-history.com/diegosouzapw/omniroute)
[](https://olud.ai/project/diegosouzapw-omniroute.html)
### 💬 Únete a la comunidad
**👋 Sigue al mantenedor: entérate primero de nuevos proveedores, versiones y consejos:**
[](https://www.linkedin.com/in/diegosouzapw/)
[](https://github.com/diegosouzapw)
[](https://discord.gg/U47eFqAXCn)
[](https://t.me/omnirouteOficial)
[](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4)
[](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4)
[](https://omniroute.online)
**Preguntas, consejos de proveedores, hoja de ruta y soporte → [Discord](https://discord.gg/U47eFqAXCn) · [Telegram](https://t.me/omnirouteOficial) · WhatsApp [🌍 Global](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) / [🇧🇷 Brasil](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) / [Portal](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK)**
## 📈 El Gateway sigue creciendo
| | v3.8.50 | **v3.8.51** | `v3.8.53+` |
| ----------------------------------- | :-----------------------: | :---------: | :-----------------------: |
| 🌐 Proveedores | 352 | **358** | 375 |
| 🧠 IDs únicos de modelos de chat | 1320 | **1374** | 1475 |
| 🖼️ Puente de modalidades | 🆕 visión + audio + vídeo | ✓ | ✓ |
| 📡 Catálogo gratuito de Radar | 🆕 participación opcional | ✓ | ✓ |
| ⚖️ Planificación según cuota | 🆕 Quota-Share | ✓ | ✓ |
| 📊 Telemetría de cuota | 🆕 en tiempo real | ✓ | ✓ |
| 🧰 Modo sin interfaz | — | — | 🆕 `serve --headless` |
| 🛤️ Infraestructura de la rama LTS | — | — | 🆕 canales de publicación |
| 🔎 API de descubrimiento de modelos | — | — | 🆕 `/v1/models/query` |
**→ [Hoja de ruta](ROADMAP.md) — avanzando por la vía hacia `v3.9.0 LTS`**
## 🧩 Disponible
[](https://www.npmjs.com/package/omniroute)

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


## 🆓 Instala, conecta un proveedor y enruta a través de un único endpoint
```bash
# Después de conectar un proveedor, copia tu clave de OmniRoute desde Dashboard → Endpoints:
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer YOUR_OMNIROUTE_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"auto","messages":[{"role":"user","content":"Hello!"}]}'
```
`auto` necesita una ruta elegible. Una instalación recién hecha puede no tener destinos elegibles sin clave, y un proveedor sin clave puede rechazar clientes de terceros. Los proveedores marcados con `tos: avoid`, incluido Kiro, se excluyen del enrutamiento automático de forma predeterminada; conectar una cuenta no anula esa configuración. Consulta la [Guía de planes gratuitos](docs/getting-started/FREE-TIERS-GUIDE.md) antes de elegir un proveedor.📦 Scripts de inicio rápido para copiar y pegar en **Python, Node.js, PHP y cURL** → [`examples/quickstart/`](examples/quickstart/)
# 💥 La promesa
# 🤔 ¿Por qué OmniRoute?
## 🤝 Con el apoyo de nuestros amigos del código abierto
> **¿Quieres unirte como amigo del código abierto?** Estas son las empresas que respaldan el código abierto y ayudan a que OmniRoute siga avanzando, y explicamos públicamente a dónde va cada token que nos proporcionan. Contáctanos: [diegosouza.pw@outlook.com](mailto:diegosouza.pw@outlook.com)
Kimi Moonshot AI
¡Gracias a Kimi (Moonshot AI), nuestro amigo fundador del código abierto, por respaldar este proyecto! Kimi es el laboratorio de IA responsable de las familias de modelos de pesos abiertos K2 y K3. Kimi K3 ofrece una ventana de contexto de 1 millón de tokens, visión nativa y programación de nivel de frontera por una fracción del precio de los modelos cerrados, y funciona de inmediato con Claude Code, Codex y todas las herramientas de programación compatibles con OmniRoute.
Lo que hace posible el apoyo de Kimi: los créditos de la API de Kimi impulsan el proceso de lanzamientos de OmniRoute validado por IA —la etapa de validación de fusiones impulsada por Kimi K3, que revisa cada solicitud de incorporación antes de su publicación—, además del desarrollo diario de funcionalidades. La compatibilidad de primera clase con Kimi se ofrece por ambas vías: la API de Kimi directa (kimi-k3) y el plan de programación Kimi Code (OAuth y clave de API). OmniRoute también es el primer proyecto brasileño de código abierto que forma parte del programa de apoyo de Kimi. Obtén una clave de la API de Kimi con un 15 % de créditos adicionales →
Cheaper Inference cheaperinference.com
¡Gracias a Cheaper Inference, un amigo del código abierto de OmniRoute, por respaldar este proyecto! Cheaper Inference es una puerta de enlace clasificada por coste que revende 42 modelos de frontera —Claude, GPT-5.x, Gemini, Kimi K3, GLM, DeepSeek, Grok y MiniMax— mediante un único endpoint compatible con OpenAI, dirigiendo cada solicitud al proveedor elegible más barato sin cobrar nunca por encima del precio de lista del creador del modelo.
Compatibilidad de primera clase en OmniRoute: Chat Completions, el endpoint nativo /v1/responses, visión, llamadas a herramientas y 3 modelos de imágenes (grok-imagine, nano-banana-pro, nano-banana-2, accesibles como cheaperinference/<model>). Obtén una clave de API →
Los enlaces etiquetados con aff=omniroute son enlaces de socios. Financian el proyecto sin ningún coste adicional para ti. 🎟️ Promociones de afiliados — cupones gratuitos de registro de proveedores que no nos patrocinan (haz clic para desplegar)Esta sección es únicamente para códigos de recomendación o cupones. Las colaboraciones patrocinadas aparecen arriba, en 🤝 Con el apoyo de nuestros amigos del código abierto. OmniRoute no mantiene ningún patrocinio ni colaboración con los proveedores aquí indicados; estos son cupones públicos que cualquiera puede utilizar.
AgentRouter agentrouter.org
AgentRouter — registro de afiliado · $100 en créditos gratuitos al registrarte (servidor gratuito; puede tener una latencia mayor, por lo que es más adecuado para pruebas que para producción). Compatibilidad de primera clase en OmniRoute desde la versión v3.8.50: Chat Completions, el formato de transmisión compatible con Anthropic y la ruta compatible con OpenAI. Los modelos disponibles incluyen claude-opus-4-8, claude-opus-5, gpt-5.6-sol y más. Consigue tus $100 →
⚠️ Enlace de afiliado: OmniRoute no mantiene ningún patrocinio ni colaboración con este proveedor.
¿Conoces otro proveedor con un generoso cupón gratuito de registro que beneficie a los usuarios de OmniRoute? Abre una incidencia y lo añadiremos aquí.
## 🎯 Combos — La función estrella
> Un **combo** es una cadena de modelos entre los que OmniRoute enruta **automáticamente**. Si se agota la cuota, falla un proveedor o se disparan los costes, el combo puede pasar al siguiente modelo apto y en buen estado. 🛡️
### ⚡ Sin configuración: solo usa `auto`
No es necesario crear ningún combo. Establece tu modelo como `auto` (o una variante) y OmniRoute crea un combo virtual a partir de tus proveedores conectados, evaluados en tiempo real:
ID del modelo
Qué optimiza
auto
🎯 Opción predeterminada equilibrada (LKGP: mantiene tu último proveedor que funcionó correctamente)
auto/coding
🧑💻 Ponderaciones que priorizan la calidad para la generación de código
auto/fast
⚡ Primero, la latencia más baja
auto/cheap
💰 Primero, el menor coste por token
auto/subscription
🎟️ Solo la cuota de suscripción que ya pagas: se detiene de forma segura y nunca recurre a una alternativa facturable (guía)
auto/thrifty
🪜 Primero la cuota del plan y, después, un escalón a la vez hacia las opciones de pago más baratas; vuelve al plan cuando se restablece (guía)
auto/offline
🔋 Primero, el mayor margen de cuota o límite de solicitudes
auto/smart
🔭 Prioriza la calidad + un 10 % de exploración para descubrir mejores modelos
auto/lkgp
📌 Afinidad explícita con el último proveedor que funcionó correctamente
auto/chaos
🧪 Distribución paralela a un panel de modelos (uno por proveedor, 5 de forma predeterminada) que devuelve una respuesta; una llamada ascendente por cada modelo del panel, no es una inyección de fallos
##
### 🔀 O crea el tuyo propio: 20 estrategias de enrutamiento
Las **20** estrategias: combínalas como quieras en cada paso del combo:
#
Estrategia
Qué hace
1
priority
Lista ordenada por el primer destino: agota cada uno antes de pasar al siguiente 🥇
2
fill-first
Consume por completo la cuota de cada destino antes de continuar
3
weighted
Selección aleatoria ponderada según el peso de cada destino
4
round-robin
Recorre los destinos en orden de forma cíclica
5
p2c
Equilibrio de carga aleatorio mediante la elección entre dos opciones
6
least-used
Elige el destino con la menor carga actual
7
random
Selección aleatoria uniforme (sin duplicados)
8
strict-random
Selección aleatoria sin eliminar repeticiones 🎲
9
cost-optimized
Minimiza el coste por solicitud según los precios del catálogo en tiempo real 💸
10
headroom
Elige el destino con la mayor cuota restante
11
quota-weighted
Omite las cuentas agotadas y, después, selecciona en proporción a la cuota restante ÷ la carga en curso; las conversaciones existentes permanecen fijadas ⚖️
12
reset-window
Prefiere el destino cuya ventana de cuota se restablezca antes
13
reset-aware
Ordena por el momento de restablecimiento de la cuota, priorizando las ventanas cortas 📊
14
context-relay
Transfiere el contexto entre destinos en conversaciones largas 🧠
15
context-optimized
Elige la opción que mejor se adapte al tamaño del contexto actual
16
cache-optimized
Fija cada prefijo reutilizable del prompt a la misma cuenta para maximizar los aciertos de la caché de prompts 🎯
17
lkgp
Última ruta conocida que funcionó correctamente: fija el último proveedor que tuvo éxito y, después, recurre a las reglas
18
auto
Evaluación en tiempo real de 16 factores en todas las conexiones 🤖
19
fusion
Distribuye la solicitud a un panel de modelos y un juez sintetiza una única respuesta 🧬
20
pipeline
Encadena pasos: la salida de cada destino alimenta al siguiente 🔗
El motor Auto-Combo puntúa cada candidato según **16 factores** (estado, cuota, coste, latencia, adecuación a la tarea, calidad, disponibilidad de sesión…) — consulta [`docs/routing/AUTO-COMBO.md`](docs/routing/AUTO-COMBO.md).
##
### 🧱 La resiliencia está integrada (3 capas independientes)
📖 [Motor Auto-Combo](docs/routing/AUTO-COMBO.md) · [Guía de resiliencia](docs/architecture/RESILIENCE_GUIDE.md)
## 🏆 Qué diferencia a OmniRoute
📊 Metodología completa y detalles de cada funcionalidad frente a 9router, OpenRouter, CLIProxyAPI y LiteLLM → [`docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md`](docs/comparison/OMNIROUTE_VS_ALTERNATIVES.md)
## 💚 Apoya a OmniRoute
OmniRoute tiene licencia MIT y se mantiene de forma abierta. Si te ahorra tiempo o dinero, estas son algunas formas de ayudar a que siga siendo independiente; elige la que mejor se adapte a ti. El patrocinio nunca afecta la prioridad de enrutamiento; proporciona visibilidad, no una mejor posición.
**🇧🇷 PIX** — instantáneo, sin comisiones (Brasil)
Clave (aleatoria): `5d865059-bc44-483a-962d-43ceb80126eb`
Pix para copiar y pegar:
```
00020101021126580014br.gov.bcb.pix01365d865059-bc44-483a-962d-43ceb80126eb5204000053039865802BR5922OMNIROUTE CONTRIBUICAO6006BRASIL62070503***630475DD
```
₿ Criptomonedas — BTC · ETH · USDT-TRC20 · USDC-Solana (haz clic para desplegar)
₿ BTC
Bitcoin (SegWit)
bc1qh00smz004sy85wyl28v77tenkt3ckl6eaep7fd
Ξ ETH
Ethereum (ERC20)
0x64Cf6B68A6Ff34288e89172950a2d00102337a84
₮ USDT
Tron (TRC20)
TKAF41JpuQrHbKTnsQa9svJE2T192Hvsc2
$ USDC
Solana
2emNNZzVVWQc3FQ2wk9M6qXUQmW8AKdjjL174fXR28Tu
⚠️ Envía cada moneda únicamente a través de la red indicada; si la envías por la red equivocada, podrías perder los fondos.
🐛 ¿Has encontrado un error o tienes algún comentario? Abre una [Discusión](https://github.com/diegosouzapw/OmniRoute/discussions).
Notas para desarrolladores: El proyecto puede generar un archivo local .env durante la instalación o posinstalación con npm para facilitar el trabajo de los desarrolladores. Este archivo se ignora intencionadamente mediante .gitignore (consulta .gitignore) y nunca debe incluirse en un commit; si se incluye por accidente, cambia todos los secretos expuestos y elimina el archivo del historial. Consulta docs/DEVELOPER-ENVIRONMENT.md para obtener orientación sobre cómo gestionar los archivos de entorno locales y los secretos.
## 📡 Radar de OmniRoute
El principal límite destacado del nivel gratuito sigue siendo de **~1,62 mil millones de tokens/mes**, según el catálogo documentado y sin duplicados entre proveedores que aparece arriba. Los créditos temporales por registro de algunos proveedores pueden aumentar por separado el primer mes hasta **~2,22 mil millones**. Radar es una capa de catálogo opcional y firmada para quienes deseen información más actualizada sobre la disponibilidad de modelos gratuitos entre las versiones de OmniRoute; el catálogo de la comunidad y todas las funciones gratuitas existentes seguirán siendo gratuitos.
Los colaboradores pueden recibir el catálogo en tiempo real y oportunidades adicionales de proveedores. Su límite independiente y variable es de **aproximadamente 3 mil millones de tokens/mes como máximo**, en función de la disponibilidad de los proveedores. Este límite no está garantizado: los proveedores pueden modificar las cuotas, los requisitos de acceso, los modelos o las regiones en cualquier momento.
Radar es opcional y solo utiliza GET. El cliente de OmniRoute no carga prompts, tráfico, configuraciones de proveedores, telemetría de uso ni el estado local de descarte de avisos. Consulta los requisitos de acceso y el catálogo actual en **[radar.omniroute.online/planos](https://radar.omniroute.online/planos)**.
## ✨ Novedades
> Aspectos destacados recientes de **v3.8.20 → v3.8.53**. Historial completo en [`CHANGELOG.md`](CHANGELOG.md).
- **⚖️ Enrutamiento `quota-weighted`** — la vigésima estrategia de combo omite las cuentas agotadas y luego elige entre las restantes en proporción a la cuota restante ÷ la carga en curso, manteniendo fijadas las conversaciones existentes. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🧰 Modo headless** — `omniroute serve --headless` (o `OMNIROUTE_HEADLESS=1`) ejecuta solo el motor de proxy `/v1/*`, con el dashboard y los subsistemas exclusivos del dashboard desactivados. → [Modo headless](docs/guides/HEADLESS.md)
- **🔎 Descubrimiento de modelos** — `/v1/models` filtra por capacidad, contexto, tipo y texto, y `POST /v1/models/query` devuelve una lista corta determinista con la misma visibilidad por clave. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **🔑 Control de enrutamiento por clave** — fija una clave de API a un modelo o combo con `forcedModel`, y añade o elimina los modelos y combos de una clave de forma atómica (`/api/keys/{id}/access`). → [Referencia de API](docs/reference/API_REFERENCE.md) · [OpenAPI](docs/openapi.yaml)
- **🛡️ Controles de PII más precisos** — selección por tipo, hasta 20 patrones personalizados de enmascaramiento validados y contadores de detección por tipo; el enmascaramiento en sí sigue siendo opcional. → [Guardrails](docs/security/GUARDRAILS.md)
- **🌍 67 idiomas** — dashboard, réplicas de documentación y CLI, con `npm run i18n:add-locale` que añade un idioma en todas partes con un solo comando. → [Guía de i18n](docs/guides/I18N.md)
- **🎛️ OmniConductor** — delegación A2A entrante hacia tu flota de agentes, habilidades de Conductor en la Agent Card y un panel del dashboard con chat de voz push-to-talk de Faro. → [Servidor A2A](docs/frameworks/A2A-SERVER.md)
- **🛂 Admisión adaptativa y protección contra sobrecarga** — las solicitudes de chat pesadas se ponen en cola en lugar de devolver 503, con leases rotativos de RPM atómicos por conexión. → [Guía de resiliencia](docs/architecture/RESILIENCE_GUIDE.md)
- **🗂️ Orden canónico de `/v1/models`** — un bloque contiguo agrupado por proveedor para cada proveedor (combos fijados primero), estable en todas las fuentes de catálogo. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **🗜️ Refuerzo de compresión** — protección contra inflación activada por defecto, paquetes Caveman para DE / FR / JA + chino (wényán), filtros RTK para Gradle y .NET. → [Compresión](docs/compression/COMPRESSION_ENGINES.md)
- **💸 Coste real de tarifa plana** — los proveedores de suscripción / plan de programación muestran **$0** en los análisis de costes; el presupuesto, la cuota y el enrutamiento siguen estimando. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **⚖️ Enrutamiento Quota-Share** — reparte de forma justa la cuota de una cuenta compartida entre claves agrupadas, con conservación de trabajo para que las porciones inactivas se presten. → [Guía de resiliencia](docs/architecture/RESILIENCE_GUIDE.md)
- **🤖 Configuración de CLI/agentes con un solo comando** — 15 comandos `setup-*` registrados; `omniroute run` inicia 7 CLI (Claude Code, Codex, Aider, Goose, OpenCode, Qwen Code, Gemini CLI); `omniroute configure` admite 11 destinos con un selector interactivo de proveedor+modelo y favoritos por contexto. → [Integraciones de CLI](docs/guides/CLI-INTEGRATIONS.md)
- **🛰️ Modo remoto** — controla una instancia remota de OmniRoute con tokens con alcance (`connect` / `contexts` / `tokens`) + un asistente OAuth `antigravity` para instalaciones en VPS. → [Modo remoto](docs/guides/REMOTE-MODE.md)
- **🧭 Enrutamiento automático más inteligente** — combos `auto/:`, **Fusion** (panel de modelos + juez), enrutamiento consciente de la tarea, anulaciones por solicitud de modelo / modo / presupuesto en USD. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **🗜️ Compresión conectable** — 12 motores composables + Compression Studios: LLMLingua-2, Ultra de dos niveles, omniglyph, puerta de fidelidad por paso, GCF v3.2, editor de reordenación por arrastre. → [Compresión](docs/compression/COMPRESSION_ENGINES.md)
- **🕵️ Descifrado MITM transparente (TPROXY)** — captura CLI que ignoran las variables de entorno del proxy, con una CA por SNI + instalador en el almacén de confianza. → [MITM/TPROXY](docs/security/MITM-TPROXY-DECRYPT.md)
- **💸 Telemetría de costes en todas partes** — cabeceras de coste/uso `X-OmniRoute-*` en cada endpoint, cabecera de ahorro por HIT de caché, cuotas de gasto en USD por clave. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **🧠 Memoria bajo tu control** — desactivada por defecto, cuantización vectorial int8 + decaimiento tipado opcionales, `x-omniroute-no-memory` por solicitud. → [Memoria](docs/frameworks/MEMORY.md)
- **🛡️ Seguridad** — protección contra inyección de prompts en cada ruta de LLM (suite de red team), barrera de enmascaramiento de credenciales opcional (redacta claves de API/secretos filtrados en ambas direcciones), búsqueda web gratuita de último recurso con DuckDuckGo y una puerta de inicio de sesión OIDC opcional para el dashboard (el inicio de sesión con contraseña siempre sigue disponible). → [Guardrails](docs/security/GUARDRAILS.md)
- **🖼️ Nuevos endpoints** — `/v1/ocr` (Mistral OCR) y `/v1/audio/translations` (estilo Whisper) completan la superficie multimedia. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **🎨 Generación de imágenes / vídeo / audio** — una API para multimedia: vídeo de xAI Grok Imagine y Novita AI, ComfyUI, Magnific, Adobe Firefly, Segmind y proveedores de voz como ElevenLabs. → [Referencia de API](docs/reference/API_REFERENCE.md)
- **🌍 Despliegue y operaciones** — `basePath` de proxy inverso, detección automática del idioma del navegador, seguimiento de dispositivos por clave, confianza MITM sin root, localización zh-TW. → [Entorno](docs/reference/ENVIRONMENT.md)
- **🤝 Más proveedores y agentes** — agentes en la nube (Codex Cloud, Cursor, Devin, Jules), Grok Build (xAI) con inicio de sesión por navegador + OAuth, tarjeta de primera clase de Ollama, Claude Opus 5 y Sonnet 5, asociación oficial con Kimi (Code/Web/Moonshot), Zed, Requesty, SenseNova, Yuanbao, Agnes AI… y un **catálogo de 375 proveedores** renovado. → [Proveedores](docs/reference/PROVIDER_REFERENCE.md)
- **📡 Transparencia de enrutamiento** — cada respuesta incluye una cabecera `X-OmniRoute-Decision` que indica la estrategia/proveedor/latencia que la atendió, una nueva estrategia de combo `cache-optimized` + el factor `cacheAffinity` de Auto-Combo enrutan las solicitudes repetidas de vuelta a la conexión que mantiene el prefijo en caché, y un endpoint de solo lectura `/v1/auto-combo/{channel}/candidates` expone el grupo de candidatos activo de un canal `auto/*`. → [Auto-Combo](docs/routing/AUTO-COMBO.md)
- **⚡ Rendimiento e infraestructura locales** — Redis local con un solo clic, desplegadores relay de Cloudflare Workers / Deno Deploy, Bifrost y Mux como servicios embebidos supervisados. → [Servicios embebidos](docs/frameworks/EMBEDDED-SERVICES.md)
- **🧩 También incluido** — framework de plugins + marketplace, frameworks de skills Omni/Agent/GitHub, integración con el vault de Obsidian (22 herramientas MCP), APIs Batch y Files compatibles con OpenAI, caché semántica de respuestas, gamificación con tablas de clasificación, descubrimiento de agentes ACP (15 agentes integrados), exportación programada de logs a BigQuery, fan-out paralelo multimodelo `auto/chaos`, un puente de bot de Telegram, un gestor de versiones integrado en la aplicación y rankings de proveedores gratuitos LMArena-ELO. → [Documentación](docs/README.md)
## 🤖 CLI y agentes de programación compatibles
> Una sola configuración — `http://localhost:20128/v1` — y **todos** los IDE o CLI de IA funcionan con modelos gratuitos y de bajo coste.
+ también funciona con · Agent Deck · Kiro · Command Code · Antigravity · Windsurf · AMP · cualquier herramienta compatible con OpenAI
📖 Configuración específica para las 37 herramientas (27 CLI de código + 10 agentes CLI) → [`docs/reference/CLI-TOOLS.md`](docs/reference/CLI-TOOLS.md) · 🧩 Plugin de OpenCode → [`@omniroute/opencode-provider`](https://www.npmjs.com/package/@omniroute/opencode-provider)
**Ejecuta cualquier CLI compatible mediante OmniRoute con un solo comando** — sin escribir archivos de configuración,
con las credenciales inyectadas en cada proceso y un directorio personal aislado y desechable para Qwen/Gemini:
```bash
omniroute run claude --model openai/gpt-5.4 # Claude Code
omniroute run codex --model glm/glm-5.2 # CLI de OpenAI Codex
omniroute run aider --model glm/glm-5.2 -- --message "reply OK"
omniroute run goose --model glm/glm-5.2
omniroute run opencode --model glm/glm-5.2 -- run "reply OK"
omniroute run qwen --model glm/glm-5.2 -- -p "reply OK"
omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p "reply OK"
# O elige el proveedor y el modelo de forma interactiva y escribe la configuración propia de la herramienta:
omniroute configure codex # también: claude opencode qwen aider goose gemini cline continue kilo 5dive
```
Todos los comandos respetan el contexto remoto activo (`omniroute connect `), `--dry-run`
muestra una vista previa de las variables de entorno y los argumentos exactos sin ejecutar nada, y `--api-key-env NAME` evita que los secretos
aparezcan en el historial del shell. → [Integraciones de CLI](docs/guides/CLI-INTEGRATIONS.md)
## 🌐 375 proveedores de IA — 153 marcados como gratuitos en el catálogo
> **375 proveedores registrados** en las colecciones canónicas de chat, medios, búsqueda, local, agente en la nube y sistema, incluidos **153 que llevan metadatos de descubrimiento `hasFree: true`**. El registro de modelos de chat abarca **239 proveedores / 3,059 pares proveedor-modelo distintos / 1,475 ID de modelo sin procesar**; el catálogo independiente de presupuesto gratuito tiene **467 filas por modelo**, **34 grupos recurrentes** y **51 proveedores gratuitos para siempre recurrentes/sin clave**. Estos son denominadores diferentes por diseño; las definiciones y los cálculos con deduplicación de grupos se encuentran en la [Provider Reference](docs/reference/PROVIDER_REFERENCE.md) y [Free Tiers](docs/reference/FREE_TIERS.md).
### 🏢 Todos los laboratorios principales — a través de un único endpoint
OpenAI
Anthropic
Gemini
xAI Grok
DeepSeek
Mistral
Qwen
Meta Llama
Groq
NVIDIA
MiniMax
Cohere
Perplexity
HuggingFace
Together
Fireworks
Cloudflare
Baidu
…y más de 350 — cada icono se resuelve en vivo desde el catálogo de proveedores del panel. 📖 [Provider Reference](docs/reference/PROVIDER_REFERENCE.md)
### 🆓 Gratis para siempre — $0, sin tarjeta
OpenCode Zen DeepSeek V4, Nemotron 3 Sin límite de tokens
Kilo Code Auto-router, Tencent Hy3 Gratis para siempre
Requesty GPT-OSS 120B, Nemotron Gratis para siempre
SiliconFlow DeepSeek V3.2 / R1 Nivel gratuito
Z.AI GLM GLM-4.7 / 4.5-Flash Gratis para siempre
Baidu ERNIE ERNIE 4.0 Gratis para siempre
Qoder AI Qwen3-Max, Kimi-K2 GRATIS ilimitado
Pollinations GPT, Llama, Claude No se necesita clave
Cloudflare AI Más de 50 modelos 10K neuronas/día
NVIDIA NIM GLM, MiniMax ~40 RPM gratis
Cerebras GLM 4.7, GPT-OSS Crédito único de $5; se requiere tarjeta
OpenRouter modelos :free +$10 → mayor RPM
📖 Catálogo completo legible por máquina → [`docs/reference/PROVIDER_REFERENCE.md`](docs/reference/PROVIDER_REFERENCE.md)
## 🖥️ Dónde se ejecuta OmniRoute — en cualquier lugar
> La misma aplicación, tu máquina, tus reglas. Desde una instalación global de npm hasta **tu teléfono** mediante Termux.
Plataforma
Instalación
Aspectos destacados
📦 npm (global)
npm install -g omniroute
Un solo comando, cualquier SO
🐳 Docker
docker run … diegosouzapw/omniroute
Multiarquitectura: AMD64 + ARM64
🖥️ Escritorio (Electron)
npm run electron:build
Ventana nativa + bandeja del sistema — Windows / macOS / Linux
🎩 Barra de menús (OmniRouteTray)
brew install --cask zoispag/tap/omniroute-tray
Supervisa y actualiza automáticamente el servidor — macOS
💪 ARM
arm64 nativo
Raspberry Pi, servidores ARM, Apple Silicon
📱 Android (Termux)
pkg install nodejs && npx -y omniroute
Se ejecuta en tu teléfono, las 24 horas, sin root
📲 PWA
"Añadir a la pantalla de inicio"
Pantalla completa, sin conexión, instalable desde el navegador
🧩 Plugin de OpenCode
@omniroute/opencode-provider
Integración nativa con OpenCode
🤖 VS Code Copilot Chat
instala la extensión OmniCopilot
Todos los modelos de OmniRoute en el selector nativo de Copilot Chat — versión estable e Insiders
🛠️ Desde el código fuente
npm install && npm run dev
Modifícalo, contribuye
📖 [Guía de Docker](docs/guides/DOCKER_GUIDE.md) · [Escritorio](electron/README.md) · [Bandeja de la barra de menús](https://github.com/zoispag/omniroute-tray) · [Termux](docs/guides/TERMUX_GUIDE.md) · [PWA](docs/guides/PWA_GUIDE.md) · [OpenCode](docs/frameworks/OPENCODE.md)
### 🧩 Novedad: OmniRoute dentro del Copilot Chat nativo de VS Code
> Sin una nueva barra lateral ni una nueva interfaz de chat: cada modelo ofrecido por OmniRoute aparece directamente en el
> **selector de modelos de Copilot Chat que ya utilizas**. Desde VS Code 1.122, los modelos de proveedores funcionan
> sin iniciar sesión en GitHub ni disponer de una suscripción a Copilot — modo agente, llamadas a herramientas y visión,
> gratis.
Instala la extensión **[OmniCopilot](https://github.com/diegosouzapw/OmniCopilot)**, conéctala
a tu servidor OmniRoute (de forma predeterminada, `localhost:20128`) y abre Copilot Chat → selector de modelos
→ **Administrar modelos…** → **OmniRoute**.
Desde el editor: abre la vista **Extensiones**, busca **"OmniRoute"** y haz clic en **Instalar**
— funciona de la misma forma en ambas tiendas. El código fuente, los problemas y el manual de publicación se encuentran en
[diegosouzapw/OmniCopilot](https://github.com/diegosouzapw/OmniCopilot).
📖 [Guía de VS Code Copilot Chat](docs/guides/VSCODE-COPILOT.md) — configuración, qué muestra el selector, panel en una pestaña y resolución de problemas
### 🎩 Novedad: OmniRouteTray — tu puerta de enlace en la barra de menús
> `omniroute serve` funciona mejor cuando está siempre activo. **[OmniRouteTray](https://github.com/zoispag/omniroute-tray)**
> lo convierte en una aplicación para la barra de menús de macOS que puedes configurar y olvidar: inicia el servidor, lo mantiene activo
> tras los reinicios, lo actualiza en el mismo lugar y deja tu presupuesto de tokens en tiempo real a un solo clic — **sin
> dejar abierta una ventana del terminal ni tener que ocuparte de `npm install -g omniroute`.**
Creado con [Tauri v2](https://v2.tauri.app/) (un núcleo de Rust minúsculo), incluye
su propio entorno de ejecución firmado de Node 24 y gestiona una instalación de OmniRoute propiedad de la aplicación, por lo que nunca entra en conflicto con tus
instalaciones globales de `node`/`bun`. **Comparte tu configuración y base de datos existentes en `~/.omniroute/`** — así que es el
mismo OmniRoute que ya utilizas, solo que con sombrero. 🎩
Qué hace
Cómo
🟢 Supervisa el servidor
Inicia omniroute serve y adopta una instancia que ya esté en ejecución en lugar de duplicarla
📊 Uso en tiempo real de un vistazo
Barras de cuota de los proveedores, límites de sesión/semanales de Claude con cuenta atrás hasta el restablecimiento y desglose de costes de 30 días
🔄 Actualización automática en el mismo lugar
Instalación por etapas, sustitución atómica y reversión en caso de fallo — siempre en la versión más reciente
🚀 Inicio al iniciar sesión
Inicio opcional al iniciar sesión; solo en la bandeja, sin icono en el Dock
🩺 Diagnóstico y registros
Diagnóstico con un solo clic y acceso a los registros del servidor
```sh
brew install --cask zoispag/tap/omniroute-tray
```
¿Prefieres una descarga? Obtén el archivo .dmg más reciente en
Versiones. El código fuente, las incidencias y la documentación de compilación
están disponibles en zoispag/omniroute-tray.
💛 Un proyecto comunitario de @zoispag, no una versión oficial de OmniRoute.
## 🔒 Privado y con prioridad local
📖 [Autorización](docs/architecture/AUTHZ_GUIDE.md) · [Medidas de protección](docs/security/GUARDRAILS.md) · [Cumplimiento](docs/security/COMPLIANCE.md)
## 🔌 CLI completa + A2A y MCP
> Más allá del servidor, OmniRoute es una **cabina completa de línea de comandos** con **más de 80 comandos**, además de protocolos abiertos para agentes que permiten que un agente de IA lo controle **por sí solo**.
### ⌨️ Una CLI de verdad (no solo `start`)
```bash
omniroute # sirve la puerta de enlace + el panel (puerto 20128)
omniroute chat # cliente de chat TUI interactivo (comandos con barra: /model /combo /skill /memory)
omniroute setup # asistente guiado para la primera ejecución
omniroute doctor # diagnostica proveedores, puertos y dependencias nativas
```
### 🛰️ Modo remoto — ejecuta la CLI aquí y OmniRoute en un VPS
¿OmniRoute está en un servidor? Contrólalo desde tu portátil con la **misma CLI**. Inicia sesión una vez
con un token de acceso con alcance; a partir de entonces, todos los comandos apuntarán al servidor remoto.
```bash
omniroute connect 192.168.0.15 # contraseña → token con alcance, guardado como contexto
omniroute models # ← se ejecuta en el servidor REMOTO
omniroute configure codex # ← selecciona un modelo remoto y crea un perfil local de Codex
omniroute tokens create --name ci --scope read # genera tokens más restringidos para otras máquinas
omniroute contexts use default # ← vuelve al servidor local
```
Los tokens tienen los alcances `read` / `write` / `admin`; las rutas que inician procesos siguen siendo accesibles únicamente desde la interfaz de bucle invertido.
📖 [Modo remoto](docs/guides/REMOTE-MODE.md)
### 🤝 Conecta un agente — y controlará el propio OmniRoute
Expón OmniRoute mediante **MCP**, **A2A**, una **API REST**, **webhooks** o una **CLI remota**: cualquier agente compatible (o tu propio código) obtiene acceso a toda la puerta de enlace: enrutamiento, proveedores, combinaciones, caché, compresión y memoria, de forma autónoma. Los endpoints HTTP que aparecen a continuación están disponibles en `http://localhost:20128`.
Interfaz
Endpoint / comando
Úsalo para
🧰 MCP (stdio)
omniroute --mcp
Integrarlo con Claude Desktop, Cursor o cualquier cliente MCP
🌊 MCP (HTTP)
/api/mcp/stream
MCP remoto: 110 herramientas, 33 alcances (aplicación opcional) y registro de auditoría completo
📡 MCP (SSE)
/api/mcp/sse
Transporte MCP por streaming
🤝 A2A
/.well-known/agent.json
De agente a agente, JSON-RPC 2.0 + SSE, 6 habilidades
🌐 API REST
/v1/*
Compatible con OpenAI: chat, embeddings, imágenes, audio y OCR
🔔 Webhooks
/api/webhooks
Envía eventos de solicitudes y cuotas a Slack, Discord, Telegram o cualquier URL
🛰️ CLI remota
omniroute connect
Controla una instancia remota con tokens de acceso con alcance
```bash
# Proporciona a Claude Code el conjunto completo de herramientas de OmniRoute mediante MCP:
claude mcp add-server omniroute --type http --url http://localhost:20128/api/mcp/stream
```
📖 [Servidor MCP](docs/frameworks/MCP-SERVER.md) · [Servidor A2A](docs/frameworks/A2A-SERVER.md) · [Protocolos para agentes](docs/frameworks/AGENT_PROTOCOLS_GUIDE.md)
## 🗜️ Ahorra entre un 15 y un 95% de tokens — automáticamente
### 📖 Cómo funciona — pipeline, arquitectura y cálculo de ahorros
La combinación apilada predeterminada ejecuta `RTK → Caveman`. Cuando ambas actúan sobre el mismo payload de herramienta/contexto, los ahorros se multiplican:
```txt
combined = 1 − (1 − RTK) × (1 − Caveman_input)
average = 1 − (1 − 0.80) × (1 − 0.46) = 89.2%
range = 78.4 – 94.6%
```
Los bloques de código, las URL, el JSON y los datos estructurados **siempre quedan protegidos** por el motor de preservación.
> **¿Para qué usar muchos tokens cuando unos pocos hacen el trabajo?** Cada solicitud pasa por el pipeline de compresión de OmniRoute **de forma transparente** — sin cambios en el cliente. Ahora es una **pila de 12 motores componibles** que se ejecutan en orden y se combinan según la combinación de enrutamiento — construida sobre ideas de [RTK](https://github.com/rtk-ai/rtk), [Caveman](https://github.com/JuliusBrussee/caveman) (⭐ 90K+), [LLMLingua-2](https://github.com/microsoft/LLMLingua) y [Troglodita](https://github.com/leninejunior/troglodita) (PT-BR).
### 🧱 La pila de 12 motores
Los motores se ejecutan en el orden del pipeline; cada uno se puede activar y configurar de forma independiente por combinación:
#
Motor
Qué hace
1
Session-Dedup
Descarta el contenido repetido entre turnos (direccionado por contenido, entre turnos)
2
CCR
Archiva bloques grandes detrás de marcadores de recuperación, obtenidos bajo demanda
3
Lite
Recorte de espacios en blanco + URL de imágenes (base ligera en latencia)
4
RTK
Filtrado inteligente de resultados de herramientas, deduplicación y truncado (consciente del comando)
5
Responses Tool Output
Compresión JSON sin pérdidas primero + compresión acotada de diagnósticos para salidas de shell/patch/search/build (Responses API)
6
Headroom
Compactación tabular sin pérdidas de arrays JSON (~30%) mediante un códec GCF vendorizado
7
Relevance
Puntuación extractiva de frases frente a la última consulta del usuario
8
Caveman
Compresión de prosa basada en reglas (~65–75% en la salida)
9
Aggressive
Resumen + envejecimiento progresivo de turnos antiguos
10
LLMLingua-2
Poda semántica ML mediante MobileBERT ONNX — segura para código, asíncrona
11
Ultra
Poda heurística de tokens con un nivel opcional de modelo pequeño (SLM)
12
OmniGlyph
Codificación experimental del contexto como imagen, medida con Claude Fable 5 en el canal directo de Anthropic; los transformers de GPT 5.6 permanecen fail-closed a la espera de recibos del proveedor. Cuatro perfiles de compresión (aggressive por defecto, balanced, coding-safe, passthrough) (el más agresivo; opcional)
Los bloques de código, las URL y los datos estructurados **siempre se preservan** byte a byte. Los **presets de un clic** combinan los motores:
Modo
Ahorros
Ideal para
🪶 Lite
~15%
Valor predeterminado seguro siempre activo
🪨 Standard (Caveman)
~30%
Programación diaria
⚡ Aggressive
~50%
Sesiones largas con muchas herramientas
🔥 Ultra
~75%
Ahorro máximo
🧰 RTK
60–90%
Salida de shell/test/build/git
🔗 Stacked (RTK → Caveman)
78–95%
Prompts mixtos + registros de herramientas
**Ejemplo real — modo Standard:**
> **Antes (69 tokens):** _"La razón por la que tu componente de React se vuelve a renderizar es probablemente que estás creando una nueva referencia de objeto en cada ciclo de render. Cuando pasas un objeto en línea como prop, la comparación superficial de React lo ve como un objeto diferente cada vez, lo que dispara un re-render. Te recomendaría usar useMemo para memorizar el objeto."_
>
> **Después (19 tokens):** _"Nueva referencia de objeto en cada render. Prop de objeto en línea = nueva referencia = re-render. Envuélvelo en useMemo."_
>
> **La misma respuesta. 72% menos tokens. Cero pérdida de precisión.** ✅
**Ejemplo PT-BR — modo [Troglodita](https://github.com/leninejunior/troglodita):**
> **Antes (42 tokens):** _"El problema es que el componente se está re-renderizando porque se crea una nueva referencia de objeto en cada ciclo de renderizado. Yo recomendaría usar useMemo."_
>
> **Después (12 tokens):** _"Re-render: ref nueva cada ciclo (objeto inline recreado). Usar `useMemo`."_
>
> **Misma respuesta. ~70% menos tokens. Precisión técnica intacta.** ✅
### 🎚️ Más allá de los motores — estilos de salida, el dial adaptativo y control por petición
Los 12 motores anteriores reducen lo que **entra**. Otras tres capas moldean **cómo**, **cuándo** y qué **sale**:
- **🪄 Estilos de salida** _(dirección en el eje de salida)_ — inyectan instrucciones deterministas y seguras para la caché que moldean la respuesta; son combinables, cada una con intensidad `lite` / `full` / `ultra`. Añadir un estilo es una entrada de una sola línea en el registro:
- **Prosa concisa** — elimina relleno / artículos / matices; mantén la sustancia técnica exacta.
- **Menos código** — YAGNI del "senior vago": el cambio funcional más pequeño, sin andamiaje no solicitado.
- **Ponytail (senior vago)** — sube la escalera YAGNI, corrige la causa raíz, el diff funcional más pequeño.
- **Tengo TDAH (acción primero)** — la siguiente acción va al inicio, pasos numerados, un siguiente paso concreto, sin preámbulo.
- **CJK conciso (文言)** — estilo ultraconcisa en chino clásico (restringido por locale a `zh`).
- **🎯 Presupuesto de contexto adaptativo** _(el dial)_ — en lugar de un único umbral de tokens on/off, escala los motores más baratos y con menor pérdida solo hasta donde sea necesario para **caberen la ventana de contexto del modelo**. Política: `reserve-output` (por defecto, consciente del modelo) · `percentage` · `absolute`. Modo: `floor` (garantiza el ajuste) · `replace-autotrigger` (tu elección explícita manda) · `off` (umbral heredado).
- **🎛️ Dónde se decide la compresión** _(precedencia, de mayor a menor)_ — cabecera `x-omniroute-compression` por petición › override del combo de enrutamiento › perfil nombrado activo › adaptativo / auto-trigger › valor por defecto del panel › off. El plan aplicado se devuelve en la cabecera de respuesta `X-OmniRoute-Compression: ; source=`.
Activación automática por umbral de tokens, activa el dial adaptativo, fija un perfil nombrado, configura un valor puntual por petición o asigna un pipeline por combo de enrutamiento — lo que mejor se ajuste a la carga de trabajo. Un **arnés de evaluación** offline opcional (`npm run eval:compression`) puntúa la fidelidad frente al ahorro en un corpus fijado antes de que promociones un cambio.
📖 [`COMPRESSION_GUIDE.md`](docs/compression/COMPRESSION_GUIDE.md) · [`RTK_COMPRESSION.md`](docs/compression/RTK_COMPRESSION.md) · [`COMPRESSION_ENGINES.md`](docs/compression/COMPRESSION_ENGINES.md)
# ⚡ Inicio rápido
**1) Instalar y ejecutar**
```bash
npm install -g omniroute
omniroute
```
> 💡 ¿Ves `npm warn ERESOLVE` o advertencias de peer-dep? [Son inofensivas](docs/guides/TROUBLESHOOTING.md#npm-install-warnings-eresolve--peer--deprecated).
> **¿Usas npm 11 o posterior?** npm puede bloquear los scripts de ciclo de vida de los paquetes a menos que estén permitidos. El `postinstall` de OmniRoute (`node scripts/build/postinstall.mjs`) es necesario para preparar sus archivos de runtime nativos. Permite los paquetes nombrados en la advertencia de npm al instalar globalmente. Para el conjunto de paquetes reportado por OmniRoute 3.8.53:
>
> ```bash
> npm install -g --allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild omniroute
> ```
>
> Para reutilizar esta lista de permitidos en futuras instalaciones globales, configúrala una vez y luego instala con normalidad:
>
> ```bash
> npm config set allow-scripts=omniroute,keytar,onnxruntime-node,@parcel/watcher,@swc/core,protobufjs,esbuild --location=user
> npm install -g omniroute
> ```
>
> La lista de dependencias puede cambiar entre versiones; si npm reporta una lista distinta, usa los nombres de paquete de esa advertencia. Permitir un paquete autoriza la ejecución de sus scripts de instalación.
> **¿Usas Gemini Web u otro proveedor con cookies web?** El paquete de npm incluye
> Playwright pero no su binario de Chromium. Consulta la
> nota de [configuración de Playwright Chromium](docs/guides/TROUBLESHOOTING.md#gemini-web-and-playwright-chromium)
> antes de hacer la primera petición a un proveedor web.
Dashboard en `http://localhost:20128` · API en `http://localhost:20128/v1`.
**2) Conecta un proveedor elegible usando tu propia cuenta**
Dashboard → **Providers** → elige un proveedor cuyos términos y cuota actuales encajen con tu caso de uso → añade su API key o completa su flujo de cuenta. Los niveles gratuitos pueden requerir registro, aprobación o un método de pago. Revisa la [Guía de niveles gratuitos](docs/getting-started/FREE-TIERS-GUIDE.md); la disponibilidad sin clave no está garantizada, y los proveedores marcados como `tos: avoid` se excluyen de `auto` por defecto.
**3) Apunta tu herramienta de programación**
```txt
Base URL: http://localhost:20128/v1
API Key: [copy from Dashboard → Endpoints]
Model: auto (routes among eligible connections — or choose provider/model)
```
**4) Verifica que funciona**
```bash
curl http://localhost:20128/v1/models -H "Authorization: Bearer YOUR_KEY"
```
Deberías ver listados tus modelos conectados. 🎉 Eso es todo — empieza a programar, y OmniRoute enruta y hace fallback automáticamente por ti.
Si tu cliente no puede enviar cabeceras personalizadas, OmniRoute también expone alias de compatibilidad con token:
```txt
OpenAI catalog: http://localhost:20128/vscode/YOUR_KEY/
OpenAI models: http://localhost:20128/vscode/YOUR_KEY/models
OpenAI chat: http://localhost:20128/vscode/YOUR_KEY/chat/completions
OpenAI responses: http://localhost:20128/vscode/YOUR_KEY/responses
Ollama chat: http://localhost:20128/vscode/YOUR_KEY/api/chat
Ollama tags: http://localhost:20128/vscode/YOUR_KEY/api/tags
```
Úsalos solo para clientes que no puedan adjuntar `Authorization: Bearer ...`. La autenticación por cabecera sigue siendo el modo preferido.
## 📦 Más métodos de instalación — Docker, código fuente, pnpm, Arch
**🐳 Docker**
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
`:latest` sigue la versión SemVer estable **publicada** más alta. No sigue la rama `main` de git. Fija `:X.Y.Z` para GitOps. Consulta [Canales de publicación de Docker](docs/guides/DOCKER_GUIDE.md#release-channels). La imagen fija **`OMNIROUTE_MEMORY_MB=1024`**. Esto es suficiente para el panel y un chat ligero. Los **agentes de programación** (`POST /v1/responses` desde Claude Code, Codex, Grok, …) necesitan un heap de V8 mucho mayor o el proceso genera un `FATAL ERROR` al alcanzar ~12 GiB con dos contextos largos que se solapan. Asigna al contenedor más memoria que el heap (los búferes nativos se encuentran fuera de V8):
| Carga de trabajo | Heap (`-e OMNIROUTE_MEMORY_MB`) | Contenedor (`--memory`) |
| -------------------------------------- | ------------------------------------------ | ----------------------- |
| Panel / chat ligero | `1024` (valor predeterminado de la imagen) | ≥2 g |
| Un agente de programación | `8192` | ≥10 g |
| Dos `/v1/responses` largos simultáneos | `10240`–`12288` | ≥12–16 g |
```bash
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 \
-e OMNIROUTE_MEMORY_MB=8192 --memory=10g \
-p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest
```
Tabla completa: [Guía de Docker — RAM en tiempo de ejecución](docs/guides/DOCKER_GUIDE.md#runtime-ram-for-coding-agents).
> **Canal de versiones preliminares de Docker:** `diegosouzapw/omniroute:next` y
> `diegosouzapw/omniroute:next-web` siguen la rama `release/v*` predeterminada
> actual. Estas etiquetas mutables están destinadas únicamente a probar correcciones
> aún no publicadas y **no son compatibles con entornos de producción**. Consulta
> [Canales de publicación de Docker](docs/guides/DOCKER_GUIDE.md#release-channels).
**🥟 Bun**
La instalación estándar mediante `bun install` y la instalación global (`bun install -g omniroute`) son compatibles gracias a la detección del entorno de ejecución Bun:
- **`bun:sqlite` integrado**: OmniRoute utiliza el controlador `bun:sqlite` integrado de Bun cuando se ejecuta en Bun y recurre a `better-sqlite3` en Node.js o a `sql.js`.
- **Selección automática del empaquetador Webpack durante el desarrollo**: El entorno de desarrollo (`bun run dev`) detecta automáticamente Bun y desactiva Turbopack en favor de Webpack para evitar incompatibilidades con los enlaces nativos de V8. Las compilaciones de producción (`bun run build`) respetan `OMNIROUTE_USE_TURBOPACK` exactamente igual que en Node: Turbopack de forma predeterminada o `OMNIROUTE_USE_TURBOPACK=0` para compilar con Webpack (`Dockerfile.bun` lo expone como un `--build-arg`).
- **Dockerfile específico para Bun**: `Dockerfile.bun` multietapa para despliegues de producción nativos de Bun (`docker build -f Dockerfile.bun -t omniroute:bun .`).
```bash
# Instalar y ejecutar con Bun
bun install
bun run dev
```
**🛠️ Desde el código fuente**
```bash
cp .env.example .env && npm install
PORT=20128 npm run dev
```
**📦 pnpm**
```bash
pnpm add -g omniroute@latest --allow-build=better-sqlite3 --allow-build=@swc/core && omniroute
```
**🐧 Arch Linux (AUR)**
```bash
yay -S omniroute-bin && systemctl --user enable --now omniroute.service
```
**🔧 Nix (Flake)**
```bash
# Usando flakes de Nix
nix develop
npm run dev
# O usando devbox
devbox run npm run dev
```
📖 [Guía de Docker](docs/guides/DOCKER_GUIDE.md) — Perfiles de Compose, HTTPS con Caddy y túneles de Cloudflare.
**🦭 Podman**
```bash
# 1. Preparar el directorio de datos montado mediante enlace
mkdir -p data
# 2. Solo para Linux + Podman local sin privilegios de root (nunca un cliente remoto de Podman Machine):
podman unshare chown 1000:1000 ./data
# 3. Establecer la indicación del entorno de ejecución, compilar la imagen local de Compose e iniciar
echo "CONTAINER_HOST=podman" >> .env
podman compose --profile base up -d --build
```
En macOS o Windows, Podman utiliza una Podman Machine remota: omite `podman unshare` y
sigue las [instrucciones del directorio de datos específicas para cada topología](contrib/podman/README.md#data-directory-permissions-by-topology).
📖 [Guía de Podman](contrib/podman/README.md) — Compilaciones de Compose, Podman Machine y
configuración de Quadlet con Linux/systemd.
**⚡ Instalación más rápida / ligera (omitir la compilación nativa)**
El motor SQLite nativo (`better-sqlite3`) es una dependencia **opcional**, por lo que una
instalación global nunca se bloquea al compilar desde el código fuente: utiliza un binario precompilado cuando hay uno compatible
con tu plataforma/Node y, de lo contrario, recurre de forma transparente a un motor de JavaScript puro
(`node:sqlite` en Node 22+; en caso contrario, el WASM `sql.js` incluido), sin necesidad de herramientas de compilación.
Para omitir por completo la preparación nativa posterior a la instalación (CI, entornos sin interfaz gráfica o máquinas lentas):
```bash
OMNIROUTE_SKIP_POSTINSTALL=1 npm install -g omniroute # CI=1 también la omite
```
Para conseguir las instalaciones más rápidas, utiliza preferentemente **pnpm** (almacén direccionado por contenido + enlaces duros; consulta la sección anterior).
Para un entorno de ejecución sin panel ni interfaz gráfica, utiliza el perfil `base` de Docker (descrito anteriormente) o la
[guía de Termux](docs/guides/TERMUX_GUIDE.md). La CLI y el panel web se sirven mediante el
mismo proceso y en un único puerto, por lo que actualmente no existe un paquete independiente solo para la CLI.
**Clasificación completa (URL canónicas sin duplicados, `v > 0`, mayor alcance):**
| #1 | #2 | #3 | #4 | #5 |
| -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| [nick_saraev — Instagram](https://www.instagram.com/reel/Da8ZthUPK98/) — **3,042,474** | [nnapier7 — Instagram](https://www.instagram.com/reel/Dbp7wv_CIO0/) — **1,454,535** | [Amidia AI & Tech — YouTube](https://www.youtube.com/watch?v=NJ0TQ-pyMDY) — **794,974** | [theopenstack — Instagram](https://www.instagram.com/reel/DaSs65mMrHk/) — **692,419** | [migue.baena — TikTok](https://www.tiktok.com/@migue.baena/video/7670919268216622358) — **685,788** |
| #6 | #7 | #8 | #9 | #10 |
| ------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| [milesreevesai — TikTok](https://www.tiktok.com/@milesreevesai/video/7667980059189366019) — **620,400** | [nikothetech — TikTok](https://www.tiktok.com/@nikothetech/video/7671890769665477918) — **610,803** | [Vaibhav Sisinty — YouTube](https://www.youtube.com/watch?v=QucgvbO5gsM) — **509,281** | [buildwithai.club — Instagram](https://www.instagram.com/reel/DbIt9AjK7-U/) — **347,652** | [nivedan.ai — Instagram](https://www.instagram.com/reel/DbIrCksJiqq/) — **331,973** |
Métricas canónicas al 2026-10-18: **1.976 vídeos únicos** · **20.220.289 visualizaciones conocidas** (`v > 0`) · **1.210 canales/perfiles por red**. El panel bruto contiene 1.976 filas (YouTube 1.352 = 740 vídeos largos + 612 Shorts · TikTok 334 · Instagram 290); no quedó ningún duplicado tras la normalización mediante la URL canónica, que conserva el mayor recuento por vídeo. La recopilación de YouTube está congelada desde el 2026-10-13 (cuota de la API agotada del 14 al 18/10) y la de TikTok/Instagram desde el 2026-09-02 (sin créditos de recopilación); 76 vídeos aún no tienen recuento de visualizaciones.
> 🎬 **¿Has hecho un vídeo sobre OmniRoute?** Abre una [incidencia](https://github.com/diegosouzapw/OmniRoute/issues/new) o un [debate](https://github.com/diegosouzapw/OmniRoute/discussions) con el enlace; lo destacaremos aquí.
# 📧 Comunidad y ayuda
> Todo en un solo lugar: sigue al mantenedor, conversa con la comunidad o abre una incidencia.
| Canal | Dónde / cómo |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| 💼 **LinkedIn** — sigue al mantenedor | [linkedin.com/in/diegosouzapw](https://www.linkedin.com/in/diegosouzapw/) |
| 🐙 **GitHub** — sigue las novedades y consejos | [@diegosouzapw](https://github.com/diegosouzapw) |
| 💬 **Discord** | [discord.gg/U47eFqAXCn](https://discord.gg/U47eFqAXCn) |
| ✈️ **Telegram** | [t.me/omnirouteOficial](https://t.me/omnirouteOficial) |
| 🟢 **WhatsApp — 🌍 Global** | [únete al grupo](https://chat.whatsapp.com/FvuCbrpZmQ6I85n2vW5QIC?s=cl&p=a&mlu=4) |
| 🟢 **WhatsApp — 🇧🇷 Brasil** | [únete al grupo](https://chat.whatsapp.com/KWgatljAjmbELQory59Oti?s=cl&p=a&mlu=4) |
| 🌍 **Sitio web** | [omniroute.online](https://omniroute.online) |
| 🌍 **🌍Comunidad StHub OmniRoute (gratis)** | [portal de StHub](https://portal.sthub.com.br/communities/groups/st-hub/channels/Omniroute-World-8kRjmK) |
| 📦 **Código fuente** | [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute) |
| 🐛 **Informar de un error** | [abre una incidencia](https://github.com/diegosouzapw/OmniRoute/issues) — adjunta la salida de `npm run system-info` |
| 🤝 **Contribuir** | [CONTRIBUTING.md](CONTRIBUTING.md) · [Modelo de ramas y versiones](docs/ops/BRANCHING_MODEL.md) · elige un `good first issue` |
| 💚 **Apoyar el proyecto** | [Formas de colaborar ↑](#-support-omniroute) · [Patrocinadores de GitHub](https://github.com/sponsors/diegosouzapw) |
OAuth 2.0 (PKCE) + JWT + claves de API + autenticación MCP con ámbitos · AES-256-GCM en reposo · DOMPurify
Sigilo
wreq-js — suplantación de huellas digitales TLS JA3 / JA4, proxy de 3 niveles
Resiliencia
Disyuntor, retroceso exponencial, prevención de avalanchas de solicitudes, autorreparación automática de combinaciones
Registro
pino — registros JSON estructurados con contexto de solicitud
Pruebas
Ejecutor de pruebas de Node.js + Vitest — más de 56 000 declaraciones de pruebas estáticas en más de 7800 archivos de prueba registrados (unitarias, de integración, E2E, seguridad, ecosistema)
Estrategia de cobertura de pruebas para más de 56,000 declaraciones de prueba estáticas en más de 7,800 archivos de prueba rastreados
# ⭐ Principales colaboradores
> OmniRoute está moldeado por una apasionada comunidad de código abierto. Estas personas han realizado contribuciones excepcionales que impactan directamente en la calidad, la estabilidad y el alcance del proyecto. **Gracias.**
### Colaboradores externos por pull requests fusionados
Censo realizado el 2026-10-18 15:09:09 UTC con la punta activa de release/v3.8.52656f01cb43. El censo paginado de GraphQL de GitHub contiene 9,191 PR fusionados: 3,834 del propietario del repositorio, 229 de Dependabot, 6 de otros bots/aplicaciones y 5,122 PR externos de 835 colaboradores distintos. «Líneas cambiadas» corresponde a las adiciones + eliminaciones de GitHub e incluye archivos generados, lockfiles, catálogos, traducciones y documentación; es volumen de cambios (churn), no líneas de código escritas por los autores. 49 PR presentan diferencias de GitHub superiores a 500,000 líneas (por ejemplo, #13399, la adición de un solo proveedor, enumera 2,347 archivos modificados), lo que infla varios de los totales anteriores. Los empates comparten la misma posición.
### Commits atribuidos en GitHub
Verificado de nuevo el 2026-10-18 14:44:45 UTC: commits atribuidos en GitHub notificados por la API de Contributors del repositorio para la rama predeterminada release/v3.8.52. La API devolvió 849 identidades (429 usuarios, 2 bots, 418 anónimas); esta tabla excluye al mantenedor, a los bots y a las identidades anónimas, y conserva los empates en la clasificación. Es distinta tanto de la clasificación de PR fusionadas anterior como del censo de metadatos de Git que figura a continuación.
> 🙏 Las funcionalidades, correcciones de errores y mejoras de infraestructura de estos colaboradores son una **parte fundamental** de lo que hace que OmniRoute sea fiable y rico en funcionalidades. Cada pull request, cada caso de prueba y cada archivo de traducción i18n importa. El código abierto lo construyen personas como ellos.
---
## 💖 Patrocinadores
Un sincero agradecimiento a las personas que financian OmniRoute de su propio bolsillo: cada contribución mantiene el proyecto gratuito, independiente y en marcha.
… y otras personas que prefieren mantener su privacidad 💛Patrocinadores públicos de GitHub verificados nuevamente el 2026-10-18 mediante la API GraphQL de GitHub Sponsors: 11 patrocinios públicos (6 activos y 5 anteriores) de un total de 14. El estado isActive de GitHub determina las etiquetas de actividad anteriores; se sigue agradeciendo a los antiguos colaboradores públicos que realizaron una aportación única, mientras que los patrocinadores privados permanecen anónimos. Las donaciones realizadas mediante Ko-fi, Buy Me a Coffee, Liberapay, PIX y criptomonedas no aparecen porque no tienen un registro público de patrocinio.💖 Conviértete en patrocinador → — cada dólar mantiene OmniRoute gratuito e independiente.
## 👥 Más de 900 colaboradores
[](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
Auditado el 2026-10-18 en la punta activa de release/v3.8.52, ad160ab2d1 (6826 commits): 993 identidades humanas de Git normalizadas; 707 aparecen como autores de commits (incluido el mantenedor) y 286 únicamente en etiquetas explícitas Co-authored-by. El censo aplica .mailmap, compara las direcciones de correo electrónico sin distinguir entre mayúsculas y minúsculas, vincula las direcciones noreply numéricas y simples de GitHub únicamente cuando codifican el mismo nombre de usuario, excluye 26 identidades de bots, agentes, servicios o marcadores de posición y no fusiona direcciones de correo electrónico comunes solo porque coincidan sus nombres para mostrar. La auditoría del 2026-08-24 publicó 639; al volver a ejecutar este método sobre la base ac02c5b42f de esa auditoría, se obtienen 619, por lo que el aumento proviene de nuevos colaboradores, no de un método menos estricto.
### Cómo contribuir
1. Haz un fork del repositorio
2. Crea una rama desde la punta **activa** de `release/vX.Y.Z` (no desde `main`); consulta [Modelo de ramificación y versiones](docs/ops/BRANCHING_MODEL.md)
3. Crea tu rama de funcionalidad (`git checkout -b feat/amazing-feature`)
4. Confirma tus cambios (`git commit -m 'feat: add amazing feature'`)
5. Sube los cambios a la rama (`git push origin feat/amazing-feature`)
6. Abre una solicitud de incorporación de cambios con la **base = esa rama `release/vX.Y.Z`**
Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para obtener instrucciones detalladas.
### Publicar una nueva versión
```bash
# Crea una versión; npm publish se ejecuta automáticamente
VERSION=x.y.z
gh release create "v${VERSION}" --title "v${VERSION}" --generate-notes
```
## 📊 Estrellas
## 🌍 StarMapper
## 🙏 Agradecimientos
OmniRoute se apoya en el trabajo de gigantes. Comenzó como una bifurcación de **[9router](https://github.com/decolua/9router)** y una adaptación a TypeScript del proyecto en Go **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)**; a partir de ahí, cada uno de los subsistemas que aparecen a continuación se inspiró en un proyecto de código abierto que abrió camino. Cada uno dio forma a una parte concreta de OmniRoute. Este es nuestro agradecimiento para todos ellos. 🙏
> ⭐ recuentos de estrellas verificados mediante la API REST de GitHub el 18 de octubre de 2026; den una estrella a estos proyectos. Los recuentos son una instantánea exacta con fecha y, naturalmente, cambiarán.
### 🧬 Linaje y puerta de enlace
La puerta de enlace de IA cuyo conjunto de datos público de precios alimenta nuestra sincronización de seguimiento de costes y cuyo modelo de normalización de proveedores sirvió de base para nuestro enrutamiento.
Código fuente MIT adaptado en el puente incluido de ChatGPT Web → Codex Responses, incluidos los adaptadores de sesión del navegador, estructuración de respuestas, uso y búsqueda web.
Patrones adaptados para la recuperación de transmisiones, alias sin razonamiento, búsqueda web de respaldo, límites de ventana deslizante, ocultación de datos en registros y flujos reforzados del iniciador.
Patrones de elección de herramientas, restricciones de salida y confirmación de herramientas de Cursor Composer adaptados al ejecutor nativo de Cursor.
Valores predeterminados de transformación compatibles con Claude Code y comportamiento de las cabeceras de facturación generalizados en el puente de OmniRoute controlado mediante configuración.
Sus asignaciones de modelos Grok, su generador Statsig de TypeError simulado, sus valores predeterminados de solicitudes y dispositivos y su procesador de respuestas NDJSON se adaptaron de forma sustancial al ejecutor de Grok Web de OmniRoute.
La principal fuente de código transitiva en la que se basa grok2api-merged; sus implementaciones de modelos, cabeceras, cargas útiles, Statsig y procesadores se conservan en el linaje de Grok Web.
El código fuente MIT subyacente para los valores predeterminados de cargas útiles y dispositivos de Grok, el generador Statsig y el procesador result.response, incorporado a través de TQZHR y grok2api-merged.
Una fuente transitiva acreditada por grok2api-merged por su capa de agrupación de proxys; OmniRoute conserva ese aviso de linaje, pero no afirma haber adaptado una agrupación de proxys en su ejecutor acotado de Grok Web.
Su proxy de Grok autenticado mediante cookies y su patrón de transmisión result.response.token sirvieron de base para el transporte de Grok Web de OmniRoute.
La implementación original de Grok Web tomó como referencia su diseño de conexión ascendente HTTP/navegador; su ruta HTTP directa deriva de GrokProxy, por lo que no se afirma haber realizado una adaptación de código independiente.
El proyecto viral «¿por qué usar muchos tokens cuando pocos tokens bastan?» — su filosofía de habla cavernícola impulsa nuestro modo de compresión estándar y más de 30 reglas de eliminación de relleno y condensación.
Compresión de alto rendimiento para la salida de comandos — inspiró nuestro motor RTK, el DSL de filtrado JSON, la recuperación de la salida sin procesar y la canalización apilada RTK → Caveman.
Investigación sobre compresión de prompts (LLMLingua / LLMLingua-2) — inspiró nuestro motor llmlingua asíncrono, seguro para el código y con apertura ante fallos.
Compresión de tokens en portugués brasileño — impulsa nuestro paquete de idioma pt-BR: reducción de pleonasmos y eliminación de relleno adaptadas a la gramática del portugués brasileño.
La habilidad viral del «desarrollador sénior perezoso» que aplica YAGNI al código — inspiró nuestro estilo de salida less-code: prioriza el cambio funcional más pequeño para reducir el código _generado_ (el equivalente en el eje de salida a la prosa concisa de Caveman).
Su formato compacto de grafos y su diseño de perfiles genéricos sirvieron de base para la compactación tabular de OmniRoute y el formato del códec Headroom.
Compactación de la salida de Bash más perfiles MCP — inspiró nuestra disciplina de abandono de la compresión y la reducción de manifiestos de herramientas MCP.
Compresión de salida consciente del contenido y específica por tipo de archivo, con abandono en caso de fallo — validó nuestro despacho por tipo y la omisión cuando la ganancia es mínima.
JSON columnar en Rust más recuperación direccionada por contenido y desduplicación entre mensajes — validó el diseño de nuestros motores headroom/ccr/session-dedup y la invariante estable para caché «la forma comprimida es independiente de la posición».
Compresión de esquemas y descripciones de herramientas MCP — sirvió de base para nuestra reducción de la cardinalidad de manifiestos de herramientas MCP.
Clasificación de mapas de repositorios al estilo de Aider — sirvió de base para nuestra exploración de mapas de repositorios y clasificación de recuperación.
Kit de herramientas para la API del compilador de TypeScript — inspiró nuestra eliminación de comentarios basada en analizadores, que conserva literales de cadena, de plantilla y de expresiones regulares.
La interceptación y el análisis MITM del tráfico entre asistentes de programación y LLM sirvieron de base para los requisitos iniciales del Inspector de Tráfico. Cuatro módulos derivados anteriormente —fusión de SSE, normalización de conversaciones, enmascaramiento de secretos y saneamiento de encabezados— se han sustituido por implementaciones independientes de sala limpia basadas en estándares públicos de protocolo. Las dos superficies de paso directo al host (passthrough.ts y _internal/bypass.cjs) siguen siendo implementaciones internas de OmniRoute clasificadas de forma independiente; no se reescribieron como parte de esa sustitución.
Enrutamiento de proxy transparente por proceso: inspiró nuestro cierre seguro del MITM ante fallos, los tiempos de espera por inactividad de sockets, la atribución de procesos mediante /proc y la captura TPROXY.
### 📚 Datos de modelos, observabilidad e interfaz de usuario
Observabilidad de la malla de servicios de Istio: inspiró nuestras insignias de disyuntor y las representaciones visuales de enlaces con errores en el Estudio de Enrutamiento/Combinación.
Una lista seleccionada de bibliotecas seguras por defecto que orienta nuestras decisiones de seguridad (Helmet.js, DOMPurify, ssrf-req-filter, safe-regex, Google Tink).
Inspiró la desduplicación de solicitudes, el mecanismo alternativo de emergencia sin coste, las estrategias conectables de Auto-Combo y la clasificación multilingüe de intenciones.
Su reasignación de modelos basada en cuentas, la validación de rutas de ejecutables y el comportamiento de las etiquetas de planes sirvieron de base para el entorno de ejecución Antigravity de OmniRoute.
Su formato compacto de cuenta regresiva para el restablecimiento de cuotas inspiró la visualización correspondiente de los límites de proveedores en OmniRoute.
Identificó la interfaz de cuotas de Grok Build; posteriormente, OmniRoute verificó y corrigió de forma independiente el formato real de transmisión.
## 📄 Licencia
Licencia MIT: consulta [LICENSE](LICENSE) para más detalles.
---
**[⬆ Volver arriba](#-omniroute)** · Hecho con ❤️ para la comunidad de IA de código abierto.
OmniRoute v3.8.53 · Node ≥22.22.2 · Licencia MIT · omniroute.online