La forma útil de entender este proyecto es como infraestructura entre tu herramienta de codificación y tus cuentas de modelo. Claude Code, Codex, Cursor, Cline, clientes estilo Copilot, Antigravity, OpenClaw y otras herramientas OpenAI-compatible pueden apuntar a `http://localhost:20128/v1`; 9Router luego decide cómo traducir, comprimir, enrutar, reintentar y registrar la solicitud.
Get the latest on AI, LLMs & developer tools
New MCP servers, model updates, and guides like this one — delivered weekly.
Ver el video de 9Router
¿Prefieres leer? La guía escrita a continuación cubre la arquitectura, la configuración, los riesgos y el veredicto práctico.
Nota editorial
Este artículo se basa en el repositorio de GitHub, README, metadatos del paquete, árbol de fuentes, metadatos de npm, lanzamientos/etiquetas, problemas recientes, PRs recientes y archivos de configuración de proveedores investigados el 3 de junio de 2026. El lenguaje sobre gratuidad/ilimitado del README se trata como posicionamiento del proyecto, no como asesoramiento de cuotas verificado de forma independiente.
1. 9router en una frase
9Router es una puerta de enlace de LLM local con licencia MIT para agentes de codificación que combina APIs OpenAI-compatible, traducción de proveedores, respaldo de múltiples cuentas, seguimiento de cuotas, compresión de salida de herramientas RTK, un panel de control y despliegue en Docker/local.
| Área | Detalle | Por qué importa |
|---|---|---|
| Repositorio | decolua/9router | https://github.com/decolua/9router |
| Lenguaje principal | JavaScript | Lenguaje principal de GitHub en el momento de la investigación. |
| Licencia | MIT | Revisa por separado las licencias empaquetadas o binarias cuando corresponda. |
| Creado | 5 de enero de 2026 | Paquete publicado verificado: 0.4.66 el 29 de mayo de 2026; última entrada de GitHub Releases verificada: v0.4.63 el 26 de mayo de 2026. |
2. Por qué importa
El proyecto es importante porque los flujos de trabajo de codificación con IA ya no están vinculados a un solo cliente o proveedor de modelos. Los desarrolladores a menudo usan Claude Code, Codex, Cursor, Cline, Antigravity y herramientas OpenAI-compatible en paralelo, mientras que el acceso al modelo proviene de suscripciones, claves de API, niveles gratuitos, proveedores regionales y endpoints compatibles localmente.
9Router intenta normalizar ese desorden en un solo endpoint y un solo panel de control. En lugar de reconfigurar cada herramienta de codificación cuando un proveedor alcanza su cuota o cambia la forma de un evento, creas cuentas de proveedor, alias de modelo, combinaciones y cadenas de respaldo en el enrutador.
El enfoque agresivo de ahorro de tokens también es práctico. Los agentes de codificación consumen contexto en diffs, salidas de grep, registros, listados de archivos y transcripciones de herramientas repetidas. La compresión RTK se ejecuta antes de la traducción de formato, por lo que el proyecto puede reducir el tamaño de la carga útil sin requerir que cada cliente ascendente conozca el formato de compresión.
3. Arquitectura y modelo mental
9Router es un panel de control de Next.js más una puerta de enlace API con un paquete CLI publicado por separado. La aplicación reescribe rutas OpenAI-compatible en manejadores de API de Next, delega el trabajo de chat en el núcleo de traducción/enrutamiento `open-sse`, almacena el estado de ejecución en almacenamiento de datos local y expone un panel de control para la gestión de proveedores, cuotas, registros y combinaciones.
| Área | Detalle | Por qué importa |
|---|---|---|
| Superficie del cliente | `http://localhost:20128/v1` | Endpoint OpenAI-compatible utilizado por Claude Code, Codex, Cursor, Cline, Antigravity y clientes similares. |
| Panel de control | Aplicación Next.js | Configuración de proveedores, combos, alias, cuotas, uso, registros, ajustes de endpoint, sincronización en la nube y pruebas de modelos. |
| Paquete CLI | `9router` en npm | Inicia el tiempo de ejecución local, el lanzador, los hooks orientados a la bandeja del sistema y el comportamiento de la aplicación empaquetada. |
| Manejadores de solicitudes | `src/app/api/v1/*` | Rutas para completado de chat, respuestas, mensajes, modelos, embeddings, imágenes, voz, búsqueda y fetch. |
| Núcleo de traducción | `open-sse/*` | Traducción de formatos, ejecución de proveedores, asistentes de streaming, actualización de tokens y asistentes de respaldo. |
| Registro de proveedores | `src/shared/constants/providers.js` | Proveedores OAuth, proveedores de API-key, proveedores gratuitos/de nivel gratuito, tipos de medios, alias y metadatos de riesgo. |
| Almacenamiento | Directorio de datos local y adaptadores SQLite | La fuente actual utiliza adaptadores de base de datos aunque la documentación de arquitectura antigua todavía menciona el almacenamiento JSON. |
4. Configuración end-to-end mínima
Los comandos de abajo se copiaron de la documentación del repositorio y se contrastaron con la instantánea de investigación actual. Úsalos como punto de partida y lee después el README enlazado antes de instalarlo en producción.
# Global install path
npm install -g 9router
9router
# Source development path
git clone https://github.com/decolua/9router.git
cd 9router
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
# Docker path
docker run -d \
--name 9router \
-p 20128:20128 \
-v "$HOME/.9router:/app/data" \
-e DATA_DIR=/app/data \
decolua/9router:latestUna primera tarea pequeña debe demostrar la integración antes de conectarla a datos críticos o workspaces grandes.
# Configure your coding client with the local router
Endpoint: http://localhost:20128/v1
API key: copy from the 9Router dashboard
Model: choose a 9Router model alias or combo, for example kr/claude-sonnet-4.5
# Local URLs
Dashboard: http://localhost:20128/dashboard
OpenAI-compatible API: http://localhost:20128/v15. Análisis técnico profundo
5.1 Es una puerta de enlace, no un proveedor de modelos
9Router no crea mágicamente un nuevo modelo fundacional. Se sitúa entre los clientes de programación y los proveedores upstream. El router traduce las formas de las solicitudes, actualiza los tokens cuando es compatible, gestiona las API keys, enruta a las cuentas y decide qué hacer cuando el proveedor preferido falla o alcanza un límite configurado.
Esa distinción es importante para el riesgo. Si un proveedor upstream cambia un evento de stream, rechaza un esquema, elimina un nivel gratuito o limita el uso de la cuenta, 9Router tiene que adaptarse rápidamente. Problemas recientes muestran exactamente ese tipo de rotación de proveedores.
Claude Code / Codex / Cursor / Cline
-> http://localhost:20128/v1
-> 9Router endpoint settings
-> combo / alias / provider account
-> upstream model API
-> translated stream back to client5.2 Los combos son la primitiva de enrutamiento
El README estructura el respaldo como una cadena de tres niveles: suscripción primero, proveedores económicos segundo, proveedores gratuitos al final. En la práctica, eso se convierte en una configuración de combo en el panel de control. Un combo es donde codificas las preferencias de modelo, el orden de respaldo y qué cuentas tienen permiso para servir una solicitud.
Esto es útil para largas jornadas de programación porque cambiar de proveedor manualmente genera fricción. También es peligroso si no comprendes los términos, cuotas, latencia y calidad de modelo de cada proveedor. Una cadena de respaldo puede mantener el flujo de trabajo, pero también puede cambiar silenciosamente el comportamiento del modelo a mitad de una tarea.
5.3 RTK comprime la salida de herramientas del agente antes de la traducción
La característica técnica más concreta es RTK Token Saver. Los resultados de las herramientas de los agentes de programación suelen ser enormes: diffs, resultados de búsqueda, árboles, registros, lecturas numeradas y salida de shell. 9Router detecta esas estructuras y aplica filtros de compresión especializados antes de que la solicitud sea traducida a Claude, OpenAI, Gemini, Vertex, Kiro u otro formato de destino.
El README dice que el filtro es seguro por diseño: si la compresión falla o hace que la salida sea más grande, se mantiene el texto original. Esa es la configuración predeterminada correcta porque una compresión con pérdida o rota de un diff puede hacer que un agente edite el código incorrecto.
tool_result: git diff / grep / tree / logs
-> RTK filter selection
-> compressed or original payload
-> format translation
-> upstream provider request5.4 La traducción de formatos es la parte difícil
El proyecto admite chat completions de OpenAI, respuestas de OpenAI, mensajes estilo Claude, Gemini, Cursor, Kiro, Vertex, Antigravity, rutas estilo Ollama, embeddings, generación de imágenes, voz, búsqueda y rutas de web fetch. Esa es una gran superficie de compatibilidad.
Los errores recientes muestran el costo: el comportamiento de prefill del asistente, las limitaciones de Vertex, los parámetros de token específicos del proveedor, el ensamblaje de streams de GitHub Gemini y las pruebas de modelos de medios pueden fallar de formas distintas. El valor de 9Router proviene de absorber esas diferencias, pero eso significa que el repositorio debe rastrear los cambios upstream constantemente.
5.5 El almacenamiento local y los registros son parte del modelo de amenazas
Un router como este almacena o accede a credenciales de proveedores, sesiones de OAuth, registros de solicitudes, registros de uso, alias de modelos y posiblemente prompts sin procesar. El código fuente actual incluye adaptadores de base de datos local; el README describe los datos locales bajo un directorio de datos. Trata a la máquina que ejecuta 9Router como infraestructura que contiene credenciales.
Eso no hace que el proyecto sea inutilizable. Significa que debes configurar el registro de forma intencional, usar claves de API con el menor privilegio posible, evitar enrutar datos confidenciales de clientes a través de cuentas con términos poco claros y mantener el puerto del Web UI privado a menos que lo hayas desplegado deliberadamente detrás de una autenticación.
6. Patrones reales: incorrecto vs correcto
| Incorrecto | Correcto | Razón |
|---|---|---|
| Asume que 9Router proporciona acceso ilimitado a modelos por sí mismo. | Trátalo como un router sobre cuentas upstream reales, suscripciones y niveles gratuitos. | Los términos de los proveedores, las cuotas y la disponibilidad de los modelos siguen aplicando. |
| Apuntar cada herramienta a una combinación de respaldo sin probar. | Crear combinaciones separadas para programación, experimentación económica, medios y trabajo confidencial. | Diferentes clientes y tareas necesitan diferentes perfiles de latencia, calidad y riesgo. |
| Habilitar registros detallados permanentemente. | Usa el registro de solicitudes para depurar, luego reduce la retención y protege el directorio de datos. | Los registros pueden contener prompts, código, claves y contexto de negocio. |
| Confiar únicamente en la página de lanzamientos de GitHub para la frescura. | Revisa npm, etiquetas y la rama predeterminada al depurar comportamientos específicos de una versión. | El estado de npm/etiquetas de 9Router ha avanzado respecto a la última entrada de lanzamiento en GitHub. |
7. Errores comunes y problemas actuales
El issue tracker importa porque estos repos son jóvenes y cambian rápido. El artículo usa los issues como señales de riesgo, no como prueba de que el proyecto sea inutilizable.
| Área | Detalle | Por qué importa |
|---|---|---|
| Términos del proveedor | Los proveedores respaldados por OAuth/suscripción pueden conllevar riesgos de restricción de cuenta. | El código fuente incluye avisos de riesgo; no dirija tráfico crítico de negocio a ciegas. |
| Divergencia de versiones | npm/tag 0.4.66 era más reciente que la última entrada de lanzamiento en GitHub al momento de la investigación. | Sea preciso al informar versiones. |
| Bloqueos en el streaming | Los problemas reportan bloqueos, flujos vacíos, marcadores de posición y comportamiento de eco en los prompts. | El razonamiento largo y los adaptadores de proveedores necesitan pruebas de humo. |
| Endpoints de medios | Los PR recientes dirigen las sondas de imagen y STT a endpoints de medios reales. | No asuma que las pruebas de chat-completion validan todas las modalidades. |
| Dependencias de tiempo de ejecución | Un problema reporta la eliminación de la dependencia de SQLite en las rutas de tiempo de ejecución empaquetadas. | Las instalaciones empaquetadas merecen una verificación de lanzamiento local. |
| Documentación obsoleta | La documentación de arquitectura antigua menciona almacenamiento JSON, mientras que el código fuente actual incluye adaptadores de SQLite. | Prefiera el código fuente y el README sobre las notas de arquitectura antiguas cuando entren en conflicto. |
8. Notas de rendimiento, escalado y coste
El rendimiento de 9Router está dominado por dos variables: el comportamiento del proveedor upstream y la sobrecarga de traducción/compresión del lado del router. El router puede reducir el tamaño del prompt con RTK, pero no puede hacer que un proveedor upstream lento o sobrecargado sea rápido.
El fallback mejora la disponibilidad solo si los modelos de respaldo realmente pueden manejar la tarea. Un modelo barato/gratuito puede mantener el flujo activo pero producir ediciones de código de menor calidad, llamadas a herramientas más débiles o estructuras de llamadas a funciones incompatibles.
El mejor patrón de costos es la segmentación explícita: combinación premium para ediciones y revisiones arriesgadas, combinación más barata para exploración, combinación local/gratuita para búsquedas amplias y resúmenes, y rutas específicas de medios para solicitudes de imagen/voz/video.
9. Para quién es
| Úsalo si | Evítalo si |
|---|---|
| Usted utiliza múltiples clientes de codificación AI y desea un único endpoint local. | Usted solo utiliza un proveedor y valora la simplicidad sobre la flexibilidad de enrutamiento. |
| Usted gestiona activamente cuotas, suscripciones, niveles gratuitos y API baratas. | Su organización prohíbe el proxy de sesiones respaldadas por OAuth/suscripción. |
| Sus prompts de coding-agent incluyen diffs grandes, registros y resultados de búsqueda. | Necesitas controles de puerta de enlace empresariales auditados antes de enrutar el código fuente. |
| Te sientes cómodo depurando adaptadores de proveedores que cambian rápidamente. | Necesitas un dispositivo estable con lanzamientos lentos y conservadores. |
10. Señal de la comunidad
La superficie de issues y PR en GitHub es extremadamente activa y altamente técnica. La mayor parte de la señal proviene de usuarios que prueban combinaciones de proveedores en Claude Code, Antigravity, OpenClaw, MiniMax, Xiaomi, GitHub Gemini, Vertex y endpoints compatibles personalizados.
La señal positiva más fuerte es práctica: la gente lo está usando con clientes de programación reales e informando rápidamente sobre casos extremos. La mayor precaución es el mismo hecho a la inversa: los protocolos de proveedores y clientes cambian lo suficientemente rápido como para que un router deba ser parcheado continuamente.
El README del repositorio utiliza un lenguaje fuerte sobre gratuidad/ilimitación, pero el rastreador de issues cuenta una historia más fundamentada en la ingeniería: los IDs de modelo cambian, los formatos de streaming difieren, las rutas de OAuth se rompen y las pruebas del dashboard deben ser conscientes de la modalidad.
11. El veredicto: ¿merece la pena usarlo?
Nuestra opinión
Usa 9Router si deseas una puerta de enlace local y práctica para enrutar herramientas de programación de IA a través de múltiples proveedores y estás dispuesto a gestionar el riesgo del proveedor cuidadosamente. Evítalo para rutas de código de producción reguladas hasta que hayas revisado el almacenamiento de credenciales, el registro, los términos del proveedor y el comportamiento de respaldo bajo tus propias políticas.
12. El panorama general
9Router es parte de un movimiento más amplio desde clientes de modelo único hacia infraestructura de IA local. Los desarrolladores quieren cada vez más enrutamiento de modelos, control de presupuesto, visibilidad de cuotas, compatibilidad con proxy y abstracción de proveedores sin cambiar cada editor o agente de terminal.
El problema sin resolver es la confianza. El enrutamiento es fácil de demostrar; el enrutamiento seguro es más difícil. La próxima generación de herramientas necesitará controles de política explícitos, separación de credenciales, registros de auditoría, redacción y decisiones de enrutamiento de modelos reproducibles.
13. Preguntas frecuentes
P: ¿Es 9Router un proveedor de modelos de IA?
No. Es un router local y un dashboard que envía solicitudes a proveedores upstream, cuentas, niveles gratuitos, suscripciones o endpoints compatibles que tú configures.
P: ¿Qué endpoint debo configurar en mi herramienta de programación?
Usa `http://localhost:20128/v1` y la clave de API que se muestra en el dashboard de 9Router, luego elige un alias de modelo o combinación definida dentro de 9Router.
P: ¿Qué es RTK Token Saver?
RTK comprime las salidas comunes de herramientas de agentes de programación como diffs, resultados de grep, árboles de archivos, registros y lecturas numeradas antes de que la carga útil sea traducida y enviada upstream.
P: ¿Por qué difieren las versiones entre npm y GitHub Releases?
En el momento de la investigación, los tags de npm estaban por delante de la última entrada de lanzamiento en GitHub. Para depurar, verifica los metadatos de npm, los tags, los lanzamientos y la rama predeterminada en conjunto.
P: ¿Es seguro usar cuentas de OAuth/suscripción a través de un router?
Eso depende de los términos del proveedor y de tu tolerancia al riesgo. El proyecto incluye avisos de riesgo para algunos proveedores, así que trátalo como una decisión de política, no solo como un paso de configuración técnica.
P: ¿Dónde residen los datos locales?
El README describe los datos locales bajo el directorio de datos configurado, y el código fuente actual incluye adaptadores de SQLite. Protege ese directorio porque puede contener credenciales, registros de uso y logs.
P: ¿Qué es lo que se rompe con más frecuencia?
Los problemas recientes apuntan a cambios en el esquema de proveedores upstream, ensamblaje de streaming, IDs de modelo, parámetros de tokens, pruebas de endpoints de medios y dependencias de tiempo de ejecución empaquetadas.
14. Glosario
| Área | Detalle | Por qué importa |
|---|---|---|
| Puerta de enlace | Un servicio local que recibe solicitudes de modelos y las reenvía a otro lugar. | El rol principal de 9Router. |
| Combo | Una cadena de enrutamiento/respaldo configurada. | Se utiliza para elegir rutas de suscripción, económicas o gratuitas. |
| RTK | Capa de compresión de salida de herramientas. | Reduce los resultados extensos de las herramientas del agente antes de la traducción del proveedor. |
| OpenAI-compatible | Forma de API a la que pueden apuntar muchas herramientas. | 9Router expone endpoints `/v1` compatibles. |
| Proveedor de OAuth | Proveedor autenticado a través de una sesión de usuario. | Puede conllevar un riesgo adicional de política de cuenta. |
| Endpoint de medios | Ruta de imagen, voz, video o STT. | No debería probarse únicamente a través de chat completions. |
| Respaldo (Fallback) | Enrutamiento al siguiente proveedor/cuenta cuando el primero falla. | Útil, pero puede cambiar el comportamiento del modelo. |
15. Todas las fuentes y enlaces
Fuentes principales
Issues y PRs
- Problema de prellenado de Antigravity y Claude Code
- Problema de respuesta vacía de Gemini en GitHub
- Problema de bloqueo de flujo de Xiaomi
- Problema de poda de dependencias en tiempo de ejecución
- PR de estabilidad del flujo de trabajo de Agent TARS
- PR de prueba del endpoint de medios
- PR de sugerencias de medios de HuggingFace
Fuentes de lanzamiento
Enlaces internos
16. Tabla de atribución de fuentes
| Área | Detalle | Por qué importa |
|---|---|---|
| README | Posicionamiento, inicio rápido, endpoint, niveles de proveedor, RTK, Docker, superficie del dashboard. | Fuente primaria. |
| Metadatos del paquete | Paquete CLI, matiz de versión, requisito de Node, entrada ejecutable. | Fuente primaria. |
| Árbol de fuentes | Rutas de Next.js, núcleo de traducción, registro de proveedores, adaptadores de base de datos. | Fuente de arquitectura. |
| Issues/PRs | Rotación de proveedores, interrupciones de streaming, sondeos de medios, advertencias de dependencias en tiempo de ejecución. | Señal de frescura. |
| npm y lanzamientos | Divergencia de versiones entre el paquete publicado, las etiquetas y las entradas de lanzamiento. | Fuente de frescura. |
Get the Ultimate Antigravity Cheat Sheet
Join 5,000+ developers and get our exclusive PDF guide to mastering Gemini 3 shortcuts and agent workflows.
Related Guides
Humanizer Skill Guide
blader/humanizer: 29 AI-writing patterns, voice calibration, and a two-pass audit, all in one Claude Code skill.
Guides & FeaturesMastering Agent Skills
The open standard for portable AI agent expertise.
Guides & FeaturesAntigravity Workflows Guide
Create automation recipes with Turbo Mode and AgentKit 2.0.
Guides & FeaturesHow to Change Antigravity Themes
Customize themes, dark mode, icons, and color schemes.
Guides & FeaturesHow to Change Language
Switch Antigravity to Spanish, German, Japanese, and more.
Guides & FeaturesAntigravity Security Guide
Known vulnerabilities, safe settings, and hardening steps.
