Feat : Gitbook

This commit is contained in:
decolua
2026-05-11 11:50:24 +07:00
parent 7ad538bcf2
commit fd92af77a0
124 changed files with 34154 additions and 4 deletions

View File

@@ -0,0 +1,473 @@
# ☁️ Despliegue en la nube
Despliega 9Router en VPS o Docker para acceso remoto y uso en producción.
---
## 🖥️ Despliegue en VPS
### Requisitos previos
- Ubuntu 20.04+ o distribución Linux similar
- Node.js 20+
- Git
- Acceso root o sudo
### Paso 1: Clonar el repositorio
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
```
### Paso 2: Instalar dependencias
```bash
npm install
```
### Paso 3: Compilar la aplicación
```bash
npm run build
```
### Paso 4: Configurar variables de entorno
Crea un archivo `.env` o exporta variables:
```bash
export JWT_SECRET="your-secure-secret-change-this-to-random-string"
export INITIAL_PASSWORD="your-secure-password"
export DATA_DIR="/var/lib/9router"
export NODE_ENV="production"
```
**Variables de entorno:**
| Variable | Por defecto | Descripción |
|----------|---------|-------------|
| `JWT_SECRET` | Auto-generado | **¡DEBE cambiarse en producción!** Usado para firmar tokens JWT |
| `INITIAL_PASSWORD` | `123456` | Contraseña de login del dashboard |
| `DATA_DIR` | `~/.9router` | Ruta de almacenamiento de la base de datos |
| `NODE_ENV` | `development` | Establece a `production` para despliegue |
| `ENABLE_REQUEST_LOGS` | `false` | Habilita logs de debug de request/response |
### Paso 5: Crear el directorio de datos
```bash
sudo mkdir -p /var/lib/9router
sudo chown $USER:$USER /var/lib/9router
```
### Paso 6: Iniciar la aplicación
```bash
npm run start
```
### Paso 7: Configurar PM2 para producción
PM2 mantiene tu aplicación corriendo y la reinicia en caso de crash:
```bash
# Instalar PM2 globalmente
npm install -g pm2
# Iniciar 9Router con PM2
pm2 start npm --name 9router -- start
# Guardar la configuración de PM2
pm2 save
# Configurar PM2 para iniciar al arrancar el sistema
pm2 startup
# Sigue las instrucciones impresas por el comando anterior
```
**Comandos de gestión de PM2:**
```bash
# Ver logs
pm2 logs 9router
# Reiniciar aplicación
pm2 restart 9router
# Detener aplicación
pm2 stop 9router
# Ver estado
pm2 status
# Monitorear recursos
pm2 monit
```
---
## 🐳 Despliegue con Docker
### Opción 1: Usando Dockerfile
Crea un `Dockerfile` en el directorio `app`:
```dockerfile
FROM node:20-alpine
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies
RUN npm ci --only=production
# Copy application files
COPY . .
# Build application
RUN npm run build
# Expose ports
EXPOSE 3000 20128
# Set environment variables
ENV NODE_ENV=production
ENV DATA_DIR=/app/data
# Create data directory
RUN mkdir -p /app/data
# Start application
CMD ["npm", "run", "start"]
```
**Build y Run:**
```bash
# Construir imagen
docker build -t 9router .
# Ejecutar contenedor
docker run -d \
--name 9router \
-p 3000:3000 \
-p 20128:20128 \
-e JWT_SECRET="your-secure-secret-change-this" \
-e INITIAL_PASSWORD="your-secure-password" \
-v 9router-data:/app/data \
9router
```
### Opción 2: Docker Compose
Crea `docker-compose.yml`:
```yaml
version: '3.8'
services:
9router:
build: .
container_name: 9router
ports:
- "3000:3000"
- "20128:20128"
environment:
- NODE_ENV=production
- JWT_SECRET=your-secure-secret-change-this
- INITIAL_PASSWORD=your-secure-password
- DATA_DIR=/app/data
volumes:
- 9router-data:/app/data
restart: unless-stopped
volumes:
9router-data:
```
**Ejecutar con Docker Compose:**
```bash
# Iniciar servicios
docker-compose up -d
# Ver logs
docker-compose logs -f
# Detener servicios
docker-compose down
# Reconstruir y reiniciar
docker-compose up -d --build
```
---
## 🌐 Proxy reverso con Nginx
### ¿Por qué usar Nginx?
- Terminación SSL/TLS
- Mapeo de nombre de dominio
- Balanceo de carga
- Mejor seguridad
### Paso 1: Instalar Nginx
```bash
sudo apt update
sudo apt install nginx
```
### Paso 2: Configurar Nginx
Crea `/etc/nginx/sites-available/9router`:
```nginx
server {
listen 80;
server_name your-domain.com;
# Redirect HTTP to HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL certificates (use certbot to generate)
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Proxy to 9Router
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cache_bypass $http_upgrade;
# SSE support - CRITICAL for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
# API endpoint
location /v1 {
proxy_pass http://localhost:20128;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# SSE support - CRITICAL for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
}
```
### Paso 3: Habilitar el sitio
```bash
# Crear enlace simbólico
sudo ln -s /etc/nginx/sites-available/9router /etc/nginx/sites-enabled/
# Probar configuración
sudo nginx -t
# Recargar Nginx
sudo systemctl reload nginx
```
### Paso 4: Configurar SSL con Let's Encrypt
```bash
# Instalar certbot
sudo apt install certbot python3-certbot-nginx
# Obtener certificado SSL
sudo certbot --nginx -d your-domain.com
# La auto-renovación se configura automáticamente
# Probar renovación
sudo certbot renew --dry-run
```
---
## 🔒 Consideraciones de seguridad
### 1. Cambiar credenciales por defecto
**CRÍTICO:** Cambia `JWT_SECRET` y `INITIAL_PASSWORD` antes del despliegue:
```bash
# Generar JWT secret seguro
openssl rand -base64 32
# Usa este valor para JWT_SECRET
export JWT_SECRET="generated-secret-here"
```
### 2. Configuración del firewall
```bash
# Permitir SSH
sudo ufw allow 22/tcp
# Permitir HTTP/HTTPS (si usas Nginx)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Si NO usas proxy reverso, permite los puertos de 9Router
sudo ufw allow 3000/tcp
sudo ufw allow 20128/tcp
# Habilitar firewall
sudo ufw enable
```
### 3. Restringir el acceso al dashboard
Si solo necesitas acceso por API, restringe el puerto del dashboard:
```bash
# Solo permitir acceso localhost al dashboard
sudo ufw deny 3000/tcp
```
Accede al dashboard vía túnel SSH:
```bash
ssh -L 3000:localhost:3000 user@your-server.com
# Luego abre http://localhost:3000 en tu navegador
```
### 4. Actualizaciones regulares
```bash
# Actualizar paquetes del sistema
sudo apt update && sudo apt upgrade -y
# Actualizar 9Router
cd /path/to/9router/app
git pull
npm install
npm run build
pm2 restart 9router
```
### 5. Estrategia de respaldo
```bash
# Respaldar el directorio de datos
tar -czf 9router-backup-$(date +%Y%m%d).tar.gz /var/lib/9router
# Respaldo automatizado diario (agregar a crontab)
0 2 * * * tar -czf /backups/9router-$(date +\%Y\%m\%d).tar.gz /var/lib/9router
```
---
## 📊 Monitoreo
### Verificar el estado de la aplicación
```bash
# Estado PM2
pm2 status
# Ver logs
pm2 logs 9router --lines 100
# Monitorear recursos
pm2 monit
```
### Logs de Nginx
```bash
# Logs de acceso
sudo tail -f /var/log/nginx/access.log
# Logs de error
sudo tail -f /var/log/nginx/error.log
```
### Recursos del sistema
```bash
# Uso de CPU y memoria
htop
# Uso de disco
df -h
# Conexiones de red
netstat -tulpn | grep -E '3000|20128'
```
---
## 🚨 Solución de problemas
### La aplicación no inicia
```bash
# Verificar logs
pm2 logs 9router
# Verificar si los puertos están en uso
sudo lsof -i :3000
sudo lsof -i :20128
# Verificar variables de entorno
pm2 env 9router
```
### Nginx 502 Bad Gateway
```bash
# Verificar si 9Router está corriendo
pm2 status
# Verificar logs de error de Nginx
sudo tail -f /var/log/nginx/error.log
# Probar configuración de Nginx
sudo nginx -t
```
### El streaming SSE no funciona
Asegúrate de que `proxy_buffering off` esté configurado en Nginx para soporte SSE.
### Errores de permiso denegado
```bash
# Corregir permisos del directorio de datos
sudo chown -R $USER:$USER /var/lib/9router
chmod 755 /var/lib/9router
```
---
## 🔗 Próximos pasos
- [Conectar proveedores](/providers/subscription.md)
- [Configurar combos](/features/combos.md)
- [Integrar con herramientas](/integration/cursor.md)

View File

@@ -0,0 +1,164 @@
# 🏠 Despliegue en localhost
Ejecuta 9Router en tu máquina local para desarrollo y uso personal.
---
## 📦 Instalación
Instala 9Router globalmente vía npm:
```bash
npm install -g 9router
```
**Requisitos:**
- Node.js 20 o superior
- npm 9 o superior
---
## 🚀 Iniciar el servidor
Inicia 9Router con un solo comando:
```bash
9router
```
El dashboard se abrirá automáticamente en tu navegador en `http://localhost:3000`
**Configuración por defecto:**
- **Dashboard**: `http://localhost:3000`
- **API Endpoint**: `http://localhost:20128/v1`
- **Directorio de datos**: `~/.9router`
---
## 🔧 Configuración
### Directorio de datos personalizado
Establece un directorio de datos personalizado usando una variable de entorno:
```bash
DATA_DIR=/path/to/data 9router
```
### Puerto personalizado
El puerto de API (20128) y el puerto del dashboard (3000) están configurados en la aplicación. Para cambiarlos, necesitarás modificar el código fuente o usar variables de entorno si se soportan.
---
## 🛑 Detener el servidor
Presiona `Ctrl+C` en la terminal donde 9Router se está ejecutando.
```bash
# En la terminal ejecutando 9router
^C # Presiona Ctrl+C
```
El servidor se apagará correctamente y guardará todos los datos.
---
## 🔄 Reiniciar el servidor
Simplemente ejecuta el comando de inicio nuevamente:
```bash
9router
```
Todas tus configuraciones, API keys y combos se preservan en el directorio de datos.
---
## 📊 Actualizar 9Router
Actualiza a la última versión:
```bash
npm update -g 9router
```
Verifica tu versión actual:
```bash
npm list -g 9router
```
---
## 🔍 Solución de problemas
### Puerto ya en uso
Si el puerto 20128 o 3000 ya está en uso:
```bash
# Encontrar proceso usando el puerto (macOS/Linux)
lsof -i :20128
lsof -i :3000
# Matar el proceso
kill -9 <PID>
```
### Errores de permisos
Si encuentras errores de permisos durante la instalación:
```bash
# Usar sudo (no recomendado)
sudo npm install -g 9router
# O corregir los permisos de npm (recomendado)
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
```
### Problemas con el directorio de datos
Si el directorio de datos no es accesible:
```bash
# Verificar permisos
ls -la ~/.9router
# Corregir permisos
chmod 755 ~/.9router
```
---
## 📁 Estructura del directorio de datos
```
~/.9router/
├── db.json # Main database (providers, combos, settings)
├── logs/ # Application logs
└── cache/ # Temporary cache files
```
**Respaldar tus datos:**
```bash
# Respaldo
cp -r ~/.9router ~/.9router.backup
# Restaurar
cp -r ~/.9router.backup ~/.9router
```
---
## 🔗 Próximos pasos
- [Conectar proveedores](/providers/subscription.md)
- [Crear combos](/features/combos.md)
- [Integrar con herramientas CLI](/integration/cursor.md)

387
gitbook/content/es/faq.md Normal file
View File

@@ -0,0 +1,387 @@
# Preguntas frecuentes
Preguntas comunes sobre 9Router.
---
## ¿Qué es 9Router?
**9Router es un router de modelos de IA que maximiza el valor de tu suscripción y minimiza los costos.**
Enruta inteligentemente las solicitudes a través de múltiples proveedores de IA usando un sistema de fallback de 3 niveles:
1. **Nivel de suscripción** - Maximiza las cuotas de Claude Code, Codex, Gemini que ya pagas
2. **Nivel barato** - Alternativas ultra-baratas ($0.20-$0.60 por 1M tokens)
3. **Nivel gratis** - Respaldo de emergencia con modelos gratis ilimitados
**Beneficios clave:**
- Nunca desperdicies la cuota de suscripción
- Fallback automático cuando se agota la cuota
- Seguimiento de cuota en tiempo real
- 90% de ahorro en costos vs uso directo de API
---
## ¿Cómo funciona el precio?
**9Router usa una estrategia de precios de 3 niveles:**
### Nivel 1: Suscripción (Maximiza primero)
- **Claude Code** (Pro/Max): $20-100/mes - Cuota de 5 horas + semanal
- **OpenAI Codex** (Plus/Pro): $20-200/mes - Cuota de 5 horas + semanal
- **Gemini CLI**: GRATIS - 180K completados/mes + 1K/día
- **GitHub Copilot**: $10-19/mes - Reinicio mensual
- **Antigravity**: GRATIS - Similar a Gemini
**Objetivo:** ¡Usa cada bit de cuota antes de que se reinicie!
### Nivel 2: Barato (Respaldo)
- **GLM-4.7**: $0.60/$2.20 por 1M tokens - Reinicio diario 10AM
- **MiniMax M2.1**: $0.20/$1.00 por 1M tokens - 5 horas rolling
- **Kimi K2**: $9/mes plano (10M tokens)
**Objetivo:** ¡90% más barato que ChatGPT API ($20/1M)!
### Nivel 3: Gratis (Emergencia)
- **iFlow**: 8 modelos GRATIS (Kimi K2, Qwen3, GLM, MiniMax...)
- **Qwen**: 3 modelos GRATIS (Qwen3 Coder Plus/Flash, Vision)
- **Kiro**: 2 modelos GRATIS (Claude Sonnet 4.5, Haiku 4.5)
**Objetivo:** ¡Fallback de cero costo cuando todo lo demás está limitado por cuota!
---
## ¿9Router es gratis?
**Sí, 9Router en sí es 100% gratis y open source.**
**Proveedores de nivel gratis disponibles:**
- **Gemini CLI** - 180K completados/mes (cuenta Google GRATIS)
- **iFlow** - 8 modelos ilimitados (OAuth GRATIS)
- **Qwen** - 3 modelos ilimitados (OAuth GRATIS)
- **Kiro** - Claude Sonnet/Haiku (AWS Builder ID GRATIS)
**¡Puedes codificar GRATIS para siempre usando solo proveedores de nivel gratis!**
**Proveedores de pago opcionales:**
- Servicios de suscripción que ya puedes tener (Claude Code, Codex, Copilot)
- Alternativas ultra-baratas ($0.20-$0.60 por 1M tokens)
---
## ¿Qué proveedores son compatibles?
### Proveedores de suscripción
- **Claude Code** (Pro/Max) - Claude 4.5 Opus/Sonnet/Haiku
- **OpenAI Codex** (Plus/Pro) - GPT 5.2 Codex, GPT 5.1 Codex Max
- **Gemini CLI** (GRATIS) - Gemini 3 Flash/Pro, 2.5 Pro/Flash
- **GitHub Copilot** - GPT-5, Claude 4.5, Gemini 3
- **Antigravity** (Google) - Gemini 3 Pro, Claude Sonnet 4.5
### Proveedores baratos
- **GLM** (Zhipu AI) - GLM 4.7, GLM 4.6V Vision
- **MiniMax** - MiniMax M2.1
- **Kimi** (Moonshot AI) - Kimi Latest
- **OpenRouter** - Passthrough a cualquier modelo de OpenRouter
### Proveedores gratis
- **iFlow** - 8 modelos (Kimi K2, Qwen3, GLM, MiniMax, DeepSeek...)
- **Qwen** - 3 modelos (Qwen3 Coder Plus/Flash, Vision)
- **Kiro** - 2 modelos (Claude Sonnet 4.5, Haiku 4.5)
**Total: 15+ proveedores, 50+ modelos**
Consulta la [documentación de proveedores](providers/subscription.md) para más detalles.
---
## ¿Puedo usar múltiples proveedores?
**¡Sí! Esta es la característica principal de 9Router.**
**Los combos te permiten encadenar múltiples proveedores con fallback automático:**
```
Ejemplo de combo: "premium-coding"
1. cc/claude-opus-4-5 (Suscripción principal)
2. glm/glm-4.7 (Respaldo barato)
3. if/kimi-k2 (Emergencia gratis)
→ Cambio automático cuando se agota la cuota
→ Nunca para de codificar
→ Costo extra mínimo
```
**Cómo crear combos:**
```
Dashboard → Combos → Create New
→ Agrega modelos en orden de prioridad
→ Usa el nombre del combo en CLI: "premium-coding"
```
**Beneficios:**
- Cero tiempo de inactividad cuando se agota la cuota
- Optimización automática de costos
- Un solo nombre de modelo para todas las herramientas
Consulta la [documentación de combos](features/combos.md) para ejemplos.
---
## ¿Cómo funciona el seguimiento de cuota?
**9Router rastrea la cuota en tiempo real para todos los proveedores:**
**Características:**
- **Consumo de tokens** - Tokens de entrada/salida por solicitud
- **Cuenta regresiva de reinicio** - Tiempo hasta que se refresca la cuota
- **Estadísticas de uso** - Reportes diarios/semanales/mensuales
- **Estimación de costos** - Gasto proyectado (niveles de pago)
- **Alertas de cuota** - Notificaciones cuando la cuota es baja
**Tipos de cuota:**
- **5 horas rolling** - Claude Code, Codex, MiniMax
- **Reinicio diario** - Gemini CLI (1K/día), GLM (10AM)
- **Reinicio semanal** - Claude Code, Codex (cuota adicional)
- **Reinicio mensual** - Gemini CLI (180K), GitHub Copilot (día 1)
**Ver cuota:**
```
Dashboard → Providers → Quota Tracking
→ Uso en tiempo real + cuenta regresiva de reinicio
```
Consulta la [documentación de seguimiento de cuota](features/quota-tracking.md) para detalles.
---
## ¿9Router funciona con Cursor?
**Sí, pero Cursor requiere un endpoint en la nube.**
**Problema:** Cursor IDE no soporta endpoints en localhost.
**Solución:** Usa el despliegue en la nube de 9Router:
```
Cursor Settings → Models → Advanced:
OpenAI API Base URL: https://9router.com/v1
OpenAI API Key: [desde el dashboard]
Model: cc/claude-opus-4-5-20251101
```
**Alternativa:** Auto-hospéda en VPS con dominio público:
```bash
# Despliega en VPS
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install && npm run build
npm start
# Configura proxy reverso Nginx
# Apunta Cursor a: https://your-domain.com/v1
```
**Otras herramientas CLI funcionan con localhost:**
- Cline ✅
- Claude Desktop ✅
- Codex CLI ✅
- Continue ✅
- RooCode ✅
Consulta la [guía de integración de Cursor](integration/cursor.md) para detalles.
---
## ¿Puedo auto-hospedar 9Router?
**¡Sí! 9Router soporta múltiples opciones de despliegue:**
### Localhost (Por defecto)
```bash
npm install -g 9router
9router
→ Dashboard: http://localhost:3000
→ API: http://localhost:20128/v1
```
### VPS/Cloud
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install && npm run build
export JWT_SECRET="your-secure-secret"
export INITIAL_PASSWORD="your-password"
export NODE_ENV="production"
npm start
```
### Docker
```bash
docker build -t 9router .
docker run -d \
-p 3000:3000 \
-e JWT_SECRET="your-secret" \
-v 9router-data:/app/data \
9router
```
### Cloudflare Workers
```bash
cd 9router/app
npm run deploy:cloudflare
```
**Variables de entorno:**
- `JWT_SECRET` - **¡DEBE cambiarse en producción!**
- `DATA_DIR` - Ruta de almacenamiento de la base de datos (por defecto: `~/.9router`)
- `INITIAL_PASSWORD` - Login del dashboard (por defecto: `123456`)
- `NODE_ENV` - Establece en `production` para desplegar
Consulta la [guía de despliegue](getting-started/installation.md#deployment) para detalles.
---
## ¿Mis datos están seguros?
**Sí, 9Router prioriza la seguridad y privacidad:**
**Almacenamiento local:**
- Todos los datos se almacenan localmente en `~/.9router` (o `DATA_DIR` personalizado)
- No se envían datos a los servidores de 9Router
- Tokens OAuth cifrados con JWT
**Sin telemetría:**
- Sin seguimiento de uso
- Sin analítica
- Sin phone-home
**Open source:**
- Código fuente completo disponible en GitHub
- Audita la seguridad tú mismo
- Revisado por la comunidad
**Mejores prácticas:**
- Cambia `JWT_SECRET` en producción
- Usa un `INITIAL_PASSWORD` fuerte
- Habilita HTTPS para despliegues en la nube
- Rota las API keys regularmente
**Lo que 9Router almacena:**
- Tokens OAuth de proveedores (cifrados)
- API keys (cifradas)
- Estadísticas de uso (solo locales)
- Configuraciones de combos
**Lo que 9Router NO almacena:**
- Tus prompts o respuestas
- El código que generas
- Información personal
---
## ¿Cómo actualizo 9Router?
**Los métodos de actualización dependen del tipo de instalación:**
### Instalación global NPM
```bash
npm update -g 9router
```
### Instalación local
```bash
cd 9router/app
git pull origin main
npm install
npm run build
npm start
```
### Docker
```bash
docker pull 9router:latest
docker stop 9router
docker rm 9router
docker run -d \
-p 3000:3000 \
-v 9router-data:/app/data \
9router:latest
```
**Verificar versión:**
```bash
9router --version
```
**Cambios disruptivos:**
- Revisa [CHANGELOG.md](https://github.com/decolua/9router/blob/main/CHANGELOG.md)
- Respalda `~/.9router` antes de actualizaciones mayores
- Revisa las guías de migración para versiones mayores
---
## ¿Cómo puedo contribuir?
**¡Damos la bienvenida a las contribuciones!**
### Formas de contribuir:
1. **Reportar bugs:**
- [GitHub Issues](https://github.com/decolua/9router/issues)
- Incluye logs de error, pasos para reproducir
2. **Solicitar características:**
- [GitHub Discussions](https://github.com/decolua/9router/discussions)
- Describe el caso de uso y los beneficios
3. **Enviar código:**
```bash
# Fork del repo
git clone https://github.com/YOUR_USERNAME/9router.git
cd 9router
# Crea una rama
git checkout -b feature/your-feature
# Haz cambios
npm install
npm run dev
# Prueba
npm test
# Commit y push
git add .
git commit -m "Add your feature"
git push origin feature/your-feature
# Crea un Pull Request en GitHub
```
4. **Mejorar docs:**
- Corrige errores tipográficos, agrega ejemplos
- Traduce a otros idiomas
- Escribe tutoriales
5. **Agregar proveedores:**
- Implementa nuevos adaptadores de proveedores
- Consulta `app/lib/providers/` para ejemplos
**Directrices de contribución:**
- Sigue el estilo de código existente
- Agrega tests para nuevas características
- Actualiza la documentación
- Mantén los commits atómicos y descriptivos
Consulta [CONTRIBUTING.md](https://github.com/decolua/9router/blob/main/CONTRIBUTING.md) para detalles.
---
## ¿Necesitas más ayuda?
- **Documentación:** [9router.com/docs](https://9router.com/docs)
- **GitHub:** [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues:** [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
- **Troubleshooting:** [troubleshooting.md](troubleshooting.md)

View File

@@ -0,0 +1,537 @@
# Combos - Cadenas de fallback personalizadas
Crea combinaciones de modelos personalizadas con fallback automático. Los combos te permiten definir tu propia estrategia de enrutamiento basada en costo, calidad y disponibilidad.
---
## ¿Qué son los combos?
Los combos son **cadenas de fallback personalizadas** que creas en el dashboard. En lugar de usar un solo modelo, defines una secuencia de modelos que 9Router intenta en orden.
**Ejemplo:**
```
Nombre del combo: premium-coding
Modelos:
1. cc/claude-opus-4-5-20251101 (intentar primero)
2. glm/glm-4.7 (si #1 tiene cuota agotada)
3. minimax/MiniMax-M2.1 (si #2 tiene cuota agotada)
```
**Uso en CLI:**
```
Model: premium-coding
```
9Router intenta automáticamente cada modelo en secuencia hasta que uno tenga éxito.
---
## ¿Por qué usar combos?
### 1. Maximiza el valor de la suscripción
```
cc/claude-opus → glm/glm-4.7 → if/kimi-k2-thinking
→ Usa la suscripción primero, respaldo barato, emergencia gratis
→ Obtén el valor completo de las suscripciones que ya pagas
```
### 2. Minimiza costos
```
glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
→ Comienza con la opción de pago más barata ($0.60/1M)
→ Fallback a una aún más barata ($0.20/1M)
→ Nivel de emergencia gratis
→ Costo total: ~$5-10/mes vs $2000 en ChatGPT API
```
### 3. Garantiza disponibilidad 24/7
```
cc/claude-opus → cx/gpt-5.2-codex → glm/glm-4.7 → if/kimi-k2-thinking
→ Siempre incluye el nivel gratis al final
→ Nunca te quedes sin cuota
→ Codifica en cualquier momento, en cualquier lugar
```
### 4. Optimiza por calidad
```
cc/claude-opus-4-5 → cx/gpt-5.2-codex → gc/gemini-3-pro
→ Mejores modelos primero
→ Fallback a otros modelos premium
→ Mantén alta calidad en toda la cadena de fallback
```
---
## Cómo crear combos
### Paso 1: Abrir el dashboard
```
http://localhost:20128
→ Inicia sesión con tu contraseña
```
### Paso 2: Navegar a Combos
```
Dashboard → Combos → Create New Combo
```
### Paso 3: Configurar el combo
**Nombre del combo:**
```
premium-coding
```
**Descripción (opcional):**
```
Suscripción primero, respaldo barato, emergencia gratis
```
**Seleccionar modelos:**
```
1. cc/claude-opus-4-5-20251101
2. glm/glm-4.7
3. minimax/MiniMax-M2.1
```
**Arrastra para reordenar** - Prioridad de arriba a abajo.
### Paso 4: Guardar
```
Clic en "Save Combo"
→ El combo aparece en la lista de modelos
```
### Paso 5: Usar en CLI
```
Cursor/Cline/Cualquier herramienta:
Model: premium-coding
```
---
## Combos de ejemplo
### Ejemplo 1: Premium Coding (Suscripción → Barato → Gratis)
**Objetivo**: Maximizar el valor de la suscripción, minimizar costos extras.
```
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. cc/claude-opus-4-5-20251101
2. glm/glm-4.7
3. minimax/MiniMax-M2.1
```
**Uso:**
```
Cursor IDE:
Model: premium-coding
```
**Comportamiento:**
```
Mañana (cuota fresca):
Solicitud → cc/claude-opus-4-5 ✅
Tarde (cuota de Claude agotada):
Solicitud → glm/glm-4.7 ✅ (cambio automático)
Noche (cuota de GLM agotada):
Solicitud → minimax/MiniMax-M2.1 ✅ (cambio automático)
```
**Costo mensual (100M tokens):**
```
80M vía Claude Code: $0 (suscripción)
15M vía GLM: $9
5M vía MiniMax: $1
Total: $10 + tu suscripción
```
**Ahorros**: ~99% vs ChatGPT API ($2000).
---
### Ejemplo 2: Combo de presupuesto (Barato → Gratis)
**Objetivo**: Minimizar costos, usar el nivel gratis como respaldo.
```
Dashboard → Combos → Create New
Name: budget-combo
Models:
1. glm/glm-4.7
2. minimax/MiniMax-M2.1
3. if/kimi-k2-thinking
```
**Uso:**
```
Cline:
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
Model: budget-combo
```
**Comportamiento:**
```
Solicitud → glm/glm-4.7
✅ Cuota diaria disponible → Usa GLM ($0.60/1M)
❌ Cuota agotada → Intenta MiniMax ($0.20/1M)
❌ Cuota de MiniMax agotada → Usa iFlow (GRATIS)
```
**Costo mensual (100M tokens):**
```
70M vía GLM: $42
20M vía MiniMax: $4
10M vía iFlow: $0
Total: $46 vs $2000 en ChatGPT API
```
**Ahorros**: 97%.
---
### Ejemplo 3: Combo gratis (Cero costo)
**Objetivo**: 100% gratis, sin costos nunca.
```
Dashboard → Combos → Create New
Name: free-combo
Models:
1. if/kimi-k2-thinking
2. qw/qwen3-coder-plus
3. kr/claude-sonnet-4.5
```
**Uso:**
```
Claude Desktop:
Model: free-combo
```
**Comportamiento:**
```
Solicitud → if/kimi-k2-thinking
✅ Disponible → Usa iFlow
❌ Error → Intenta Qwen
❌ Error → Intenta Kiro
```
**Costo mensual:**
```
100M tokens vía proveedores gratis: $0
Total: $0 para siempre
```
**Caso de uso**: Proyectos personales, aprendizaje, experimentación.
---
### Ejemplo 4: Calidad primero (Solo modelos premium)
**Objetivo**: Mejor calidad, sin fallback barato.
```
Dashboard → Combos → Create New
Name: quality-first
Models:
1. cc/claude-opus-4-5-20251101
2. cx/gpt-5.2-codex
3. gc/gemini-3-pro-preview
```
**Uso:**
```
Codex CLI:
export OPENAI_BASE_URL="http://localhost:20128"
Model: quality-first
```
**Comportamiento:**
```
Solicitud → cc/claude-opus-4-5
❌ Cuota agotada → cx/gpt-5.2-codex
❌ Cuota agotada → gc/gemini-3-pro-preview
❌ Todo agotado → Devuelve error (sin fallback barato)
```
**Caso de uso**: Código crítico de producción, refactoring complejo.
---
### Ejemplo 5: Multi-suscripción (Maximiza todo)
**Objetivo**: Usa todas las suscripciones antes de pagar extra.
```
Dashboard → Combos → Create New
Name: multi-sub
Models:
1. gc/gemini-3-flash-preview (GRATIS 180K/mes)
2. cc/claude-opus-4-5-20251101 (suscripción Pro)
3. cx/gpt-5.2-codex (suscripción Plus)
4. gh/gpt-5 (suscripción Copilot)
5. glm/glm-4.7 (respaldo barato)
6. if/kimi-k2-thinking (emergencia gratis)
```
**Costo mensual (200M tokens):**
```
50M vía Gemini CLI: $0 (nivel gratis)
80M vía Claude Code: $0 (suscripción)
40M vía Codex: $0 (suscripción)
20M vía Copilot: $0 (suscripción)
8M vía GLM: $4.80
2M vía iFlow: $0
Total: $4.80 + suscripciones existentes
```
**Resultado**: Usa 190M tokens de suscripciones, solo $4.80 extra.
---
### Ejemplo 6: Optimización de reinicio de cuota
**Objetivo**: Distribuir el uso según los tiempos de reinicio.
```
Dashboard → Combos → Create New
Name: reset-optimized
Models:
1. cc/claude-opus-4-5 (reinicio 5h, usar mañana)
2. gc/gemini-3-flash (1K/día, usar tarde)
3. glm/glm-4.7 (reinicio diario 10AM, usar noche)
4. minimax/MiniMax-M2.1 (rolling 5h, usar madrugada)
5. if/kimi-k2-thinking (ilimitado, emergencia)
```
**Rutina diaria:**
```
08:00 - 13:00: Claude Code (cuota fresca de 5h)
13:00 - 18:00: Gemini CLI (cuota 1K/día)
18:00 - 22:00: GLM (se reinicia 10AM del día siguiente)
22:00 - 08:00: MiniMax (rolling 5h) o iFlow
```
**Resultado**: Codifica 24/7 con costos mínimos.
---
## Usar combos en herramientas CLI
### Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [desde el dashboard]
Model: premium-coding
```
### Claude Desktop
Edita `~/.claude/config.json`:
```json
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-9router-api-key",
"model": "budget-combo"
}
```
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"
codex --model quality-first "your prompt"
```
### Cline / Continue / RooCode
```
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [desde el dashboard]
Model: free-combo
```
### Solicitud por API
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "premium-coding",
"messages": [
{"role": "user", "content": "Write a function to..."}
],
"stream": true
}'
```
---
## Mejores prácticas
### 1. Siempre incluye el nivel gratis
```
✅ Bueno:
cc/claude-opus → glm/glm-4.7 → if/kimi-k2-thinking
❌ Malo:
cc/claude-opus → glm/glm-4.7
(sin fallback gratis, puede quedarse sin cuota)
```
**Por qué**: Garantiza disponibilidad 24/7, nunca bloqueado por cuota.
### 2. Ordena por costo (Barato a costoso)
```
✅ Bueno:
glm/glm-4.7 → minimax/MiniMax-M2.1 → cc/claude-opus
❌ Malo:
cc/claude-opus → glm/glm-4.7
(desperdicia cuota de suscripción en tareas simples)
```
**Excepción**: Si quieres maximizar el valor de la suscripción, pon la suscripción primero.
### 3. Coincide con los requisitos de calidad
```
Para código de producción:
cc/claude-opus → cx/gpt-5.2-codex → glm/glm-4.7
Para tareas rápidas:
glm/glm-4.7 → if/kimi-k2-thinking
Para experimentación:
if/kimi-k2-thinking → qw/qwen3-coder-plus
```
### 4. Considera los tiempos de reinicio de cuota
```
Combo matutino (cuotas frescas):
cc/claude-opus → cx/gpt-5.2-codex
Combo nocturno (cuotas probablemente agotadas):
glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
```
### 5. Crea múltiples combos para diferentes casos de uso
```
premium-coding: Para tareas complejas
budget-combo: Para tareas simples
free-combo: Para experimentación
quality-first: Para código de producción
```
**Cambia entre combos** según los requisitos de la tarea.
### 6. Monitorea el desempeño del combo
```
Dashboard → Analytics → Combo Usage:
premium-coding:
80% vía cc/claude-opus (bueno, usando suscripción)
15% vía glm/glm-4.7 (respaldo aceptable)
5% vía minimax (fallback raro)
```
**Optimiza**: Si hay demasiado uso de fallback, aumenta la cuota principal o reordena modelos.
---
## Configuración avanzada
### Establecer límites de presupuesto por combo
```
Dashboard → Combos → Edit → Budget:
Daily limit: $5
Monthly limit: $50
```
Cuando se alcanza el límite, 9Router omite los modelos de pago y usa solo el nivel gratis.
### Habilitar/Deshabilitar modelos en un combo
```
Dashboard → Combos → Edit → Models:
✅ cc/claude-opus-4-5 (habilitado)
❌ glm/glm-4.7 (deshabilitado temporalmente)
✅ if/kimi-k2-thinking (habilitado)
```
**Caso de uso**: Deshabilitar temporalmente modelos costosos sin eliminar el combo.
### Clonar un combo existente
```
Dashboard → Combos → Clone "premium-coding"
→ Crea una copia con sufijo "-copy"
→ Modifica y guarda como nuevo combo
```
**Caso de uso**: Crear variaciones para diferentes escenarios.
---
## Solución de problemas
**Problema: El combo no aparece en la lista de modelos**
**Solución:**
1. Refresca el dashboard
2. Verifica que el combo esté guardado (marca verde)
3. Reinicia la herramienta CLI para refrescar la lista de modelos
**Problema: El combo siempre usa el último modelo (nivel gratis)**
**Solución:**
1. Verifica la cuota de los modelos principales (Dashboard → Quota)
2. Verifica que las API keys sean válidas (Dashboard → Providers)
3. Verifica que no se hayan excedido los límites de presupuesto
**Problema: El combo cuesta más de lo esperado**
**Solución:**
1. Dashboard → Analytics → Revisa el uso del combo
2. Verifica si los modelos principales tienen cuota agotada
3. Reordena los modelos (pon los más baratos primero)
4. Establece límites de presupuesto
---
## Relacionado
- [Enrutamiento inteligente](./smart-routing.md) - Cómo funciona el fallback automático
- [Seguimiento de cuota](./quota-tracking.md) - Monitorea uso y costos

View File

@@ -0,0 +1,687 @@
# Seguimiento de cuota y monitoreo de uso
Rastrea el consumo de tokens en tiempo real, monitorea los límites de cuota, estima costos y recibe alertas antes de quedarte sin recursos. Nunca desperdicies cuota de suscripción ni excedas los límites de presupuesto.
---
## Resumen
9Router proporciona un seguimiento de cuota integral para todos los proveedores:
- **Consumo de tokens en tiempo real** - Mira los tokens usados por solicitud
- **Límites de cuota y restantes** - Rastrea el uso vs límites
- **Cuenta regresiva de reinicio** - Sabe cuándo se refresca la cuota
- **Estimación de costos** - Calcula el gasto para niveles de pago
- **Reportes mensuales** - Analiza patrones de uso
- **Alertas y notificaciones** - Recibe advertencias antes de los límites
---
## Resumen del dashboard
### Resumen de cuota
```
Dashboard → Home → Quota Overview
┌─────────────────────────────────────────────┐
│ Claude Code (cc/) │
│ ████████████░░░░░░░░ 2.5h / 5h (50%) │
│ Se reinicia en: 2h 30m │
│ Costo: $0 (suscripción) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ Gemini CLI (gc/) │
│ ████████░░░░░░░░░░░░ 450 / 1000 (45%) │
│ Reinicio diario en: 18h 30m │
│ Mensual: 45K / 180K (25%) │
│ Costo: $0 (nivel gratis) │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ GLM-4.7 (glm/) │
│ ██████████████░░░░░░ 7M / 10M tokens (70%) │
│ Se reinicia: Diario 10:00 AM (en 5h 35m) │
│ Costo hoy: $4.20 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ MiniMax M2.1 (minimax/) │
│ ████████████████░░░░ 4M / 5M tokens (80%) │
│ Ventana rolling 5h │
│ Costo (5h): $0.80 │
└─────────────────────────────────────────────┘
┌─────────────────────────────────────────────┐
│ iFlow (if/) │
│ ████████████████████ Ilimitado │
│ Costo: $0 (gratis para siempre) │
└─────────────────────────────────────────────┘
```
---
## Consumo de tokens en tiempo real
### Seguimiento por solicitud
Cada solicitud muestra el uso detallado de tokens:
```
Dashboard → Activity → Recent Requests
Request #1234
Model: cc/claude-opus-4-5-20251101
Timestamp: 2026-02-04 04:15:32
Tokens:
Input: 1,250 tokens
Output: 850 tokens
Total: 2,100 tokens
Cost: $0 (cuota de suscripción)
Duration: 3.2s
Status: ✅ Success
```
### Monitor de uso en vivo
```
Dashboard → Live Monitor
Solicitud actual:
Model: glm/glm-4.7
Tokens transmitidos: 450 / ~800 estimados
Costo hasta ahora: $0.0009
Duración: 1.8s
```
### Desglose de tokens por modelo
```
Dashboard → Analytics → Token Usage
Hoy (4 feb 2026):
cc/claude-opus-4-5: 15M tokens ($0, suscripción)
glm/glm-4.7: 8M tokens ($4.80)
if/kimi-k2-thinking: 3M tokens ($0, gratis)
Total: 26M tokens
Costo: $4.80
```
---
## Límites de cuota y tiempos de reinicio
### Proveedores de suscripción
**Claude Code (Pro/Max)**
```
Tipo de cuota: Basado en tiempo (rolling 5 horas)
Límite: 5 horas de uso
Reinicio: Ventana rolling 5 horas + refresh semanal
Seguimiento: Tiempo de uso por modelo
El dashboard muestra:
Opus: 2.5h / 5h usados
Sonnet: 1.2h / 5h usados
Haiku: 0.8h / 5h usados
Reinicio semanal: Todos los lunes 00:00 UTC
```
**OpenAI Codex (Plus/Pro)**
```
Tipo de cuota: Basado en tiempo (rolling 5 horas)
Límite: 5 horas (Plus) / 10 horas (Pro)
Reinicio: Ventana rolling 5 horas + refresh semanal
El dashboard muestra:
GPT-5.2 Codex: 3.5h / 5h usados
Se reinicia en: 1h 30m
```
**Gemini CLI (GRATIS)**
```
Tipo de cuota: Conteo de solicitudes + tokens mensuales
Límite diario: 1,000 solicitudes
Límite mensual: 180,000 completados
Reinicio: Diario 00:00 UTC + Mensual día 1
El dashboard muestra:
Hoy: 450 / 1,000 solicitudes (45%)
Este mes: 45K / 180K completados (25%)
Reinicio diario en: 18h 30m
Reinicio mensual en: 26 días
```
**GitHub Copilot**
```
Tipo de cuota: Uso mensual
Límite: Varía según el plan
Reinicio: 1ro de cada mes
El dashboard muestra:
Uso: 60% de la cuota mensual
Se reinicia: 1 mar 2026 (en 25 días)
```
### Proveedores baratos
**GLM-4.7**
```
Tipo de cuota: Límite diario de tokens
Límite: 10M tokens/día (Coding Plan)
Reinicio: Diario 10:00 AM hora de Beijing (UTC+8)
El dashboard muestra:
Usados: 7M / 10M tokens (70%)
Restantes: 3M tokens
Se reinicia en: 5h 35m
Costo hoy: $4.20
```
**MiniMax M2.1**
```
Tipo de cuota: Ventana rolling 5 horas
Límite: 5M tokens por 5 horas
Reinicio: Ventana rolling continua
El dashboard muestra:
Usados (5h): 4M / 5M tokens (80%)
El uso más antiguo expira en: 45m
Costo (5h): $0.80
```
**Kimi K2**
```
Tipo de cuota: Suscripción mensual
Límite: 10M tokens/mes ($9 plano)
Reinicio: Mensual en la fecha de suscripción
El dashboard muestra:
Usados: 6M / 10M tokens (60%)
Se reinicia: 15 feb 2026 (en 11 días)
Costo: $9/mes (pagado por adelantado)
```
### Proveedores gratis
**iFlow / Qwen / Kiro**
```
Tipo de cuota: Ilimitado (con rate-limit)
Límite: Sin límite duro
Reinicio: N/A
El dashboard muestra:
Usados hoy: 5M tokens
Costo: $0 (gratis para siempre)
Estado: ✅ Disponible
```
---
## Estimación de costos
### Seguimiento de costos en tiempo real
```
Dashboard → Costs → Today
Proveedores de suscripción: $0
Claude Code: 15M tokens ($0, incluido)
Gemini CLI: 3M tokens ($0, nivel gratis)
Proveedores de pago: $4.80
GLM-4.7: 8M tokens ($4.80)
Input: 6M × $0.60/1M = $3.60
Output: 2M × $2.20/1M = $4.40
Total: $4.80
Proveedores gratis: $0
iFlow: 3M tokens ($0)
Total hoy: $4.80
```
### Reporte de gasto mensual
```
Dashboard → Costs → This Month (Febrero 2026)
Semana 1 (1-7 feb):
Suscripción: $0 (80M tokens)
Pago: $15.20 (25M tokens)
Gratis: $0 (10M tokens)
Total: $15.20
Semana 2 (8-14 feb):
Suscripción: $0 (75M tokens)
Pago: $12.80 (20M tokens)
Gratis: $0 (8M tokens)
Total: $12.80
Mes hasta la fecha: $28.00
Proyectado (30 días): ~$120
Desglose por proveedor:
GLM-4.7: $22.00 (78%)
MiniMax M2.1: $6.00 (22%)
Costo promedio por 1M tokens: $0.62
Ahorros vs ChatGPT API: 97% ($4,000 → $120)
```
### Proyección de costos
```
Dashboard → Costs → Projections
Basado en uso de los últimos 7 días:
Promedio diario: 50M tokens
Costo diario: $4.50
Proyección mensual:
Tokens: 1,500M (1.5B)
Costo: $135
Desglose:
Suscripción: 900M tokens ($0)
GLM-4.7: 450M tokens ($90)
MiniMax: 120M tokens ($24)
Gratis: 30M tokens ($0)
Estado del presupuesto:
Límite diario: $5 → 90% usado hoy
Límite mensual: $150 → 90% proyectado
⚠️ Advertencia: Puede exceder el presupuesto mensual
```
---
## Dashboard de uso
### Estadísticas generales
```
Dashboard → Analytics → Overview
Hoy (4 feb 2026):
Solicitudes: 1,234
Tokens: 26M
Costo: $4.80
Tiempo promedio de respuesta: 2.1s
Esta semana:
Solicitudes: 8,456
Tokens: 180M
Costo: $28.00
Tasa de éxito: 99.2%
Este mes:
Solicitudes: 15,234
Tokens: 320M
Costo: $52.00
Modelo principal: cc/claude-opus-4-5 (45%)
```
### Uso por modelo
```
Dashboard → Analytics → Models
Modelos principales (este mes):
1. cc/claude-opus-4-5: 145M tokens (45%)
2. glm/glm-4.7: 95M tokens (30%)
3. if/kimi-k2-thinking: 50M tokens (16%)
4. minimax/MiniMax-M2.1: 20M tokens (6%)
5. gc/gemini-3-flash: 10M tokens (3%)
Desglose de costos:
cc/claude-opus: $0 (suscripción)
glm/glm-4.7: $45.00
if/kimi-k2-thinking: $0 (gratis)
minimax/MiniMax-M2.1: $7.00
gc/gemini-3-flash: $0 (gratis)
```
### Uso por tiempo
```
Dashboard → Analytics → Timeline
Uso por hora (hoy):
00:00 - 01:00: 0.5M tokens
01:00 - 02:00: 0.2M tokens
...
08:00 - 09:00: 3.2M tokens (pico)
09:00 - 10:00: 2.8M tokens
...
23:00 - 00:00: 0.8M tokens
Horas pico: 08:00 - 12:00 (codificación matutina)
Horas bajas: 00:00 - 06:00 (noche)
```
### Uso por combo
```
Dashboard → Analytics → Combos
premium-coding:
Solicitudes: 456
Tokens: 12M
Costo: $2.40
Desglose:
cc/claude-opus: 8M tokens (67%, $0)
glm/glm-4.7: 3M tokens (25%, $1.80)
minimax/MiniMax-M2.1: 1M tokens (8%, $0.20)
budget-combo:
Solicitudes: 234
Tokens: 6M
Costo: $1.20
Desglose:
glm/glm-4.7: 4M tokens (67%, $2.40)
if/kimi-k2-thinking: 2M tokens (33%, $0)
```
---
## Alertas y notificaciones
### Alertas de cuota
```
Dashboard → Settings → Alerts
Advertencias de cuota:
✅ Alerta al 80% de cuota usada
✅ Alerta al 90% de cuota usada
✅ Alerta cuando la cuota se agota
✅ Notificar cuando la cuota se reinicia
Entrega:
✅ Notificación del dashboard
✅ Email (opcional)
✅ Webhook (opcional)
```
**Ejemplo de notificaciones:**
```
⚠️ Cuota de Claude Code 80% usada
2.5h restantes (se reinicia en 1h 30m)
⚠️ Cuota de GLM-4.7 90% usada
1M tokens restantes (se reinicia en 5h)
✅ Cuota de Gemini CLI reiniciada
1,000 solicitudes disponibles (límite diario)
```
### Alertas de presupuesto
```
Dashboard → Settings → Budget Alerts
Presupuesto diario: $5
✅ Alerta al 80% ($4)
✅ Alerta al 100% ($5)
✅ Cambio automático al nivel gratis cuando se excede
Presupuesto mensual: $150
✅ Alerta al 50% ($75)
✅ Alerta al 80% ($120)
✅ Alerta al 100% ($150)
```
**Ejemplo de notificaciones:**
```
⚠️ Presupuesto diario 80% usado
$4.00 / $5.00 gastados hoy
⚠️ Presupuesto mensual 50% alcanzado
$75 / $150 gastados este mes
Proyectado: $135 (dentro del presupuesto)
🚨 Presupuesto diario excedido
$5.20 / $5.00 gastados hoy
Cambio automático al nivel gratis
```
### Detección de anomalías de costo
```
Dashboard → Settings → Anomaly Detection
✅ Detectar patrones de gasto inusuales
✅ Alerta en picos de costo (>2× promedio diario)
✅ Advertencia en patrones de agotamiento de cuota
Ejemplo de alerta:
⚠️ Pico de costo detectado
Hoy: $12.50 (2.5× promedio diario)
Razón: Alto uso de GLM-4.7 (20M tokens)
Sugerencia: Verifica si los modelos principales tienen cuota agotada
```
---
## Mejores prácticas
### 1. Monitorea la cuota diariamente
```
Rutina diaria:
1. Revisa el resumen de cuota del dashboard (30 segundos)
2. Revisa los tiempos de reinicio
3. Planifica el uso según la disponibilidad de cuota
```
**Ejemplo:**
```
Revisión matutina:
✅ Claude Code: 5h disponibles (reinicio fresco)
✅ Gemini CLI: 1K solicitudes disponibles
⚠️ GLM-4.7: 2M tokens restantes (se reinicia 10AM)
Acción: Usar Claude Code para el trabajo matutino
```
### 2. Establece límites de presupuesto
```
Dashboard → Settings → Budget:
Diario: $5 (previene gastos excesivos)
Mensual: $150 (alinea con el presupuesto)
```
**Resultado**: Cambio automático al nivel gratis cuando se alcanza el límite.
### 3. Optimiza el uso de combos
```
Dashboard → Analytics → Combos:
Revisa qué modelos se usan más
Ajusta el orden del combo para minimizar costos
```
**Ejemplo:**
```
Actual: cc/claude-opus → glm/glm-4.7
80% vía Claude (bueno)
20% vía GLM ($12/mes)
Optimizado: gc/gemini-3-flash → cc/claude-opus → glm/glm-4.7
50% vía Gemini (gratis)
40% vía Claude (suscripción)
10% vía GLM ($6/mes)
Ahorros: $6/mes
```
### 4. Rastrea los tiempos de reinicio
```
Dashboard → Quota → Reset Schedule:
Claude Code: 5h rolling + Semanal lunes
Gemini CLI: Diario 00:00 UTC + Mensual día 1
GLM-4.7: Diario 10:00 AM hora Beijing
MiniMax: Ventana rolling 5h
```
**Estrategia**: Usa proveedores cuando la cuota esté fresca.
### 5. Revisa los reportes mensuales
```
Dashboard → Analytics → Monthly Report:
Total de tokens: 1.5B
Costo total: $120
Ahorros: 97% vs ChatGPT API
Insights:
- 60% de uso vía suscripciones ($0)
- 30% vía GLM ($90)
- 10% vía nivel gratis ($0)
Optimización:
- Aumentar el uso de Gemini CLI (gratis)
- Reducir el uso de GLM (costoso)
```
---
## Acceso por API
### Obtener estado de cuota
```bash
GET http://localhost:20128/api/quota
Authorization: Bearer your-api-key
Response:
{
"providers": [
{
"id": "cc",
"name": "Claude Code",
"quota": {
"used": 2.5,
"limit": 5,
"unit": "hours",
"percentage": 50
},
"reset": {
"type": "rolling",
"window": "5h",
"nextReset": "2026-02-04T06:45:00Z"
},
"cost": {
"today": 0,
"month": 0,
"currency": "USD"
}
},
{
"id": "glm",
"name": "GLM-4.7",
"quota": {
"used": 7000000,
"limit": 10000000,
"unit": "tokens",
"percentage": 70
},
"reset": {
"type": "daily",
"time": "10:00 AM UTC+8",
"nextReset": "2026-02-04T10:00:00+08:00"
},
"cost": {
"today": 4.20,
"month": 52.00,
"currency": "USD"
}
}
]
}
```
### Obtener estadísticas de uso
```bash
GET http://localhost:20128/api/usage?period=today
Authorization: Bearer your-api-key
Response:
{
"period": "today",
"date": "2026-02-04",
"summary": {
"requests": 1234,
"tokens": 26000000,
"cost": 4.80
},
"byModel": [
{
"model": "cc/claude-opus-4-5",
"requests": 456,
"tokens": 15000000,
"cost": 0
},
{
"model": "glm/glm-4.7",
"requests": 234,
"tokens": 8000000,
"cost": 4.80
}
]
}
```
---
## Solución de problemas
**Problema: La cuota muestra 0% pero las solicitudes fallan**
**Solución:**
1. Verifica la conexión del proveedor (Dashboard → Providers)
2. Verifica que las API keys sean válidas
3. Verifica si el proveedor está caído (página de estado)
4. Intenta reconectar los proveedores OAuth
**Problema: Estimación de costos incorrecta**
**Solución:**
1. Dashboard → Settings → Pricing
2. Verifica que el precio por proveedor coincida con las tarifas actuales
3. Actualiza el precio si el proveedor cambió las tarifas
4. Contacta a soporte si la discrepancia persiste
**Problema: El tiempo de reinicio no se actualiza**
**Solución:**
1. Refresca el dashboard (F5)
2. Verifica que la hora del sistema sea correcta
3. Verifica la configuración de zona horaria
4. Reinicia 9Router si el problema persiste
**Problema: No se reciben alertas**
**Solución:**
1. Dashboard → Settings → Alerts
2. Verifica que la dirección de email sea correcta
3. Revisa la carpeta de spam
4. Prueba la notificación (botón Send Test)
---
## Relacionado
- [Enrutamiento inteligente](./smart-routing.md) - Fallback automático según cuota
- [Combos](./combos.md) - Crea cadenas de fallback personalizadas

View File

@@ -0,0 +1,407 @@
# Enrutamiento inteligente y fallback automático
9Router enruta automáticamente tus solicitudes a través del mejor proveedor disponible usando un sistema de fallback de 3 niveles. Nunca dejes de codificar debido a límites de cuota o rate-limiting.
---
## Cómo funciona
9Router usa enrutamiento inteligente para maximizar tus suscripciones existentes, minimizar costos y garantizar disponibilidad 24/7:
```
Solicitud → 9Router → Verificar Nivel 1 (Suscripción)
↓ cuota agotada
Verificar Nivel 2 (Barato)
↓ límite de presupuesto
Verificar Nivel 3 (Gratis)
↓
Respuesta
```
### Sistema de fallback de 3 niveles
**Nivel 1: SUSCRIPCIÓN (Primario)**
- Claude Code (Pro/Max)
- OpenAI Codex (Plus/Pro)
- Gemini CLI (GRATIS 180K/mes)
- GitHub Copilot
- Antigravity (Google)
**Objetivo**: Maximizar el valor de las suscripciones que ya pagas.
**Nivel 2: BARATO (Respaldo)**
- GLM-4.7 ($0.60/1M entrada)
- MiniMax M2.1 ($0.20/1M entrada)
- Kimi K2 ($9/mes plano)
**Objetivo**: Respaldo ultra-barato cuando se agota la cuota de suscripción (~90% más barato que ChatGPT API).
**Nivel 3: GRATIS (Emergencia)**
- iFlow (8 modelos)
- Qwen (3 modelos)
- Kiro (Claude GRATIS)
**Objetivo**: Fallback de cero costo para codificación ilimitada.
---
## Cambio automático
9Router monitorea la cuota en tiempo real y cambia de proveedor automáticamente:
### Escenario 1: Cuota de suscripción agotada
```
Solicitud del usuario → cc/claude-opus-4-5
↓ cuota agotada (límite de 5 horas alcanzado)
Cambio automático → glm/glm-4.7
↓ cuota diaria agotada
Cambio automático → minimax/MiniMax-M2.1
↓ cuota de 5 horas agotada
Cambio automático → if/kimi-k2-thinking (GRATIS)
↓
Respuesta entregada ✅
```
**Resultado**: Cero tiempo de inactividad, experiencia sin interrupciones.
### Escenario 2: Rate limiting
```
Solicitud del usuario → cx/gpt-5.2-codex
↓ rate limited (demasiadas solicitudes)
Cambio automático → glm/glm-4.7
↓
Respuesta entregada ✅
```
### Escenario 3: Proveedor no disponible
```
Solicitud del usuario → cc/claude-opus-4-5
↓ error del proveedor (503)
Cambio automático → siguiente modelo disponible
↓
Respuesta entregada ✅
```
---
## Lógica de selección de modelo
9Router selecciona el mejor modelo según:
1. **Disponibilidad de cuota** - Verifica si el proveedor tiene cuota restante
2. **Nivel de costo** - Prefiere suscripción → barato → gratis
3. **Tiempo de reinicio** - Considera cuándo se reinicia la cuota
4. **Salud del proveedor** - Omite proveedores con errores
### Ejemplo de orden de prioridad
Para una solicitud a `cc/claude-opus-4-5`:
```
1. Verificar cuota de Claude Code
✅ Disponible → Usa cc/claude-opus-4-5
❌ Agotada → Continúa al paso 2
2. Verificar nivel de fallback (si está configurado)
✅ Cuota de GLM disponible → Usa glm/glm-4.7
❌ Agotada → Continúa al paso 3
3. Verificar nivel gratis
✅ iFlow disponible → Usa if/kimi-k2-thinking
❌ Todo agotado → Devuelve error de cuota
```
---
## Opciones de configuración
### Configuración del dashboard
**1. Habilitar/Deshabilitar fallback automático**
```
Dashboard → Settings → Smart Routing
→ Toggle "Auto Fallback" ON/OFF
```
- **ON** (por defecto): Cambio automático de nivel
- **OFF**: Modo estricto, devuelve error si el modelo principal no está disponible
**2. Establecer límites de presupuesto**
```
Dashboard → Settings → Budget Control
→ Límite diario: $5
→ Límite mensual: $50
```
Cuando se alcanza el presupuesto, 9Router cambia automáticamente al nivel gratis.
**3. Configurar el orden de fallback**
```
Dashboard → Settings → Fallback Priority
→ Arrastra para reordenar proveedores dentro de cada nivel
```
Ejemplo de orden personalizado:
```
Nivel 1: Gemini CLI → Claude Code → Codex
Nivel 2: MiniMax → GLM → Kimi
Nivel 3: iFlow → Kiro → Qwen
```
**4. Notificaciones de reinicio de cuota**
```
Dashboard → Settings → Notifications
→ Email cuando se reinicia la cuota
→ Alerta cuando se usa 80% de cuota
```
---
## Ejemplos
### Ejemplo 1: Fallback automático básico
**Configuración:**
```
Model: cc/claude-opus-4-5-20251101
Fallback: Auto (3 niveles por defecto)
```
**Comportamiento:**
```
Mañana (cuota fresca):
Solicitud → cc/claude-opus-4-5 ✅
Tarde (cuota agotada):
Solicitud → glm/glm-4.7 ✅ (cambio automático)
Noche (cuota de GLM agotada):
Solicitud → minimax/MiniMax-M2.1 ✅ (cambio automático)
Madrugada (toda la cuota de pago agotada):
Solicitud → if/kimi-k2-thinking ✅ (nivel gratis)
```
**Costo**: ~$5-10/mes extra (en su mayoría cubierto por la suscripción).
### Ejemplo 2: Enrutamiento consciente del presupuesto
**Configuración:**
```
Dashboard → Settings:
Presupuesto diario: $2
Presupuesto mensual: $20
Fallback: Habilitado
```
**Comportamiento:**
```
Día 1-15 (dentro del presupuesto):
Solicitudes → glm/glm-4.7 (nivel barato)
Costo: $1.50/día
Día 16 (presupuesto alcanzado):
Solicitudes → if/kimi-k2-thinking (nivel gratis)
Costo: $0
Mes siguiente (presupuesto se reinicia):
Solicitudes → glm/glm-4.7 nuevamente
```
**Resultado**: Nunca excede $20/mes, siempre disponible.
### Ejemplo 3: Modo solo suscripción
**Configuración:**
```
Dashboard → Settings:
Fallback automático: OFF
Modo estricto: ON
```
**Comportamiento:**
```
Solicitud → cc/claude-opus-4-5
✅ Cuota disponible → Éxito
❌ Cuota agotada → Devuelve error (sin fallback)
```
**Caso de uso**: Cuando solo quieres usar suscripciones de pago, sin costos extras.
### Ejemplo 4: Modo solo gratis
**Configuración:**
```
Model: if/kimi-k2-thinking
Fallback: qw/qwen3-coder-plus → kr/claude-sonnet-4.5
```
**Comportamiento:**
```
Todas las solicitudes → Solo nivel gratis
Costo: $0 para siempre
```
**Caso de uso**: Proyectos personales, aprendizaje, experimentación.
---
## Mejores prácticas
### 1. Maximiza el valor de la suscripción
```
Estrategia:
- Establece modelos de suscripción como Nivel 1
- Monitorea el uso de cuota en el dashboard
- Usa el nivel barato solo cuando la suscripción se agote
```
**Ejemplo de combo:**
```
cc/claude-opus-4-5 → glm/glm-4.7 → if/kimi-k2-thinking
```
### 2. Optimiza por costo
```
Estrategia:
- Usa el nivel gratis de Gemini CLI primero (180K/mes)
- Fallback a GLM/MiniMax (ultra-baratos)
- Emergencia: iFlow (gratis)
```
**Ejemplo de combo:**
```
gc/gemini-3-flash-preview → glm/glm-4.7 → if/kimi-k2-thinking
```
### 3. Optimiza por calidad
```
Estrategia:
- Usa los mejores modelos (Claude Opus, GPT-5.2)
- Fallback a modelos baratos buenos (GLM-4.7)
- Último recurso: Nivel gratis
```
**Ejemplo de combo:**
```
cc/claude-opus-4-5 → cx/gpt-5.2-codex → glm/glm-4.7
```
### 4. Disponibilidad 24/7
```
Estrategia:
- Siempre incluye el nivel gratis en el fallback
- Monitorea los tiempos de reinicio de cuota
- Distribuye el uso entre proveedores
```
**Ejemplo de combo:**
```
cc/claude-opus-4-5 → glm/glm-4.7 → minimax/MiniMax-M2.1 → if/kimi-k2-thinking
```
**Resultado**: Nunca te quedas sin cuota, codifica en cualquier momento.
---
## Estrategia de reinicio de cuota
Planifica tu uso según los tiempos de reinicio de cuota:
| Proveedor | Reinicio de cuota | Estrategia |
|----------|-------------|----------|
| **Claude Code** | 5 horas + semanal | Usar en la mañana, cuota fresca |
| **Codex** | 5 horas + semanal | Usar después de cuota de Claude |
| **Gemini CLI** | Diario (1K) + Mensual (180K) | Usar durante el día |
| **GLM-4.7** | Diario 10:00 AM | Usar en la noche, se reinicia al día siguiente |
| **MiniMax M2.1** | Rolling 5 horas | Usar cuando sea, rastrea ventana rolling |
| **iFlow/Qwen/Kiro** | Sin límite | Respaldo de emergencia |
**Ejemplo de rutina diaria:**
```
08:00 - 13:00: Claude Code (cuota fresca 5h)
13:00 - 18:00: Gemini CLI (cuota 1K/día)
18:00 - 22:00: GLM-4.7 (barato, se reinicia 10AM)
22:00 - 08:00: MiniMax o iFlow (rolling 5h o gratis)
```
---
## Monitoreo y alertas
### Rastreador de cuota del dashboard
```
Dashboard → Quota Overview:
Claude Code: 2.5h / 5h restantes (50%)
Gemini CLI: 450 / 1000 solicitudes hoy
GLM-4.7: 5M / 10M tokens (se reinicia en 8h)
MiniMax: 3M / 5M tokens (rolling 5h)
```
### Notificaciones en tiempo real
```
Dashboard → Notifications:
⚠️ Cuota de Claude Code 80% usada (1h restante)
✅ Cuota de GLM-4.7 reiniciada (10M tokens disponibles)
💰 Presupuesto diario 50% usado ($2.50 / $5)
```
### Analítica de uso
```
Dashboard → Analytics:
Hoy: 50M tokens
- 30M vía Claude Code (suscripción)
- 15M vía GLM-4.7 ($9)
- 5M vía iFlow (gratis)
Costo: $9 (vs $1000 en ChatGPT API)
Ahorros: 99%
```
---
## Solución de problemas
**Problema: "All providers quota exhausted"**
**Solución:**
1. Verifica el rastreador de cuota del dashboard
2. Espera el reinicio de cuota (mira la cuenta regresiva)
3. Agrega el nivel gratis a la cadena de fallback
4. O aumenta el límite de presupuesto
**Problema: "Demasiados cambios de fallback"**
**Solución:**
1. Verifica si el proveedor principal está caído
2. Aumenta los límites de cuota (mejora la suscripción)
3. Usa un modelo principal más barato (GLM en lugar de Claude)
**Problema: "Costos inesperados"**
**Solución:**
1. Dashboard → Analytics → Revisa el uso
2. Establece límites de presupuesto diarios/mensuales
3. Cambia al nivel gratis para tareas no críticas
4. Usa combos con fallback gratis
---
## Relacionado
- [Combos](./combos.md) - Crea cadenas de fallback personalizadas
- [Seguimiento de cuota](./quota-tracking.md) - Monitorea uso y costos

View File

@@ -0,0 +1,478 @@
# Instalación
Guía detallada de instalación de 9Router con consejos de solución de problemas.
---
## Requisitos
### Requisitos del sistema
- **Node.js**: Versión 20.0.0 o superior
- **npm**: Versión 10.0.0 o superior (viene con Node.js)
- **OS**: macOS, Linux, Windows (WSL recomendado)
- **Espacio en disco**: ~200MB para la instalación
### Verifica tu versión
```bash
node --version
# Debería mostrar v20.x.x o superior
npm --version
# Debería mostrar 10.x.x o superior
```
**¿No tienes Node.js?** Instálalo desde [nodejs.org](https://nodejs.org/)
---
## Métodos de instalación
### Método 1: Instalación global (Recomendado)
Instala 9Router globalmente para usar desde cualquier lugar:
```bash
npm install -g 9router
```
**Iniciar 9Router:**
```bash
9router
```
**Beneficios:**
- ✅ Ejecuta desde cualquier directorio
- ✅ Comando simple: `9router`
- ✅ Auto-actualizaciones con `npm update -g 9router`
### Método 2: Instalación local
Instala en un proyecto específico:
```bash
mkdir my-9router
cd my-9router
npm install 9router
```
**Iniciar 9Router:**
```bash
npx 9router
```
**Beneficios:**
- ✅ Aislado por proyecto
- ✅ Control de versiones por proyecto
- ✅ Sin contaminación del namespace global
### Método 3: Desde el código fuente (Desarrollo)
Clona y compila desde GitHub:
```bash
git clone https://github.com/decolua/9router.git
cd 9router/app
npm install
npm run build
npm start
```
**Beneficios:**
- ✅ Últimas características de desarrollo
- ✅ Contribuir al desarrollo
- ✅ Modificaciones personalizadas
---
## Primera ejecución
### Iniciar el servidor
```bash
9router
```
**Qué sucede:**
1. El servidor inicia en `http://localhost:20128`
2. El dashboard se abre automáticamente en el navegador
3. Se crea el directorio de datos en `~/.9router`
4. API key generada automáticamente
### Login del dashboard
**Credenciales por defecto:**
- Contraseña: `123456`
**⚠️ Cambia la contraseña inmediatamente:**
1. Inicia sesión en el dashboard
2. Settings → Change Password
3. Usa una contraseña fuerte
### Obtén tu API key
```
Dashboard → Settings → API Keys
→ Copia tu API key
→ Úsala en herramientas CLI
```
**Ejemplo de formato de API key:**
```
9r_1234567890abcdef1234567890abcdef
```
---
## Verificar la instalación
### Verifica el estado del servidor
```bash
curl http://localhost:20128/health
```
**Respuesta esperada:**
```json
{
"status": "ok",
"version": "1.0.0"
}
```
### Lista los modelos disponibles
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer your-api-key"
```
**Respuesta esperada:**
```json
{
"object": "list",
"data": [
{
"id": "cc/claude-opus-4-5-20251101",
"object": "model",
"created": 1234567890,
"owned_by": "claude-code"
}
]
}
```
### Prueba el chat completion
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "cc/claude-opus-4-5-20251101",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
```
---
## Configuración
### Variables de entorno
Crea un archivo `.env` o establece variables de entorno:
```bash
# Security (REQUIRED in production)
export JWT_SECRET="your-secure-secret-change-this"
export INITIAL_PASSWORD="your-password"
# Storage
export DATA_DIR="~/.9router"
# Server
export PORT="20128"
export NODE_ENV="production"
# Logging
export ENABLE_REQUEST_LOGS="false"
```
### Directorio de datos
**Ubicación por defecto:** `~/.9router`
**Contenido:**
```
~/.9router/
├── db.json # Database (providers, combos, usage)
├── api-keys.json # API keys
└── logs/ # Request logs (if enabled)
```
**Cambiar ubicación:**
```bash
export DATA_DIR="/custom/path"
9router
```
### Configuración de puerto
**Puerto por defecto:** `20128`
**Cambiar puerto:**
```bash
export PORT="3000"
9router
```
**O usa la línea de comandos:**
```bash
9router --port 3000
```
---
## Solución de problemas
### Puerto ya en uso
**Error:**
```
Error: listen EADDRINUSE: address already in use :::20128
```
**Solución 1: Mata el proceso existente**
```bash
# Encuentra proceso usando el puerto 20128
lsof -i :20128
# Mata el proceso
kill -9 <PID>
```
**Solución 2: Usa otro puerto**
```bash
9router --port 3000
```
### Permiso denegado
**Error:**
```
Error: EACCES: permission denied, mkdir '/usr/local/lib/node_modules/9router'
```
**Solución: Usa sudo (no recomendado) o corrige los permisos de npm**
```bash
# Corregir permisos de npm (recomendado)
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# Luego instalar nuevamente
npm install -g 9router
```
### Versión de Node.js muy antigua
**Error:**
```
Error: The engine "node" is incompatible with this module
```
**Solución: Actualizar Node.js**
```bash
# Usando nvm (recomendado)
nvm install 20
nvm use 20
# O descargar desde nodejs.org
```
### El dashboard no se abre
**Problema:** El dashboard no se abre automáticamente
**Solución 1: Abrir manualmente**
```
http://localhost:20128
```
**Solución 2: Verifica el firewall**
```bash
# macOS: Permitir Node.js en System Preferences → Security
# Linux: Verificar iptables
# Windows: Verificar Windows Firewall
```
### No se puede conectar a proveedores
**Problema:** El login OAuth falla o la API key es inválida
**Solución 1: Verifica la conexión a internet**
```bash
ping google.com
```
**Solución 2: Verifica el estado del proveedor**
- Claude Code: [status.anthropic.com](https://status.anthropic.com)
- OpenAI: [status.openai.com](https://status.openai.com)
- Gemini: [status.cloud.google.com](https://status.cloud.google.com)
**Solución 3: Regenera la API key**
```
Dashboard → Provider → Disconnect → Reconnect
```
### Uso alto de memoria
**Problema:** 9Router usa demasiada RAM
**Solución: Reinicia el servidor**
```bash
# Detener
pkill -f 9router
# Iniciar
9router
```
**O usa PM2 para auto-reinicio:**
```bash
npm install -g pm2
pm2 start 9router --name 9router
pm2 save
```
---
## Opciones de despliegue
### Desarrollo local
```bash
npm install -g 9router
9router
```
**Caso de uso:** Codificación personal, pruebas
### Servidor VPS/Cloud
```bash
# Instalar
npm install -g 9router
# Configurar
export JWT_SECRET="your-secure-secret"
export INITIAL_PASSWORD="your-password"
export NODE_ENV="production"
# Iniciar con PM2
npm install -g pm2
pm2 start 9router --name 9router
pm2 save
pm2 startup
```
**Caso de uso:** Acceso de equipo, codificación remota
### Docker
```bash
docker pull 9router/9router:latest
docker run -d \
-p 20128:20128 \
-e JWT_SECRET="your-secure-secret" \
-e INITIAL_PASSWORD="your-password" \
-v 9router-data:/root/.9router \
--name 9router \
9router/9router:latest
```
**Caso de uso:** Despliegue containerizado, Kubernetes
### Proxy reverso (Nginx)
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:20128;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
# SSE support for streaming
proxy_buffering off;
proxy_read_timeout 86400;
}
}
```
**Caso de uso:** HTTPS, dominio personalizado, balanceo de carga
---
## Desinstalación
### Eliminar instalación global
```bash
npm uninstall -g 9router
```
### Eliminar el directorio de datos
```bash
rm -rf ~/.9router
```
### Eliminar la configuración
```bash
# Eliminar variables de entorno del archivo de configuración del shell
nano ~/.bashrc # o ~/.zshrc
# Eliminar exports relacionados con 9router
```
---
## Próximos pasos
- [Guía para empezar](../getting-started.md) - Conecta proveedores y comienza a codificar
- [Características](../features/) - Explora seguimiento de cuota, combos, despliegue
- [Solución de problemas](../troubleshooting.md) - Resuelve problemas comunes
---
## ¿Necesitas ayuda?
- **Sitio web**: [9router.com](https://9router.com)
- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)

View File

@@ -0,0 +1,247 @@
# Empezar
Pon en marcha 9Router en 5 minutos y comienza a enrutar solicitudes de IA de forma inteligente.
---
## Inicio rápido
### 1. Instalar
```bash
npm install -g 9router
```
**Requisitos:** Node.js 20+ ([Detalles de instalación](getting-started/installation.md))
### 2. Iniciar
```bash
9router
```
🎉 **El dashboard se abre automáticamente** en `http://localhost:20128`
- Contraseña por defecto: `123456` (cámbiala en el dashboard)
- API key generada automáticamente
- Listo para conectar proveedores
### 3. Conectar proveedores
Tienes 3 formas de conectar proveedores:
#### Opción A: OAuth (Proveedores de suscripción)
**Ideal para:** Claude Code, Codex, Gemini CLI, GitHub Copilot
```
Dashboard → Providers → Connect [Provider]
→ Login OAuth → Refresh automático de token
→ Seguimiento de cuota habilitado
```
**Ejemplo: Claude Code**
1. Clic en "Connect Claude Code"
2. Inicia sesión con tu cuenta de Claude
3. Autoriza 9Router
4. ✅ ¡Listo! Usa el modelo: `cc/claude-opus-4-5-20251101`
#### Opción B: API Key (Proveedores baratos)
**Ideal para:** GLM, MiniMax, Kimi, OpenRouter
```
Dashboard → Providers → Add API Key
→ Selecciona proveedor
→ Pega API key
→ Guardar
```
**Ejemplo: GLM-4.7**
1. Regístrate en [Zhipu AI](https://open.bigmodel.cn/)
2. Obtén la API key del Coding Plan
3. Dashboard → Add API Key → Provider: `glm` → Pega la key
4. ✅ ¡Listo! Usa el modelo: `glm/glm-4.7`
#### Opción C: Proveedores gratis (Sin costo)
**Ideal para:** iFlow, Qwen, Kiro
```
Dashboard → Providers → Connect [Free Provider]
→ Device code u OAuth
→ Uso ilimitado
```
**Ejemplo: iFlow**
1. Clic en "Connect iFlow"
2. Inicia sesión con tu cuenta de iFlow
3. Autoriza
4. ✅ ¡Listo! Usa 8 modelos: `if/kimi-k2-thinking`, `if/qwen3-coder-plus`, etc.
---
## 4. Usar en herramientas CLI
Apunta tu herramienta de codificación a 9Router:
### Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [desde el dashboard de 9router]
Model: cc/claude-opus-4-5-20251101
```
### Claude Desktop
Edita `~/.claude/config.json`:
```json
{
"anthropic_api_base": "http://localhost:20128/v1",
"anthropic_api_key": "your-9router-api-key"
}
```
### Cline / Continue / RooCode
```
Provider: OpenAI Compatible
Base URL: http://localhost:20128/v1
API Key: [desde el dashboard]
Model: cc/claude-opus-4-5-20251101
```
### Codex CLI
```bash
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"
codex "your prompt"
```
---
## 5. Crear combos inteligentes (Opcional)
Los combos habilitan el fallback automático entre modelos:
```
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. cc/claude-opus-4-5-20251101 (Suscripción principal)
2. glm/glm-4.7 (Respaldo barato, $0.6/1M)
3. if/kimi-k2-thinking (Fallback gratis)
Usar en CLI: premium-coding
```
**Cómo funciona:**
1. Intenta primero Claude Opus (tu suscripción)
2. Si la cuota se agota → GLM-4.7 (ultra-barato)
3. Si llega al límite de presupuesto → iFlow (gratis)
4. ¡Cero tiempo de inactividad, cambio automático!
---
## Modelos disponibles
### Modelos de suscripción (Maximiza primero)
**Claude Code (`cc/`)** - Suscripción Pro/Max:
- `cc/claude-opus-4-5-20251101` - Claude 4.5 Opus
- `cc/claude-sonnet-4-5-20250929` - Claude 4.5 Sonnet
- `cc/claude-haiku-4-5-20251001` - Claude 4.5 Haiku
**Codex (`cx/`)** - Suscripción Plus/Pro:
- `cx/gpt-5.2-codex` - GPT 5.2 Codex
- `cx/gpt-5.1-codex-max` - GPT 5.1 Codex Max
**Gemini CLI (`gc/`)** - GRATIS 180K/mes:
- `gc/gemini-3-flash-preview` - Gemini 3 Flash Preview
- `gc/gemini-2.5-pro` - Gemini 2.5 Pro
**GitHub Copilot (`gh/`)** - Suscripción:
- `gh/gpt-5` - GPT-5
- `gh/claude-4.5-sonnet` - Claude 4.5 Sonnet
### Modelos baratos (Respaldo)
**GLM (`glm/`)** - $0.6/$2.2 por 1M:
- `glm/glm-4.7` - GLM 4.7 (reinicio diario 10AM)
**MiniMax (`minimax/`)** - $0.20/$1.00 por 1M:
- `minimax/MiniMax-M2.1` - MiniMax M2.1 (reinicio 5h)
**Kimi (`kimi/`)** - $9/mes (10M tokens):
- `kimi/kimi-latest` - Kimi Latest
### Modelos GRATIS (Emergencia)
**iFlow (`if/`)** - 8 modelos GRATIS:
- `if/kimi-k2-thinking` - Kimi K2 Thinking
- `if/qwen3-coder-plus` - Qwen3 Coder Plus
- `if/glm-4.7` - GLM 4.7
- `if/deepseek-r1` - DeepSeek R1
**Qwen (`qw/`)** - 3 modelos GRATIS:
- `qw/qwen3-coder-plus` - Qwen3 Coder Plus
- `qw/qwen3-coder-flash` - Qwen3 Coder Flash
**Kiro (`kr/`)** - 2 modelos GRATIS:
- `kr/claude-sonnet-4.5` - Claude Sonnet 4.5
- `kr/claude-haiku-4.5` - Claude Haiku 4.5
---
## Estrategia de optimización de costos
### Presupuesto mensual: $10-20/mes
```
1. Usa el nivel gratis de Gemini CLI (180K/mes) para tareas rápidas
2. Usa la cuota de suscripción de Claude Code al máximo (ya pagas)
3. Fallback a GLM ($0.6/1M) cuando se agote la cuota
4. Emergencia: MiniMax M2.1 ($0.20/1M) o iFlow (gratis)
Ejemplo real (100M tokens/mes):
60M vía Gemini CLI: $0 (nivel gratis)
30M vía Claude Code: $0 (suscripción que ya tienes)
8M vía GLM: $4.80
2M vía MiniMax: $0.40
Total: $5.20/mes + suscripciones existentes
```
### Estrategia de reinicio de cuota
```
Rutina diaria:
1. Mañana: Cuota fresca de Claude Code (reinicio 5h)
2. Tarde: Cambia a Gemini CLI (1K/día)
3. Noche: Cuota diaria de GLM (reinicio 10AM del día siguiente)
4. Madrugada: MiniMax (rolling 5h) o iFlow (gratis)
→ ¡Codifica 24/7 con costo extra mínimo!
```
---
## Próximos pasos
- [Detalles de instalación](getting-started/installation.md) - Requisitos, troubleshooting
- [Características](features/) - Explora seguimiento de cuota, combos, despliegue
- [FAQ](faq.md) - Preguntas y respuestas comunes
- [Troubleshooting](troubleshooting.md) - Soluciona problemas comunes
---
## ¿Necesitas ayuda?
- **Sitio web**: [9router.com](https://9router.com)
- **GitHub**: [github.com/decolua/9router](https://github.com/decolua/9router)
- **Issues**: [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)

164
gitbook/content/es/index.md Normal file
View File

@@ -0,0 +1,164 @@
# Bienvenido a 9Router
**Usa Claude, Codex, Gemini GRATIS • Alternativas ultra-baratas desde $0.20/1M tokens**
9Router es un router de modelos de IA que maximiza el valor de tus suscripciones y minimiza los costos mediante enrutamiento inteligente y fallback automático.
---
## ¿Qué es 9Router?
9Router es un proxy inteligente que se sitúa entre tus herramientas de codificación (Cursor, Cline, Claude Desktop) y los proveedores de IA. Enruta automáticamente las solicitudes al mejor modelo disponible según la cuota, el costo y la disponibilidad.
**Deja de desperdiciar dinero:**
- ❌ La cuota de suscripción expira sin usar cada mes
- ❌ Los límites de tasa te detienen a mitad de la codificación
- ❌ APIs costosas ($20-50/mes por proveedor)
- ❌ Cambio manual entre proveedores
**Empieza a maximizar el valor:**
- ✅ **Maximiza tus suscripciones** - Rastrea y usa cada bit de cuota de Claude Code, Codex, Gemini
- ✅ **GRATIS disponible** - Accede a modelos iFlow, Qwen, Kiro vía CLI
- ✅ **Respaldo ultra-barato** - GLM ($0.6/1M), MiniMax M2.1 ($0.20/1M)
- ✅ **Fallback inteligente** - Suscripción → Barato → Gratis, cambio automático
---
## Características clave
### 🔄 Fallback inteligente de 3 niveles
```
Configura una vez, nunca dejes de codificar:
Nivel 1 (SUSCRIPCIÓN): Claude Code → Codex → Gemini
↓ cuota agotada
Nivel 2 (BARATO): GLM-4.7 → MiniMax M2.1 → Kimi
↓ límite de presupuesto
Nivel 3 (GRATIS): iFlow → Qwen → Kiro
→ Cambio automático, sin tiempo de inactividad!
```
### 📊 Seguimiento de cuota
- Consumo de tokens en tiempo real por proveedor
- Cuenta regresiva de reinicio (5 horas, diario, semanal, mensual)
- Estimación de costos para niveles de pago
- Reportes de gasto mensual
### 🎯 Soporte universal de CLI
Funciona con cualquier herramienta que soporte endpoints personalizados de OpenAI:
✅ **Cursor** • **Cline** • **Claude Desktop** • **Codex** • **RooCode** • **Continue** • **Cualquier herramienta compatible con OpenAI**
### 💰 Optimización de costos
**Ejemplo real (100M tokens/mes):**
```
60M vía Gemini CLI: $0 (nivel gratis)
30M vía Claude Code: $0 (suscripción que ya tienes)
8M vía GLM: $4.80
2M vía MiniMax: $0.40
Total: $5.20/mes vs $2000 en ChatGPT API!
```
---
## ¿Por qué elegir 9Router?
### Maximiza tus suscripciones
¿Ya pagas Claude Code ($20-100/mes) o Codex ($20-200/mes)? Obtén el valor completo:
- Rastrea el uso de cuota en tiempo real
- Cambio automático cuando se reinicia la cuota (5 horas, semanal)
- Usa cada token antes de que expire
- Gemini CLI: 180K completados/mes **GRATIS**
### Respaldo ultra-barato
Cuando se agota la cuota de suscripción, paga centavos:
| Proveedor | Costo por 1M tokens | Reinicio |
|----------|-------------------|-------|
| **GLM-4.7** | $0.60 entrada / $2.20 salida | Diario 10:00 AM |
| **MiniMax M2.1** | $0.20 entrada / $1.00 salida | 5 horas rolling |
| **Kimi K2** | $9/mes (10M tokens) | Mensual |
**~90% más barato que ChatGPT API ($20/1M)!**
### Fallback gratis para siempre
Respaldo de emergencia cuando todo lo demás está limitado por cuota:
- **iFlow**: 8 modelos (Kimi K2, Qwen3 Coder Plus, GLM 4.7, MiniMax M2)
- **Qwen**: 3 modelos (Qwen3 Coder Plus/Flash, Vision)
- **Kiro**: Claude Sonnet 4.5, Haiku 4.5 (AWS Builder ID)
---
## Inicio rápido
Comienza en 2 minutos:
```bash
# Instala globalmente
npm install -g 9router
# Inicia (el dashboard se abre automáticamente)
9router
```
🎉 **Se abre el dashboard** → Conecta proveedores → ¡Empieza a codificar!
**Úsalo en tu herramienta CLI:**
```
Endpoint: http://localhost:20128/v1
API Key: [desde el dashboard]
Model: cc/claude-opus-4-5-20251101
```
[→ Guía completa para empezar](getting-started.md)
---
## Casos de uso
### Para desarrolladores individuales
- Maximiza tu suscripción de Claude Code/Codex
- Usa el nivel gratis de Gemini CLI (180K/mes)
- Fallback a modelos ultra-baratos ($0.20/1M)
- Codifica 24/7 sin límites de tasa
### Para equipos
- Despliega en VPS/Cloud para acceso compartido
- Rastrea el gasto del equipo en tiempo real
- Establece límites de presupuesto por nivel
- Gestión centralizada de proveedores
### Para codificación móvil/remota
- Usa el despliegue en la nube (https://9router.com)
- Accede desde iPad, teléfono, donde sea
- Sin limitaciones de localhost
- Red edge de Cloudflare (300+ ubicaciones)
---
## ¿Qué sigue?
- [Empezar](getting-started.md) - Instala y configura en 5 minutos
- [Guía de instalación](getting-started/installation.md) - Instrucciones detalladas
- [Características](features/) - Explora todas las capacidades
- [FAQ](faq.md) - Preguntas comunes
---
<div align="center">
<sub>Construido con ❤️ para desarrolladores que maximizan el valor de la IA</sub>
</div>

View File

@@ -0,0 +1,109 @@
# Integración con Claude Code
Integra 9Router con Claude Code CLI para enrutar tus solicitudes de la API de Anthropic a través del sistema de enrutamiento inteligente de 9Router.
## Requisitos previos
- Claude Code CLI instalado
- 9Router ejecutándose localmente o endpoint en la nube configurado
- API key del dashboard de 9Router
## Configuración
### 1. Configurar variables de entorno
Establece las siguientes variables de entorno en tu archivo de configuración del shell (`~/.bashrc`, `~/.zshrc`, o `~/.bash_profile`):
```bash
# Base URL for 9Router
export ANTHROPIC_BASE_URL="http://localhost:20128/v1"
# Optional: Set default models for aliases
export ANTHROPIC_DEFAULT_OPUS_MODEL="cc/claude-opus-4-5-20251101"
export ANTHROPIC_DEFAULT_SONNET_MODEL="cc/claude-sonnet-4-5-20250929"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="cc/claude-haiku-4-5-20251001"
```
### 2. Recargar la configuración del shell
```bash
source ~/.zshrc # o ~/.bashrc
```
### 3. Verificar la configuración
Verifica que las variables de entorno estén configuradas correctamente:
```bash
echo $ANTHROPIC_BASE_URL
```
## Aliases de modelos
Claude Code soporta los siguientes aliases de modelos que mapean a modelos de 9Router:
| Alias | Modelo | Variable de entorno |
|-------|-------|---------------------|
| `opus` | Claude Opus 4.5 | `ANTHROPIC_DEFAULT_OPUS_MODEL` |
| `sonnet` | Claude Sonnet 4.5 | `ANTHROPIC_DEFAULT_SONNET_MODEL` |
| `haiku` | Claude Haiku 4.5 | `ANTHROPIC_DEFAULT_HAIKU_MODEL` |
## Ejemplos de uso
### Usando aliases de modelos
```bash
# Usar modelo Opus
claude --model opus "Explain quantum computing"
# Usar modelo Sonnet
claude --model sonnet "Write a Python function"
# Usar modelo Haiku
claude --model haiku "Quick code review"
```
### Usando nombres completos de modelos
```bash
claude --model cc/claude-opus-4-5-20251101 "Your prompt here"
```
## Archivo de configuración
Claude Code almacena su configuración en `~/.claude/settings.json`. Puedes editar este archivo manualmente si es necesario:
```json
{
"baseUrl": "http://localhost:20128/v1",
"defaultModel": "sonnet"
}
```
## Solución de problemas
### Problemas de conexión
Si encuentras errores de conexión:
1. Verifica que 9Router esté corriendo: `curl http://localhost:20128/health`
2. Verifica que las variables de entorno estén configuradas correctamente
3. Asegúrate de que ningún firewall esté bloqueando el puerto 20128
### Modelo no encontrado
Si obtienes errores de "modelo no encontrado":
1. Verifica que el nombre del modelo coincida con tu configuración de 9Router
2. Verifica que la conexión del proveedor esté activa en el dashboard de 9Router
3. Asegúrate de que el modelo esté disponible en tus proveedores conectados
## Endpoint en la nube
Para usar el endpoint en la nube de 9Router en lugar de localhost:
```bash
export ANTHROPIC_BASE_URL="https://9router.com"
```
Asegúrate de haber configurado tu API key en el dashboard en la nube de 9Router.

View File

@@ -0,0 +1,201 @@
# Integración con Cline
Integra 9Router con la extensión Cline de VSCode para enrutar tus solicitudes de IA a través del sistema de enrutamiento inteligente de 9Router.
## Requisitos previos
- Visual Studio Code instalado
- Extensión Cline instalada desde el marketplace de VSCode
- 9Router ejecutándose localmente o endpoint en la nube configurado
- API key del dashboard de 9Router
## Configuración
### 1. Abrir la configuración de Cline
1. Abre Visual Studio Code
2. Abre el panel de la extensión Cline (clic en el ícono de Cline en la barra lateral)
3. Clic en el ícono de **Settings** (engranaje) en el panel de Cline
### 2. Seleccionar el proveedor de API
1. En la configuración de Cline, encuentra el dropdown **API Provider**
2. Selecciona **Ollama** de la lista
- Nota: Usamos el tipo de proveedor Ollama porque es compatible con APIs estilo OpenAI
### 3. Configurar Base URL
Establece la URL base a tu endpoint de 9Router:
**Para 9Router local:**
```
http://localhost:20128/v1
```
**Para 9Router en la nube:**
```
https://9router.com
```
**Pasos:**
1. En el campo **Base URL**, ingresa tu endpoint de 9Router
2. Asegúrate de incluir `/v1` al final
### 4. Agregar API Key
1. En el campo **API Key**, ingresa tu API key de 9Router
2. Puedes encontrar tu API key en el dashboard de 9Router en **Settings → API Keys**
3. La key debe comenzar con `sk-9router-`
### 5. Seleccionar modelo
1. En el dropdown **Model**, puedes:
- Seleccionar de los modelos disponibles (si Cline los auto-detecta)
- Ingresar manualmente el nombre del modelo desde tu configuración de 9Router
2. Nombres comunes de modelos:
- `gpt-4`
- `gpt-4o`
- `claude-opus-4-5`
- `claude-sonnet-4-5`
- `gemini-2.0-flash`
### 6. Guardar la configuración
Clic en **Save** o cierra el panel de configuración. Cline guardará automáticamente tu configuración.
## Ejemplo de configuración
Tu configuración de Cline debería verse así:
```
API Provider: Ollama
Base URL: http://localhost:20128/v1
API Key: sk-9router-xxxxxxxxxxxxx
Model: gpt-4
```
## Modelos disponibles
Puedes usar cualquier modelo configurado en tu dashboard de 9Router. Ejemplos comunes:
| Nombre del modelo | Proveedor | Descripción |
|------------|----------|-------------|
| `gpt-4` | OpenAI | GPT-4 Turbo |
| `gpt-4o` | OpenAI | GPT-4 Optimized |
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
## Uso
### Chat con IA
1. Abre el panel de Cline en VSCode
2. Escribe tu mensaje en el input del chat
3. Presiona Enter para enviar
4. Cline usará 9Router para procesar tu solicitud
### Generación de código
1. Pide a Cline que genere código: "Create a React component for a login form"
2. Cline generará código usando 9Router
3. Revisa y acepta el código generado
### Explicación de código
1. Selecciona código en tu editor
2. Pregunta a Cline: "Explain this code"
3. Obtén explicaciones potenciadas por IA a través de 9Router
### Operaciones con archivos
1. Pide a Cline que cree, modifique o elimine archivos
2. Cline usará 9Router para entender el contexto y hacer cambios
3. Revisa los cambios antes de aceptar
## Solución de problemas
### Error "Connection Failed"
1. Verifica que 9Router esté corriendo: `curl http://localhost:20128/health`
2. Verifica que la URL base sea correcta e incluya `/v1`
3. Asegúrate de que ningún firewall esté bloqueando el puerto 20128
4. Intenta reiniciar VSCode
### Error "Invalid API Key"
1. Verifica tu API key en el dashboard de 9Router
2. Asegúrate de haber copiado la key completa incluyendo el prefijo `sk-9router-`
3. Verifica que la API key no haya expirado
4. Intenta regenerar una nueva API key
### Error "Model Not Found"
1. Verifica que el nombre del modelo coincida exactamente con tu configuración de 9Router
2. Verifica que la conexión del proveedor esté activa en el dashboard de 9Router
3. Asegúrate de que el modelo esté disponible en tus proveedores conectados
4. Intenta usar el nombre completo del modelo (ej. `openai/gpt-4` en lugar de `gpt-4`)
### Cline no responde
1. Revisa el panel de output de Cline para mensajes de error
2. Verifica que tu instancia de 9Router esté ejecutándose y saludable
3. Intenta recargar la ventana de VSCode (Cmd/Ctrl + Shift + P → "Reload Window")
4. Revisa los logs de 9Router para cualquier error
## Configuración avanzada
### Usar endpoint en la nube
Para usar el endpoint en la nube de 9Router en lugar de localhost:
1. En la configuración de Cline, establece Base URL a: `https://9router.com`
2. Asegúrate de haber configurado tu API key en el dashboard en la nube de 9Router
3. Asegúrate de que tu endpoint en la nube esté activo y accesible
### Múltiples modelos
Puedes cambiar rápidamente entre modelos:
1. Abre la configuración de Cline
2. Cambia el campo **Model** a otro modelo
3. Guarda y continúa chateando con el nuevo modelo
### Timeout personalizado
Si experimentas problemas de timeout con solicitudes grandes:
1. Abre la configuración de VSCode (Cmd/Ctrl + ,)
2. Busca "Cline timeout"
3. Aumenta el valor de timeout (por defecto suele ser 30 segundos)
## Mejores prácticas
1. **Usa modelos apropiados**: Elige modelos rápidos (como Haiku o Flash) para tareas simples, y modelos más potentes (como Opus o GPT-4) para tareas complejas
2. **Monitorea el uso**: Revisa el dashboard de 9Router para estadísticas de uso y costos
3. **Gestión de contexto**: Mantén tus conversaciones enfocadas para reducir el uso de tokens
4. **Cambio de modelo**: Cambia modelos según la complejidad de la tarea para optimizar costo y rendimiento
5. **Seguridad de API Key**: Nunca subas tu API key al control de versiones
## Integración con características de 9Router
### Enrutamiento de modelos
9Router enruta automáticamente tus solicitudes al mejor proveedor disponible según:
- Disponibilidad del modelo
- Estado de salud del proveedor
- Optimización de costos
- Balanceo de carga
### Soporte de fallback
Si un proveedor falla, 9Router automáticamente cambia a proveedores alternativos configurados en tu dashboard.
### Seguimiento de uso
Monitorea tu uso de Cline a través del dashboard de 9Router:
- Total de solicitudes
- Uso de tokens
- Costo por modelo
- Distribución por proveedor

View File

@@ -0,0 +1,136 @@
# Integración con OpenAI Codex CLI
Integra 9Router con OpenAI Codex CLI para enrutar tus solicitudes de la API de OpenAI a través del sistema de enrutamiento inteligente de 9Router.
## Requisitos previos
- OpenAI Codex CLI instalado
- 9Router ejecutándose localmente o endpoint en la nube configurado
- API key del dashboard de 9Router
## Configuración
### 1. Configurar variables de entorno
Establece las siguientes variables de entorno en tu archivo de configuración del shell (`~/.bashrc`, `~/.zshrc`, o `~/.bash_profile`):
```bash
# Base URL for 9Router
export OPENAI_BASE_URL="http://localhost:20128/v1"
# API Key from 9Router dashboard
export OPENAI_API_KEY="your-9router-api-key"
```
### 2. Recargar la configuración del shell
```bash
source ~/.zshrc # o ~/.bashrc
```
### 3. Verificar la configuración
Verifica que las variables de entorno estén configuradas correctamente:
```bash
echo $OPENAI_BASE_URL
echo $OPENAI_API_KEY
```
## Modelos disponibles
9Router proporciona los siguientes modelos de Codex:
| ID del modelo | Descripción |
|----------|-------------|
| `cx/gpt-5.2-codex` | GPT-5.2 Codex - Última versión |
| `cx/gpt-5.1-codex-max` | GPT-5.1 Codex Max - Contexto extendido |
## Ejemplos de uso
### Uso básico
```bash
# Usar GPT-5.2 Codex
codex --model cx/gpt-5.2-codex "Write a function to sort an array"
# Usar GPT-5.1 Codex Max
codex --model cx/gpt-5.1-codex-max "Explain this complex algorithm"
```
### Generación de código
```bash
codex --model cx/gpt-5.2-codex "Create a REST API endpoint for user authentication"
```
### Explicación de código
```bash
codex --model cx/gpt-5.1-codex-max "Explain what this code does: $(cat myfile.js)"
```
## Archivo de configuración
También puedes configurar Codex CLI usando un archivo de configuración. Crea o edita `~/.codex/config.json`:
```json
{
"baseUrl": "http://localhost:20128/v1",
"apiKey": "your-9router-api-key",
"defaultModel": "cx/gpt-5.2-codex"
}
```
## Solución de problemas
### Errores de autenticación
Si encuentras errores de autenticación:
1. Verifica que tu API key sea correcta en el dashboard de 9Router
2. Verifica que la variable de entorno `OPENAI_API_KEY` esté configurada
3. Asegúrate de que la API key no haya expirado
### Problemas de conexión
Si encuentras errores de conexión:
1. Verifica que 9Router esté corriendo: `curl http://localhost:20128/health`
2. Verifica que las variables de entorno estén configuradas correctamente
3. Asegúrate de que ningún firewall esté bloqueando el puerto 20128
### Modelo no disponible
Si obtienes errores de "modelo no disponible":
1. Verifica que el nombre del modelo coincida con tu configuración de 9Router
2. Verifica que la conexión del proveedor de OpenAI esté activa en el dashboard de 9Router
3. Asegúrate de que el modelo esté disponible en tus proveedores conectados
## Endpoint en la nube
Para usar el endpoint en la nube de 9Router en lugar de localhost:
```bash
export OPENAI_BASE_URL="https://9router.com"
```
Asegúrate de haber configurado tu API key en el dashboard en la nube de 9Router.
## Configuración avanzada
### Timeout personalizado
```bash
export OPENAI_TIMEOUT=60 # segundos
```
### Modo debug
Habilita el modo debug para ver logs detallados de request/response:
```bash
export CODEX_DEBUG=true
codex --model cx/gpt-5.2-codex "Your prompt"
```

View File

@@ -0,0 +1,249 @@
# Integración con la extensión Continue de VSCode
Integra 9Router con la extensión Continue para llevar la asistencia de IA directamente a Visual Studio Code.
## Requisitos previos
- Visual Studio Code instalado
- Extensión Continue instalada desde el marketplace de VSCode
- API key de 9Router desde el [dashboard](https://9router.com/dashboard)
- 9Router ejecutándose (local o en la nube)
## Pasos de configuración
### 1. Abrir la configuración de Continue
1. Abre VSCode
2. Presiona `Cmd+Shift+P` (Mac) o `Ctrl+Shift+P` (Windows/Linux)
3. Escribe "Continue: Open Config" y selecciónalo
4. Esto abre `~/.continue/config.json`
### 2. Agregar configuración de modelo de 9Router
Agrega la siguiente configuración a tu `config.json`:
**Configuración de un solo modelo:**
```json
{
"models": [
{
"title": "9Router - Claude Opus",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
}
]
}
```
**Configuración de múltiples modelos:**
```json
{
"models": [
{
"title": "9Router - Claude Opus (Best)",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - Claude Sonnet (Balanced)",
"provider": "openai",
"model": "cc/claude-sonnet-4-20250514",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - DeepSeek Chat (Code)",
"provider": "openai",
"model": "cx/deepseek-chat",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
},
{
"title": "9Router - Claude Haiku (Fast)",
"provider": "openai",
"model": "cc/claude-haiku-4-20250514",
"apiKey": "your-api-key-from-dashboard",
"apiBase": "http://localhost:20128/v1"
}
]
}
```
**Para 9Router en la nube:**
Reemplaza `apiBase` con:
```json
"apiBase": "https://9router.com/v1"
```
### 3. Guardar y recargar
1. Guarda el archivo de configuración
2. Recarga la ventana de VSCode: `Cmd+Shift+P` → "Developer: Reload Window"
3. La extensión Continue cargará la nueva configuración
### 4. Seleccionar modelo
1. Abre la barra lateral de Continue (clic en el ícono de Continue en el panel izquierdo)
2. Clic en el dropdown selector de modelo en la parte superior
3. Elige tu modelo preferido de 9Router
## Modelos disponibles
### Modelos Claude (Anthropic)
- `cc/claude-opus-4-5-20251101` - El más capaz, ideal para tareas complejas
- `cc/claude-sonnet-4-20250514` - Rendimiento y velocidad equilibrados
- `cc/claude-haiku-4-20250514` - El más rápido, bueno para tareas simples
### Modelos DeepSeek
- `cx/deepseek-chat` - Excelente para generación de código
- `cx/deepseek-reasoner` - Mejor para resolución de problemas complejos
### Modelos GLM (Zhipu AI)
- `glm/glm-4-plus` - Chino e inglés avanzado
- `glm/glm-4-flash` - Respuestas rápidas
## Ejemplos de uso
### Explicación de código
1. Selecciona código en el editor
2. Abre la barra lateral de Continue
3. Escribe: "Explain this code"
4. Modelo: `cc/claude-sonnet-4-20250514`
### Generación de código
1. Abre la barra lateral de Continue
2. Escribe: "Create a React component for user profile card"
3. Modelo: `cx/deepseek-chat`
### Refactorización
1. Selecciona código para refactorizar
2. Escribe: "Refactor this to use async/await"
3. Modelo: `cc/claude-sonnet-4-20250514`
### Corrección de bugs
1. Selecciona código problemático
2. Escribe: "Find and fix the bug in this code"
3. Modelo: `cx/deepseek-reasoner`
## Configuración avanzada
### Prompts de sistema personalizados
Agrega prompts de sistema personalizados para comportamientos específicos:
```json
{
"models": [
{
"title": "9Router - Code Expert",
"provider": "openai",
"model": "cx/deepseek-chat",
"apiKey": "your-api-key",
"apiBase": "http://localhost:20128/v1",
"systemMessage": "You are an expert programmer. Always provide clean, well-documented code with best practices."
}
]
}
```
### Temperatura y parámetros
Ajusta el comportamiento del modelo con parámetros:
```json
{
"models": [
{
"title": "9Router - Creative Writer",
"provider": "openai",
"model": "cc/claude-opus-4-5-20251101",
"apiKey": "your-api-key",
"apiBase": "http://localhost:20128/v1",
"temperature": 0.9,
"topP": 0.95
}
]
}
```
### Proveedores de contexto
Configura qué contexto envía Continue al modelo:
```json
{
"contextProviders": [
{
"name": "code",
"params": {
"maxLines": 100
}
},
{
"name": "diff",
"params": {}
},
{
"name": "terminal",
"params": {}
}
]
}
```
## Atajos de teclado
- `Cmd+L` (Mac) / `Ctrl+L` (Windows/Linux) - Abrir chat de Continue
- `Cmd+I` (Mac) / `Ctrl+I` (Windows/Linux) - Edición inline
- `Cmd+Shift+R` (Mac) / `Ctrl+Shift+R` (Windows/Linux) - Regenerar respuesta
## Solución de problemas
### El modelo no responde
- Verifica que 9Router esté corriendo: `curl http://localhost:20128/health`
- Verifica la API key en config.json
- Revisa la consola de desarrollador de VSCode por errores: `Help` → `Toggle Developer Tools`
### Modelo incorrecto seleccionado
- Clic en el dropdown de modelo en la barra lateral de Continue
- Selecciona el modelo correcto de 9Router
- El nombre del modelo debe coincidir exactamente (sensible a mayúsculas)
### La configuración no se carga
- Verifica que la sintaxis JSON sea válida (usa un validador de JSON)
- Verifica la ubicación del archivo: `~/.continue/config.json`
- Recarga la ventana de VSCode después de cambios
### Rendimiento lento
- Cambia a modelos más rápidos (haiku, flash)
- Reduce el tamaño del contexto en contextProviders
- Verifica la latencia de red hacia 9Router
## Mejores prácticas
### Estrategia de selección de modelo
- **Ediciones rápidas**: Usa `cc/claude-haiku-4-20250514`
- **Generación de código**: Usa `cx/deepseek-chat`
- **Refactoring complejo**: Usa `cc/claude-opus-4-5-20251101`
- **Resolución de problemas**: Usa `cx/deepseek-reasoner`
### Gestión de contexto
- Selecciona solo el código relevante antes de preguntar
- Usa prompts específicos y claros
- Divide tareas complejas en pasos más pequeños
### Optimización de costos
- Usa modelos más rápidos/baratos para tareas simples
- Limita el tamaño del contexto cuando sea posible
- Cachea respuestas usadas con frecuencia
## Próximos pasos
- [Configurar Cursor](cursor.md) para integración mejorada con IDE
- [Configurar Roo](roo.md) para asistente de IA
- [Explorar uso de CLI](../cli/basic-usage.md)
- [Aprende sobre la selección de modelos](../models/overview.md)

View File

@@ -0,0 +1,149 @@
# Integración con Cursor
Integra 9Router con Cursor IDE para enrutar tus solicitudes de IA a través del sistema de enrutamiento inteligente de 9Router.
## Requisitos previos
- Cursor IDE instalado
- Cuenta Cursor Pro (requerida para endpoints de API personalizados)
- Endpoint en la nube de 9Router configurado
- API key del dashboard de 9Router
## ⚠️ Notas importantes
> **Endpoint en la nube requerido**: Cursor enruta solicitudes a través de su propio servidor y no soporta endpoints localhost. Debes usar el endpoint en la nube de 9Router: `https://9router.com`
> **Cursor Pro requerido**: Esta característica requiere una cuenta Cursor Pro para usar endpoints de API personalizados.
## Configuración
### 1. Abrir la configuración de Cursor
1. Abre Cursor IDE
2. Ve a **Settings** (Cmd/Ctrl + ,)
3. Navega a la sección **Models**
### 2. Habilitar OpenAI API
1. Encuentra la opción **OpenAI API key**
2. Activa el toggle para habilitar la configuración de API personalizada
### 3. Configurar Base URL
Establece la URL base al endpoint en la nube de 9Router:
```
https://9router.com
```
**Pasos:**
1. En la configuración de Models, localiza el campo **Base URL**
2. Ingresa: `https://9router.com`
3. Clic en **Save**
### 4. Agregar API Key
1. En el campo **API Key**, ingresa tu API key de 9Router
2. Puedes encontrar tu API key en el dashboard de 9Router en **Settings → API Keys**
3. Clic en **Save**
### 5. Agregar modelo personalizado
1. Clic en el botón **View All Models**
2. Clic en **Add Custom Model**
3. Ingresa el nombre del modelo desde tu configuración de 9Router (ej. `gpt-4`, `claude-opus-4-5`, etc.)
4. Clic en **Add**
### 6. Seleccionar modelo
1. En la interfaz de chat de Cursor, clic en el dropdown selector de modelo
2. Elige tu modelo personalizado de la lista
3. ¡Empieza a usar 9Router con Cursor!
## Ejemplo de configuración
Tu configuración de Cursor debería verse así:
```
OpenAI API: ✓ Enabled
Base URL: https://9router.com
API Key: sk-9router-xxxxxxxxxxxxx
Custom Models: gpt-4, claude-opus-4-5, gemini-2.0-flash
```
## Modelos disponibles
Puedes usar cualquier modelo configurado en tu dashboard de 9Router. Ejemplos comunes:
| Nombre del modelo | Proveedor | Descripción |
|------------|----------|-------------|
| `gpt-4` | OpenAI | GPT-4 Turbo |
| `gpt-4o` | OpenAI | GPT-4 Optimized |
| `claude-opus-4-5` | Anthropic | Claude Opus 4.5 |
| `claude-sonnet-4-5` | Anthropic | Claude Sonnet 4.5 |
| `gemini-2.0-flash` | Google | Gemini 2.0 Flash |
## Uso
### Interfaz de chat
1. Abre el chat de Cursor (Cmd/Ctrl + L)
2. Selecciona tu modelo del dropdown
3. Comienza a chatear con IA a través de 9Router
### Generación de código inline
1. Selecciona código en tu editor
2. Presiona Cmd/Ctrl + K
3. Ingresa tu prompt
4. Cursor usará 9Router para generar código
### Explicación de código
1. Selecciona código en tu editor
2. Presiona Cmd/Ctrl + L
3. Pregunta "Explain this code"
4. Obtén explicaciones potenciadas por IA a través de 9Router
## Solución de problemas
### Error "Invalid API Key"
1. Verifica tu API key en el dashboard de 9Router
2. Asegúrate de haber copiado la key completa incluyendo el prefijo `sk-9router-`
3. Verifica que la API key no haya expirado
4. Intenta regenerar una nueva API key
### Error "Model Not Found"
1. Verifica que el nombre del modelo coincida exactamente con tu configuración de 9Router
2. Verifica que la conexión del proveedor esté activa en el dashboard de 9Router
3. Asegúrate de que el modelo esté disponible en tus proveedores conectados
4. Intenta usar el nombre completo del modelo (ej. `openai/gpt-4` en lugar de `gpt-4`)
### Problemas de conexión
1. Verifica que estés usando el endpoint en la nube: `https://9router.com`
2. Verifica tu conexión a internet
3. Asegúrate de que el servicio en la nube de 9Router esté operativo
4. Intenta deshabilitar VPN o proxy si está habilitado
### Localhost no funciona
> **Recuerda**: Cursor no soporta endpoints localhost. Debes usar el endpoint en la nube `https://9router.com`. Si necesitas usar una instancia local de 9Router, considera usar un servicio de tunneling como ngrok para exponer tu endpoint local.
## Configuración del endpoint en la nube
Si estás ejecutando 9Router localmente y quieres usarlo con Cursor:
1. Habilita el endpoint en la nube en la configuración de 9Router
2. Configura tu URL del endpoint en la nube en el dashboard de 9Router
3. Usa la URL en la nube en la configuración de Cursor
4. Asegúrate de que tu instancia local de 9Router sea accesible desde internet
## Mejores prácticas
1. **Usa aliases de modelos**: Crea aliases cortos para modelos usados con frecuencia en 9Router
2. **Monitorea el uso**: Revisa el dashboard de 9Router para estadísticas de uso y costos
3. **Rota las API Keys**: Rota tus API keys regularmente por seguridad
4. **Prueba modelos**: Prueba diferentes modelos para encontrar el mejor para tu caso de uso

View File

@@ -0,0 +1,416 @@
# Integración con otras herramientas
9Router es compatible con cualquier herramienta que soporte el formato de API de OpenAI. Esta guía cubre patrones de integración genéricos para varias herramientas y aplicaciones personalizadas.
## Resumen
9Router proporciona un endpoint de API compatible con OpenAI que funciona con:
- Scripts y aplicaciones personalizadas
- Clientes de API y herramientas de testing
- Herramientas CLI y utilidades
- Integraciones de terceros
- Frameworks de desarrollo
## Patrón de configuración genérico
Cualquier herramienta compatible con OpenAI puede conectarse a 9Router usando estas configuraciones:
**9Router local:**
```
Base URL: http://localhost:20128/v1
API Key: your-api-key-from-dashboard
Model: cualquier modelo de 9Router (cc/*, cx/*, glm/*, etc.)
```
**9Router en la nube:**
```
Base URL: https://9router.com/v1
API Key: your-api-key-from-dashboard
Model: cualquier modelo de 9Router (cc/*, cx/*, glm/*, etc.)
```
## Modelos disponibles
### Modelos Claude (Anthropic)
- `cc/claude-opus-4-5-20251101`
- `cc/claude-sonnet-4-20250514`
- `cc/claude-haiku-4-20250514`
### Modelos DeepSeek
- `cx/deepseek-chat`
- `cx/deepseek-reasoner`
### Modelos GLM (Zhipu AI)
- `glm/glm-4-plus`
- `glm/glm-4-flash`
## Ejemplos de integración
### Python con OpenAI SDK
```python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key-from-dashboard",
base_url="http://localhost:20128/v1"
)
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[
{"role": "user", "content": "Hello, how are you?"}
]
)
print(response.choices[0].message.content)
```
### Node.js con OpenAI SDK
```javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key-from-dashboard",
baseURL: "http://localhost:20128/v1"
});
const response = await client.chat.completions.create({
model: "cc/claude-sonnet-4-20250514",
messages: [
{ role: "user", content: "Hello, how are you?" }
]
});
console.log(response.choices[0].message.content);
```
### Comando cURL
```bash
curl http://localhost:20128/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-api-key-from-dashboard" \
-d '{
"model": "cc/claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
]
}'
```
### Cliente HTTP (Postman, Insomnia)
**Solicitud:**
```
POST http://localhost:20128/v1/chat/completions
```
**Headers:**
```
Content-Type: application/json
Authorization: Bearer your-api-key-from-dashboard
```
**Body:**
```json
{
"model": "cc/claude-sonnet-4-20250514",
"messages": [
{"role": "user", "content": "Hello, how are you?"}
],
"temperature": 0.7,
"max_tokens": 1000
}
```
### Integración con LangChain
```python
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage
llm = ChatOpenAI(
model_name="cc/claude-sonnet-4-20250514",
openai_api_key="your-api-key-from-dashboard",
openai_api_base="http://localhost:20128/v1",
temperature=0.7
)
messages = [HumanMessage(content="Explain quantum computing")]
response = llm(messages)
print(response.content)
```
### Integración con LlamaIndex
```python
from llama_index.llms import OpenAI
llm = OpenAI(
model="cc/claude-sonnet-4-20250514",
api_key="your-api-key-from-dashboard",
api_base="http://localhost:20128/v1"
)
response = llm.complete("What is machine learning?")
print(response.text)
```
## Ejemplos de scripts personalizados
### Script de procesamiento por lotes
```python
import openai
import json
openai.api_key = "your-api-key-from-dashboard"
openai.api_base = "http://localhost:20128/v1"
def process_batch(prompts, model="cx/deepseek-chat"):
results = []
for prompt in prompts:
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
results.append({
"prompt": prompt,
"response": response.choices[0].message.content
})
return results
prompts = [
"Explain AI in one sentence",
"What is machine learning?",
"Define neural networks"
]
results = process_batch(prompts)
print(json.dumps(results, indent=2))
```
### Manejador de respuestas streaming
```javascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: "your-api-key-from-dashboard",
baseURL: "http://localhost:20128/v1"
});
async function streamResponse(prompt) {
const stream = await client.chat.completions.create({
model: "cc/claude-sonnet-4-20250514",
messages: [{ role: "user", content: prompt }],
stream: true
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || "";
process.stdout.write(content);
}
}
streamResponse("Write a short story about AI");
```
### Comparación multi-modelo
```python
from openai import OpenAI
client = OpenAI(
api_key="your-api-key-from-dashboard",
base_url="http://localhost:20128/v1"
)
models = [
"cc/claude-sonnet-4-20250514",
"cx/deepseek-chat",
"glm/glm-4-plus"
]
prompt = "Explain quantum computing in simple terms"
for model in models:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
print(f"\n=== {model} ===")
print(response.choices[0].message.content)
```
## Patrones comunes de integración
### Variables de entorno
Almacena credenciales de forma segura:
```bash
# .env file
ROUTER_API_KEY=your-api-key-from-dashboard
ROUTER_BASE_URL=http://localhost:20128/v1
ROUTER_MODEL=cc/claude-sonnet-4-20250514
```
```python
import os
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("ROUTER_API_KEY"),
base_url=os.getenv("ROUTER_BASE_URL")
)
```
### Manejo de errores
```python
from openai import OpenAI, OpenAIError
client = OpenAI(
api_key="your-api-key",
base_url="http://localhost:20128/v1"
)
try:
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[{"role": "user", "content": "Hello"}]
)
print(response.choices[0].message.content)
except OpenAIError as e:
print(f"Error: {e}")
```
### Lógica de reintentos
```python
import time
from openai import OpenAI, RateLimitError
client = OpenAI(
api_key="your-api-key",
base_url="http://localhost:20128/v1"
)
def chat_with_retry(prompt, max_retries=3):
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="cc/claude-sonnet-4-20250514",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
except RateLimitError:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Exponential backoff
else:
raise
```
## Solución de problemas
### Problemas de conexión
**Problema:** No se puede conectar a 9Router
```bash
# Verifica si 9Router está corriendo
curl http://localhost:20128/health
# Respuesta esperada:
{"status": "ok"}
```
**Solución:**
- Verifica que 9Router esté corriendo
- Verifica que el puerto 20128 no esté bloqueado
- Asegúrate de tener la URL base correcta (incluir `/v1`)
### Errores de autenticación
**Problema:** 401 Unauthorized
```
Error: Invalid API key
```
**Solución:**
- Verifica la API key desde el dashboard
- Verifica el formato del header de Authorization: `Bearer your-api-key`
- Asegúrate de no tener espacios extras o saltos de línea en la API key
### Modelo no encontrado
**Problema:** 404 Model not found
```
Error: Model 'cc/claude-opus' not found
```
**Solución:**
- Usa el nombre exacto del modelo (sensible a mayúsculas)
- Verifica los modelos disponibles: `curl http://localhost:20128/v1/models`
- Verifica que el modelo esté habilitado en tu plan
### Problemas de timeout
**Problema:** Request timeout
```
Error: Request timed out after 30s
```
**Solución:**
- Aumenta el timeout en la configuración del cliente
- Usa modelos más rápidos para tareas sensibles al tiempo
- Verifica la conexión de red a 9Router
### Rate limiting
**Problema:** 429 Too Many Requests
```
Error: Rate limit exceeded
```
**Solución:**
- Implementa exponential backoff
- Reduce la frecuencia de solicitudes
- Verifica los límites de tasa en el dashboard
- Considera actualizar tu plan
## Mejores prácticas
### Seguridad
- Almacena las API keys en variables de entorno
- Nunca subas las API keys al control de versiones
- Usa HTTPS para despliegues en la nube
- Rota las API keys regularmente
### Rendimiento
- Usa modelos apropiados para la complejidad de la tarea
- Implementa caché para consultas repetidas
- Usa streaming para respuestas largas
- Agrupa solicitudes cuando sea posible
### Manejo de errores
- Siempre implementa bloques try-catch
- Agrega lógica de reintento con exponential backoff
- Registra errores para debugging
- Proporciona mecanismos de fallback
### Optimización de costos
- Elige modelos costo-efectivos para tareas simples
- Cachea respuestas cuando sea apropiado
- Monitorea el uso en el dashboard
- Establece límites de solicitudes en el código
## Próximos pasos
- [Configurar Cursor](cursor.md) para integración con IDE
- [Configurar Continue](continue.md) para VSCode
- [Explorar uso de CLI](../cli/basic-usage.md)
- [Aprende sobre la selección de modelos](../models/overview.md)
- [Referencia de API](../api/reference.md)

View File

@@ -0,0 +1,127 @@
# Integración con Roo AI Assistant
Integra 9Router con Roo AI Assistant para acceder a múltiples modelos de IA a través de una interfaz unificada.
## Requisitos previos
- Roo AI Assistant instalado
- API key de 9Router desde el [dashboard](https://9router.com/dashboard)
- 9Router ejecutándose (local o en la nube)
## Pasos de configuración
### 1. Abrir la configuración de Roo
Inicia Roo AI Assistant y abre el panel de configuración.
### 2. Configurar el proveedor de API
1. Navega a la configuración de **API Provider**
2. Selecciona **Ollama** como tipo de proveedor
3. Configura los siguientes ajustes:
**Para 9Router local:**
```
Base URL: http://localhost:20128/v1
API Key: your-api-key-from-dashboard
```
**Para 9Router en la nube:**
```
Base URL: https://9router.com/v1
API Key: your-api-key-from-dashboard
```
### 3. Seleccionar modelo
Elige entre los modelos disponibles de 9Router:
**Modelos Claude:**
- `cc/claude-opus-4-5-20251101` - El más capaz
- `cc/claude-sonnet-4-20250514` - Equilibrado
- `cc/claude-haiku-4-20250514` - Rápido
**Modelos DeepSeek:**
- `cx/deepseek-chat` - Propósito general
- `cx/deepseek-reasoner` - Razonamiento complejo
**Modelos GLM:**
- `glm/glm-4-plus` - Avanzado
- `glm/glm-4-flash` - Respuestas rápidas
### 4. Probar la conexión
Envía un mensaje de prueba para verificar la integración:
```
Hello! Can you confirm you're connected through 9Router?
```
## Ejemplos de uso
### Chat básico
```
Pregunta a Roo: "Explain quantum computing in simple terms"
Modelo: cc/claude-sonnet-4-20250514
```
### Generación de código
```
Pregunta a Roo: "Write a Python function to calculate Fibonacci numbers"
Modelo: cx/deepseek-chat
```
### Razonamiento complejo
```
Pregunta a Roo: "Analyze the trade-offs between microservices and monolithic architecture"
Modelo: cx/deepseek-reasoner
```
## Consejos de selección de modelo
- **Tareas rápidas**: Usa `cc/claude-haiku-4-20250514` o `glm/glm-4-flash`
- **Rendimiento equilibrado**: Usa `cc/claude-sonnet-4-20250514` o `cx/deepseek-chat`
- **Razonamiento complejo**: Usa `cc/claude-opus-4-5-20251101` o `cx/deepseek-reasoner`
- **Optimización de costos**: Usa modelos DeepSeek o GLM
## Solución de problemas
### Connection Failed
- Verifica que 9Router esté corriendo: `curl http://localhost:20128/health`
- Verifica que la API key sea correcta
- Asegúrate de que la Base URL incluya el sufijo `/v1`
### Modelo no disponible
- Verifica que el nombre del modelo coincida exactamente (sensible a mayúsculas)
- Verifica que el modelo esté habilitado en tu plan de 9Router
- Intenta otro modelo de la lista
### Respuestas lentas
- Cambia a modelos más rápidos (haiku, flash)
- Verifica la conexión de red
- Monitorea los logs de 9Router por problemas
## Configuración avanzada
### Aliases personalizados de modelos
Puedes crear atajos para modelos usados con frecuencia en la configuración de Roo:
```
Alias: "fast" → cc/claude-haiku-4-20250514
Alias: "smart" → cc/claude-opus-4-5-20251101
Alias: "code" → cx/deepseek-chat
```
### Múltiples perfiles
Configura diferentes perfiles para distintos casos de uso:
- **Desarrollo**: Modelos DeepSeek para código
- **Escritura**: Modelos Claude para contenido
- **Investigación**: Modelos reasoner para análisis
## Próximos pasos
- [Configurar Cursor](cursor.md) para integración con IDE
- [Configurar Continue](continue.md) para VSCode
- [Explorar uso de CLI](../cli/basic-usage.md)

View File

@@ -0,0 +1,462 @@
# Proveedores baratos - Respaldo ultra-barato
Cuando se agota la cuota de suscripción, paga centavos en lugar de dólares. ¡~90% más barato que ChatGPT API!
---
## Resumen
Los proveedores del nivel barato son tu **respaldo** cuando se agota la cuota de suscripción:
- 💰 **GLM-4.7** - $0.6/$2.2 por 1M tokens (reinicio diario)
- 💰 **MiniMax M2.1** - $0.2/$1.0 por 1M tokens (reinicio 5h)
- 💰 **Kimi K2** - $9/mes plano (10M tokens)
**Estrategia:** Úsalos después de agotar la cuota de suscripción, antes del nivel gratis. Ahorros masivos vs ChatGPT API ($20/1M).
---
## GLM-4.7 (Reinicio diario)
### Precios
| Nivel | Entrada | Salida | Reinicio |
|------|-------|--------|-------|
| Standard | $0.60/1M | $2.20/1M | Diario 10:00 AM |
| Coding Plan | $0.60/1M | $2.20/1M | Diario 10:00 AM (3× cuota) |
**Ejemplo de costo (10M tokens):**
- Entrada: 10M × $0.60 = $6
- Salida: 10M × $2.20 = $22
- **Total: $6-22** ¡vs $200 en ChatGPT API!
### Configuración
**Paso 1: Registrarse**
1. Visita [Zhipu AI](https://open.bigmodel.cn/)
2. Crea cuenta (verificación por teléfono)
3. Elige **Coding Plan** para 3× cuota al mismo precio
**Paso 2: Obtener API Key**
```bash
Dashboard → API Keys → Create New
→ Copia la API key (comienza con "zhipu-")
```
**Paso 3: Agregar a 9Router**
```bash
9router
# Dashboard → Providers → Add API Key
Provider: glm
API Key: zhipu-your-api-key-here
```
**Paso 4: Usar en CLI**
```
Model: glm/glm-4.7
glm/glm-4.6v (vision)
```
### Modelos disponibles
| ID del modelo | Descripción | Contexto | Ideal para |
|----------|-------------|---------|----------|
| `glm/glm-4.7` | GLM 4.7 | 128K | Codificación, tareas generales |
| `glm/glm-4.6v` | GLM 4.6V Vision | 128K | Análisis de imágenes |
### Pro Tips
- **Coding Plan** - 3× cuota al mismo precio ($0.6/$2.2)
- **Reinicio diario** - Cuota fresca a las 10:00 AM hora de Beijing
- **Ideal para codificación** - Optimizado para generación de código
- **128K de contexto** - Maneja archivos grandes
### Reinicio de cuota
```
Reinicio diario: 10:00 AM hora Beijing (UTC+8)
→ 2:00 AM UTC
→ 6:00 PM PST (día anterior)
→ 9:00 PM EST (día anterior)
¡Planifica tus tareas pesadas según el tiempo de reinicio!
```
---
## MiniMax M2.1 (Reinicio 5 horas)
### Precios
| Nivel | Entrada | Salida | Reinicio |
|------|-------|--------|-------|
| Standard | $0.20/1M | $1.00/1M | Rolling 5 horas |
**Ejemplo de costo (10M tokens):**
- Entrada: 10M × $0.20 = $2
- Salida: 10M × $1.00 = $10
- **Total: $2-10** - ¡La opción más barata!
### Configuración
**Paso 1: Registrarse**
1. Visita [MiniMax](https://www.minimax.io/)
2. Crea cuenta
3. Verifica email/teléfono
**Paso 2: Obtener API Key**
```bash
Dashboard → API Management → Create Key
→ Copia la API key
```
**Paso 3: Agregar a 9Router**
```bash
9router
# Dashboard → Providers → Add API Key
Provider: minimax
API Key: your-minimax-api-key
```
**Paso 4: Usar en CLI**
```
Model: minimax/MiniMax-M2.1
```
### Modelos disponibles
| ID del modelo | Descripción | Contexto | Ideal para |
|----------|-------------|---------|----------|
| `minimax/MiniMax-M2.1` | MiniMax M2.1 | 1M tokens | Contexto largo, codificación |
### Pro Tips
- **La opción más barata** - $0.20/1M entrada (90% más barato que ChatGPT)
- **Rolling 5 horas** - La cuota se reinicia cada 5 horas
- **Contexto de 1M** - Ventana de contexto masiva
- **Ideal para archivos largos** - Maneja codebases enteras
### Reinicio de cuota
```
Ventana rolling de 5 horas:
→ Usar cuota → Esperar 5 horas → Cuota fresca
Ejemplo:
10:00 AM - Usar 5M tokens
3:00 PM - Cuota fresca disponible
8:00 PM - Cuota fresca disponible
¡Codifica 24/7 con costo mínimo!
```
---
## Kimi K2 ($9/mes plano)
### Precios
| Plan | Costo mensual | Tokens incluidos | Costo efectivo |
|------|--------------|-----------------|----------------|
| Subscription | $9 | 10M tokens | $0.90/1M |
**Ejemplo de costo:**
- $9/mes plano
- 10M tokens incluidos
- **Efectivo: $0.90/1M** - ¡Mejor valor para uso constante!
### Configuración
**Paso 1: Suscribirse**
1. Visita [Moonshot AI](https://platform.moonshot.ai/)
2. Crea cuenta
3. Suscríbete al plan $9/mes
**Paso 2: Obtener API Key**
```bash
Dashboard → API Keys → Create New
→ Copia la API key
```
**Paso 3: Agregar a 9Router**
```bash
9router
# Dashboard → Providers → Add API Key
Provider: kimi
API Key: your-kimi-api-key
```
**Paso 4: Usar en CLI**
```
Model: kimi/kimi-latest
```
### Modelos disponibles
| ID del modelo | Descripción | Contexto | Ideal para |
|----------|-------------|---------|----------|
| `kimi/kimi-latest` | Kimi Latest | 200K | Codificación general |
### Pro Tips
- **Costo fijo** - $9/mes sin importar el uso (hasta 10M)
- **Ideal para uso constante** - Si usas 10M/mes, solo $0.90/1M
- **Reinicio mensual** - 10M tokens se reinician mensualmente
- **Facturación predecible** - Sin costos sorpresa
### Reinicio de cuota
```
Reinicio mensual: 1ro de cada mes
→ 10M tokens se refrescan
Ejemplo de uso mensual:
Semana 1: 3M tokens
Semana 2: 2M tokens
Semana 3: 3M tokens
Semana 4: 2M tokens
Total: 10M tokens = $9 plano
```
---
## Comparación de precios
| Proveedor | Entrada/1M | Salida/1M | Reinicio | Costo 10M | Ideal para |
|----------|----------|-----------|-------|----------|----------|
| **GLM-4.7** | $0.60 | $2.20 | Diario 10AM | $6-22 | Usuarios con cuota diaria |
| **MiniMax M2.1** | $0.20 | $1.00 | 5 horas | $2-10 | **¡La más barata!** |
| **Kimi K2** | $0.90 | $0.90 | Mensual | **$9 plano** | Uso constante |
| ChatGPT API | $20.00 | $20.00 | Ninguno | $200 | ❌ Costoso |
**Ahorros:** ¡90-95% más barato que ChatGPT API!
---
## Ejemplo de uso
### Configuración en Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [desde el dashboard de 9router]
Model: glm/glm-4.7
```
### Crear combo (Recomendado)
```
Dashboard → Combos → Create New
Name: cheap-backup
Models:
1. cc/claude-opus-4-5 (Suscripción principal)
2. glm/glm-4.7 (Respaldo barato, reinicio diario)
3. minimax/MiniMax-M2.1 (Fallback más barato)
4. if/kimi-k2-thinking (Emergencia GRATIS)
Usar en CLI: cheap-backup
```
**Resultado:** Suscripción → Barato → Más barato → Gratis
---
## Optimización de costos
### Estrategia 1: Rutina de reinicio diario
```
Mañana (10AM): Cuota fresca de GLM
→ Usa GLM para tareas pesadas
→ Ahorra cuota de suscripción
Tarde: Cuota de suscripción
→ Usa Claude/Codex para tareas complejas
Noche: MiniMax (reinicio 5h)
→ Respaldo barato para trabajo nocturno
Madrugada: Nivel gratis (iFlow)
→ Respaldo de emergencia cero costo
```
### Estrategia 2: Presupuesto primero
```
Establece presupuesto mensual: $20
Asignación:
- $9 Kimi K2 (10M tokens plano)
- $6 cuota diaria de GLM (10M tokens)
- $5 overflow de MiniMax (25M tokens)
Total: 45M tokens por $20
¡vs 1M tokens por $20 en ChatGPT API!
```
### Estrategia 3: Maximiza suscripciones primero
```
Prioridad:
1. Gemini CLI (180K/mes GRATIS)
2. Claude Code (suscripción que ya pagas)
3. GLM-4.7 (respaldo barato, $0.6/1M)
4. MiniMax M2.1 (más barato, $0.2/1M)
5. iFlow (emergencia GRATIS)
Ejemplo de costo mensual (100M tokens):
- 60M vía Gemini CLI: $0 (gratis)
- 30M vía Claude Code: $0 (suscripción)
- 8M vía GLM: $4.80
- 2M vía MiniMax: $0.40
¡Total: $5.20/mes!
```
---
## Ejemplos reales
### Ejemplo 1: Mes de codificación intensa (100M tokens)
```
Desglose:
- 60M vía suscripción (Claude/Codex): $0 extra
- 30M vía GLM-4.7: $18
- 10M vía MiniMax M2.1: $2
Total: $20/mes
¡vs $2000 en ChatGPT API!
Ahorros: ¡99% más barato!
```
### Ejemplo 2: Codificador con presupuesto ($10/mes)
```
Estrategia:
- $9 Kimi K2 (10M tokens)
- $1 overflow de MiniMax (5M tokens)
Total: 15M tokens por $10
¡vs 0.5M tokens por $10 en ChatGPT API!
¡30× más tokens!
```
### Ejemplo 3: Freelancer (Uso variable)
```
Mes ligero (20M tokens):
- 15M vía suscripción: $0
- 5M vía GLM: $3
Total: $3
Mes intenso (150M tokens):
- 60M vía suscripción: $0
- 60M vía GLM: $36
- 30M vía MiniMax: $6
Total: $42
Promedio: $22.50/mes
¡vs $3400 en ChatGPT API!
```
---
## Mejores prácticas
### 1. Rastrea la cuota diaria
```
El dashboard muestra:
- Cuota GLM: 75% usado (reinicio en 6h)
- Cuota MiniMax: 50% usado (reinicio en 2h)
- Cuota Kimi: 8M/10M usado (reinicio en 15 días)
¡Planifica tareas pesadas según los tiempos de reinicio!
```
### 2. Usa el Coding Plan (GLM)
```
Standard: 1× cuota
Coding Plan: 3× cuota (¡mismo precio!)
→ Siempre elige Coding Plan
```
### 3. Combina con el nivel gratis
```
Combo:
1. gc/gemini-3-flash (GRATIS principal)
2. glm/glm-4.7 (respaldo barato)
3. minimax/MiniMax-M2.1 (más barato)
4. if/kimi-k2-thinking (emergencia GRATIS)
Resultado: Minimiza costos, maximiza uptime
```
### 4. Establece alertas de presupuesto
```
Dashboard → Settings → Budget Alerts
Diario: $2 límite
Semanal: $10 límite
Mensual: $30 límite
→ Cambio automático al nivel gratis cuando se alcanza el límite
```
---
## Solución de problemas
### "Cuota agotada"
**Solución:**
- GLM: Espera hasta las 10:00 AM hora Beijing
- MiniMax: Espera 5 horas desde el primer uso
- Kimi: Espera hasta el 1ro del próximo mes
- Usa fallback de combo al nivel gratis
### "API key inválida"
**Solución:**
- Verifica que la API key esté copiada correctamente
- Verifica que la cuenta tenga créditos
- Regenera la API key si es necesario
### "Costos altos"
**Solución:**
- Revisa las estadísticas de uso en el dashboard
- Establece alertas de presupuesto
- Cambia a MiniMax ($0.2/1M, la más barata)
- Usa el nivel gratis para tareas no críticas
---
## Próximos pasos
- **Agregar fallback gratis:** [Proveedores gratis](./free.md)
- **Configurar suscripciones:** [Proveedores de suscripción](./subscription.md)
- **Crear combos:** Dashboard → Combos → Create New

View File

@@ -0,0 +1,442 @@
# Proveedores gratis - Fallback de cero costo
Respaldo de emergencia cuando todo lo demás está limitado por cuota. ¡Codifica 24/7 con cero costo!
---
## Resumen
Los proveedores del nivel gratis son tu **fallback** cuando se agota la cuota de suscripción y la del nivel barato:
- 🆓 **iFlow** - 8 modelos GRATIS (Kimi K2, Qwen3, GLM 4.7, MiniMax M2...)
- 🆓 **Qwen** - 3 modelos GRATIS (Qwen3 Coder Plus/Flash, Vision)
- 🆓 **Kiro** - 2 modelos GRATIS (Claude Sonnet 4.5, Haiku 4.5)
**Estrategia:** Úsalos como respaldo de emergencia. ¡Uso ilimitado, cero costo para siempre!
---
## iFlow (8 modelos GRATIS)
### Precios
| Plan | Costo mensual | Modelos | Cuota |
|------|--------------|--------|-------|
| FREE | $0 | 8 modelos | Ilimitado |
**Mejor valor:** ¡La mayoría de modelos en el nivel gratis! Kimi K2, Qwen3, GLM, MiniMax, DeepSeek.
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect iFlow
```
**Paso 2: Login OAuth de iFlow**
- Clic en "Connect iFlow"
- El navegador abre → página de login de iFlow
- Crea cuenta o inicia sesión
- Otorga permisos
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: if/kimi-k2-thinking
if/kimi-k2
if/qwen3-coder-plus
if/glm-4.7
if/minimax-m2
if/deepseek-r1
if/deepseek-v3.2-chat
if/deepseek-v3.2-reasoner
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `if/kimi-k2-thinking` | Kimi K2 Thinking | Razonamiento complejo |
| `if/kimi-k2` | Kimi K2 | Codificación general |
| `if/qwen3-coder-plus` | Qwen3 Coder Plus | Generación de código |
| `if/glm-4.7` | GLM 4.7 | Chino + inglés |
| `if/minimax-m2` | MiniMax M2 | Contexto largo |
| `if/deepseek-r1` | DeepSeek R1 | Tareas de razonamiento |
| `if/deepseek-v3.2-chat` | DeepSeek V3.2 Chat | Conversacional |
| `if/deepseek-v3.2-reasoner` | DeepSeek V3.2 Reasoner | Lógica compleja |
### Pro Tips
- **8 modelos GRATIS** - La mayor variedad en el nivel gratis
- **Uso ilimitado** - Sin límites de cuota
- **Kimi K2 Thinking** - Ideal para razonamiento complejo
- **DeepSeek R1** - Fuertes capacidades de razonamiento
---
## Qwen (3 modelos GRATIS)
### Precios
| Plan | Costo mensual | Modelos | Cuota |
|------|--------------|--------|-------|
| FREE | $0 | 3 modelos | Ilimitado |
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect Qwen
```
**Paso 2: Autorización por código de dispositivo**
- Clic en "Connect Qwen"
- El dashboard muestra el código de dispositivo
- Visita la URL de autorización
- Ingresa el código de dispositivo
- Inicia sesión en la cuenta de Qwen
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: qw/qwen3-coder-plus
qw/qwen3-coder-flash
qw/vision-model
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `qw/qwen3-coder-plus` | Qwen3 Coder Plus | Codificación avanzada |
| `qw/qwen3-coder-flash` | Qwen3 Coder Flash | Respuestas rápidas |
| `qw/vision-model` | Qwen3 Vision | Análisis de imágenes |
### Pro Tips
- **Qwen3 Coder Plus** - Fuertes capacidades de codificación
- **Qwen3 Coder Flash** - Rápido para tareas rápidas
- **Modelo de visión** - Análisis de imágenes GRATIS
- **Uso ilimitado** - Sin límites de cuota
---
## Kiro (Claude GRATIS)
### Precios
| Plan | Costo mensual | Modelos | Cuota |
|------|--------------|--------|-------|
| FREE | $0 | Claude Sonnet 4.5, Haiku 4.5 | Ilimitado |
**Mejor valor:** ¡Claude GRATIS! Misma calidad que Claude Code de pago.
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect Kiro
```
**Paso 2: AWS Builder ID u OAuth**
- Clic en "Connect Kiro"
- Elige método de login:
- AWS Builder ID (recomendado)
- Cuenta Google
- Cuenta GitHub
- Otorga permisos
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: kr/claude-sonnet-4.5
kr/claude-haiku-4.5
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `kr/claude-sonnet-4.5` | Claude Sonnet 4.5 | Calidad/velocidad equilibrada |
| `kr/claude-haiku-4.5` | Claude Haiku 4.5 | Respuestas rápidas |
### Pro Tips
- **Claude GRATIS** - Misma calidad que el nivel de pago
- **AWS Builder ID** - Configuración fácil con cuenta AWS
- **Uso ilimitado** - Sin límites de cuota
- **Mejor calidad** - ¡Claude 4.5 gratis!
---
## Comparación de características
| Proveedor | Modelos | Mejor modelo | Configuración | Cuota |
|----------|--------|------------|-------|-------|
| **iFlow** | 8 | Kimi K2 Thinking | OAuth | Ilimitado |
| **Qwen** | 3 | Qwen3 Coder Plus | Device Code | Ilimitado |
| **Kiro** | 2 | Claude Sonnet 4.5 | AWS Builder ID | Ilimitado |
**Ganador:** ¡iFlow por variedad, Kiro por calidad!
---
## Ejemplo de uso
### Configuración en Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [desde el dashboard de 9router]
Model: if/kimi-k2-thinking
```
### Crear combo (Recomendado)
```
Dashboard → Combos → Create New
Name: free-combo
Models:
1. if/kimi-k2-thinking (iFlow principal)
2. qw/qwen3-coder-plus (Qwen respaldo)
3. kr/claude-sonnet-4.5 (Kiro calidad)
Usar en CLI: free-combo
```
**Resultado:** ¡Cero costo, máximo uptime!
---
## Estrategia de fallback completa
### Combo completo de 3 niveles
```
Dashboard → Combos → Create New
Name: complete-fallback
Models:
1. gc/gemini-3-flash-preview (Suscripción GRATIS)
2. cc/claude-opus-4-5 (Suscripción de pago)
3. glm/glm-4.7 (Respaldo barato, $0.6/1M)
4. minimax/MiniMax-M2.1 (Más barato, $0.2/1M)
5. if/kimi-k2-thinking (Fallback GRATIS)
6. kr/claude-sonnet-4.5 (Calidad GRATIS)
Usar en CLI: complete-fallback
```
**Resultado:**
- Nivel 1: Suscripción GRATIS (Gemini CLI)
- Nivel 2: Suscripción de pago (Claude Code)
- Nivel 3: Respaldo barato (GLM, MiniMax)
- Nivel 4: Fallback GRATIS (iFlow, Kiro)
**¡Nunca dejes de codificar!**
---
## Mejores prácticas
### 1. Úsalos como respaldo de emergencia
```
Prioridad:
1. Nivel de suscripción (maximiza cuota de pago)
2. Nivel barato (centavos por 1M tokens)
3. Nivel GRATIS (ilimitado, cero costo)
Usa el nivel gratis solo cuando:
- Cuota de suscripción agotada
- Límite de presupuesto alcanzado
- Pruebas/tareas no críticas
```
### 2. Elige el modelo correcto
```
Razonamiento complejo: if/kimi-k2-thinking
Codificación rápida: qw/qwen3-coder-flash
Mejor calidad: kr/claude-sonnet-4.5
Contexto largo: if/minimax-m2
Tareas de visión: qw/vision-model
```
### 3. Crea un combo solo-gratis
```
Para codificación de cero costo:
Name: zero-cost
Models:
1. kr/claude-sonnet-4.5 (Mejor calidad)
2. if/kimi-k2-thinking (Tareas complejas)
3. qw/qwen3-coder-plus (Codificación rápida)
¡Costo: $0 para siempre!
```
### 4. Prueba antes de producción
```
Usa el nivel gratis para:
- Probar prompts
- Prototipar características
- Aprender nuevos frameworks
- Tareas no críticas
Guarda la cuota de pago para:
- Código de producción
- Refactoring complejo
- Características críticas
```
---
## Ejemplos reales
### Ejemplo 1: Estudiante/Aprendiz (Cero presupuesto)
```
Configuración:
1. kr/claude-sonnet-4.5 (Mejor calidad)
2. if/kimi-k2-thinking (Razonamiento complejo)
3. qw/qwen3-coder-plus (Codificación rápida)
Costo mensual: $0
Uso: Ilimitado
Perfecto para:
- Aprender a programar
- Proyectos personales
- Tareas/asignaciones
```
### Ejemplo 2: Freelancer (Consciente del presupuesto)
```
Configuración:
1. gc/gemini-3-flash-preview (GRATIS 180K/mes)
2. glm/glm-4.7 (Respaldo barato, $0.6/1M)
3. if/kimi-k2-thinking (Fallback GRATIS)
Costo mensual: $5-10
Uso: 100M+ tokens
Perfecto para:
- Proyectos de cliente (nivel de pago)
- Pruebas (nivel gratis)
- Respaldo de emergencia
```
### Ejemplo 3: Usuario intensivo (Maximiza todo)
```
Configuración:
1. gc/gemini-3-flash-preview (GRATIS 180K/mes)
2. cc/claude-opus-4-5 (Suscripción $20-100)
3. cx/gpt-5.2-codex (Suscripción $20-200)
4. glm/glm-4.7 (Barato $0.6/1M)
5. minimax/MiniMax-M2.1 (Más barato $0.2/1M)
6. if/kimi-k2-thinking (GRATIS ilimitado)
7. kr/claude-sonnet-4.5 (Calidad GRATIS)
Costo mensual: $40-320 (suscripciones) + $10-20 (nivel barato)
Uso: 500M+ tokens
Perfecto para:
- Desarrollo profesional
- Proyectos de equipo
- Codificación 24/7
```
---
## Comparación de costos
### Escenario: 100M tokens/mes
**Opción 1: Solo ChatGPT API**
```
100M × $20/1M = $2,000/mes
```
**Opción 2: Solo nivel gratis de 9Router**
```
100M vía nivel gratis = $0/mes
Ahorros: $2,000/mes (100%)
```
**Opción 3: Estrategia completa de 9Router**
```
60M vía Gemini CLI (GRATIS): $0
30M vía Claude Code (suscripción): $0 extra
8M vía GLM (barato): $4.80
2M vía iFlow (GRATIS): $0
Total: $4.80/mes + suscripciones que ya tienes
Ahorros: $1,995/mes (99.76%)
```
---
## Solución de problemas
### "OAuth failed"
**Solución:**
- Verifica la conexión a internet
- Prueba otro navegador
- Limpia la caché del navegador
- Reconecta en el dashboard
### "Modelo no disponible"
**Solución:**
- Verifica que el proveedor esté conectado en el dashboard
- Verifica que el token OAuth sea válido
- Reconecta el proveedor si es necesario
### "Respuestas lentas"
**Solución:**
- El nivel gratis puede tener menor prioridad
- Úsalo durante horas off-peak
- Cambia a otro proveedor gratis
- Mejora al nivel barato para velocidad
---
## Limitaciones
### Consideraciones del nivel gratis
- **Velocidad** - Puede ser más lento que los niveles de pago
- **Prioridad** - Menor prioridad en horas pico
- **Rate limits** - Posible rate-limiting (pero cuota ilimitada)
- **Disponibilidad** - Puede tener tiempo de inactividad ocasional
**Solución:** ¡Usa la estrategia de fallback de 3 niveles para confiabilidad!
---
## Próximos pasos
- **Configurar suscripciones:** [Proveedores de suscripción](./subscription.md)
- **Agregar respaldo barato:** [Proveedores baratos](./cheap.md)
- **Crear combos:** Dashboard → Combos → Create New
- **Empezar a codificar:** Usa el combo `complete-fallback` para máxima confiabilidad

View File

@@ -0,0 +1,404 @@
# Proveedores de suscripción - Maximiza tu valor
Maximiza tus suscripciones de IA existentes con seguimiento inteligente de cuota y fallback automático. ¡Usa cada bit de tu suscripción antes de que se reinicie!
---
## Resumen
Los proveedores del nivel de suscripción son tu opción **principal** - ya estás pagando por ellos, así que obtén el valor completo:
- ✅ **Claude Code** (Pro/Max) - Claude 4.5 Opus/Sonnet/Haiku
- ✅ **OpenAI Codex** (Plus/Pro) - GPT 5.2 Codex, GPT 5.1 Codex Max
- ✅ **Gemini CLI** (¡Nivel GRATIS!) - 180K completados/mes
- ✅ **GitHub Copilot** - GPT-5, Claude 4.5, Gemini 3
- ✅ **Antigravity** (Google) - Gemini 3 Pro, Claude Sonnet 4.5
**Estrategia:** Úsalos primero, rastrea la cuota en tiempo real, fallback al barato/gratis cuando se agote.
---
## Claude Code (Pro/Max)
### Precios
| Plan | Costo mensual | Reinicio de cuota | Modelos |
|------|--------------|-------------|--------|
| Pro | $20 | 5 horas + semanal | Opus, Sonnet, Haiku |
| Max | $100 | 5 horas + semanal | Opus, Sonnet, Haiku |
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Se abre el dashboard → Providers → Connect Claude Code
```
**Paso 2: Login OAuth**
- Clic en "Connect Claude Code"
- El navegador abre → Inicia sesión en Claude.ai
- Auto-refresh de token habilitado
- Comienza el seguimiento de cuota
**Paso 3: Usar en CLI**
```
Model: cc/claude-opus-4-5-20251101
cc/claude-sonnet-4-5-20250929
cc/claude-haiku-4-5-20251001
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `cc/claude-opus-4-5-20251101` | Claude 4.5 Opus | Tareas complejas, arquitectura |
| `cc/claude-sonnet-4-5-20250929` | Claude 4.5 Sonnet | Velocidad/calidad equilibrada |
| `cc/claude-haiku-4-5-20251001` | Claude 4.5 Haiku | Respuestas rápidas |
### Pro Tips
- **Usa Opus para tareas complejas** - Decisiones de arquitectura, refactoring
- **Usa Sonnet por velocidad** - Ediciones rápidas, generación de código
- **Rastrea cuota por modelo** - El dashboard muestra uso por modelo
- **Reinicio de 5 horas** - Cuota fresca cada 5 horas + reinicio semanal
---
## OpenAI Codex (Plus/Pro)
### Precios
| Plan | Costo mensual | Reinicio de cuota | Modelos |
|------|--------------|-------------|--------|
| Plus | $20 | 5 horas + semanal | GPT 5.2, GPT 5.1 |
| Pro | $200 | 5 horas + semanal | GPT 5.2 Codex, GPT 5.1 Max |
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect Codex
```
**Paso 2: Login OAuth**
- Clic en "Connect Codex"
- El navegador abre `http://localhost:1455`
- Inicia sesión en la cuenta de OpenAI
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: cx/gpt-5.2-codex
cx/gpt-5.1-codex-max
cx/gpt-5.2
cx/gpt-5.1-codex
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `cx/gpt-5.2-codex` | GPT 5.2 Codex | Último modelo de codificación |
| `cx/gpt-5.1-codex-max` | GPT 5.1 Codex Max | Contexto máximo |
| `cx/gpt-5.2` | GPT 5.2 | Tareas generales |
| `cx/gpt-5.1-codex` | GPT 5.1 Codex | Codificación estable |
### Pro Tips
- **Cuota rolling de 5 horas** - Cuota fresca cada 5 horas
- **Reinicio semanal** - Reinicio completo de cuota cada semana
- **Nivel Pro** - 10× más cuota que Plus
---
## Gemini CLI (¡GRATIS 180K/mes!)
### Precios
| Plan | Costo mensual | Cuota | Reinicio |
|------|--------------|-------|-------|
| FREE | $0 | 180K completados/mes + 1K/día | Diario + Mensual |
**Mejor valor:** ¡Nivel gratis enorme! Úsalo antes de los niveles de pago.
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect Gemini CLI
```
**Paso 2: OAuth de Google**
- Clic en "Connect Gemini CLI"
- El navegador abre → Inicia sesión en cuenta Google
- Otorga permisos
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: gc/gemini-3-flash-preview
gc/gemini-3-pro-preview
gc/gemini-2.5-pro
gc/gemini-2.5-flash
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `gc/gemini-3-flash-preview` | Gemini 3 Flash Preview | Respuestas rápidas |
| `gc/gemini-3-pro-preview` | Gemini 3 Pro Preview | Tareas complejas |
| `gc/gemini-2.5-pro` | Gemini 2.5 Pro | Producción estable |
| `gc/gemini-2.5-flash` | Gemini 2.5 Flash | Tareas rápidas |
### Pro Tips
- **180K completados/mes** - Nivel gratis masivo
- **Límite de 1K/día** - La cuota diaria se reinicia a medianoche
- **Úsalo primero** - Nivel gratis, úsalo antes de las suscripciones de pago
- **Sin tarjeta de crédito** - Completamente gratis con cuenta Google
---
## GitHub Copilot
### Precios
| Plan | Costo mensual | Reinicio de cuota | Modelos |
|------|--------------|-------------|--------|
| Individual | $10 | Mensual (día 1) | GPT-5, Claude 4.5, Gemini 3 |
| Business | $19 | Mensual (día 1) | GPT-5, Claude 4.5, Gemini 3 |
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect GitHub
```
**Paso 2: OAuth vía GitHub**
- Clic en "Connect GitHub"
- El navegador abre → Inicia sesión en GitHub
- Autoriza GitHub Copilot
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: gh/gpt-5
gh/gpt-5.1-codex-max
gh/claude-4.5-sonnet
gh/gemini-3-pro
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `gh/gpt-5` | GPT-5 | Último modelo de OpenAI |
| `gh/gpt-5.1-codex-max` | GPT-5.1 Codex Max | Contexto máximo |
| `gh/claude-4.5-sonnet` | Claude 4.5 Sonnet | Calidad de Anthropic |
| `gh/gemini-3-pro` | Gemini 3 Pro | Calidad de Google |
### Pro Tips
- **Reinicio mensual** - Reinicio completo de cuota el 1ro del mes
- **Múltiples modelos** - Accede a GPT, Claude, Gemini en una suscripción
- **Nivel Business** - Mayor cuota para equipos
---
## Antigravity (Cuenta Google)
### Precios
| Plan | Costo mensual | Cuota | Modelos |
|------|--------------|-------|--------|
| FREE | $0 | Similar a Gemini CLI | Gemini 3 Pro, Claude Sonnet 4.5 |
### Configuración
**Paso 1: Conectar vía Dashboard**
```bash
9router
# Dashboard → Providers → Connect Antigravity
```
**Paso 2: OAuth de Google**
- Clic en "Connect Antigravity"
- El navegador abre → Inicia sesión en cuenta Google
- Otorga permisos
- Auto-refresh de token habilitado
**Paso 3: Usar en CLI**
```
Model: ag/gemini-3-pro-high
ag/claude-sonnet-4-5
ag/claude-opus-4-5-thinking
```
### Modelos disponibles
| ID del modelo | Descripción | Ideal para |
|----------|-------------|----------|
| `ag/gemini-3-pro-high` | Gemini 3 Pro High | Respuestas de alta calidad |
| `ag/claude-sonnet-4-5` | Claude Sonnet 4.5 | Calidad de Anthropic |
| `ag/claude-opus-4-5-thinking` | Claude Opus 4.5 Thinking | Razonamiento complejo |
### Pro Tips
- **Nivel gratis** - Sin costo con cuenta Google
- **Acceso a Claude** - Claude Sonnet/Opus gratis
- **Cuota similar a Gemini CLI** - Límites diarios/mensuales
---
## Comparación de precios
| Proveedor | Costo mensual | Reinicio de cuota | Valor |
|----------|--------------|-------------|-------|
| **Claude Code Pro** | $20 | 5 horas + semanal | ⭐⭐⭐⭐⭐ Mejor calidad |
| **Claude Code Max** | $100 | 5 horas + semanal | ⭐⭐⭐⭐⭐ Mayor cuota |
| **Codex Plus** | $20 | 5 horas + semanal | ⭐⭐⭐⭐ Buen valor |
| **Codex Pro** | $200 | 5 horas + semanal | ⭐⭐⭐⭐⭐ 10× cuota |
| **Gemini CLI** | **$0** | Diario + Mensual | ⭐⭐⭐⭐⭐ ¡GRATIS 180K/mes! |
| **GitHub Copilot** | $10-19 | Mensual (día 1) | ⭐⭐⭐⭐ Multi-modelo |
| **Antigravity** | **$0** | Diario + Mensual | ⭐⭐⭐⭐ ¡Claude GRATIS! |
---
## Ejemplo de uso
### Configuración en Cursor IDE
```
Settings → Models → Advanced:
OpenAI API Base URL: http://localhost:20128/v1
OpenAI API Key: [desde el dashboard de 9router]
Model: cc/claude-opus-4-5-20251101
```
### Crear combo (Recomendado)
```
Dashboard → Combos → Create New
Name: premium-coding
Models:
1. gc/gemini-3-flash-preview (GRATIS, usar primero)
2. cc/claude-opus-4-5-20251101 (Suscripción)
3. cx/gpt-5.2-codex (Respaldo de suscripción)
Usar en CLI: premium-coding
```
**Resultado:** Maximiza el nivel gratis → Usa suscripción → Fallback automático
---
## Seguimiento de cuota
9Router rastrea la cuota en tiempo real:
- **Consumo de tokens** - Tokens de entrada/salida por solicitud
- **Cuenta regresiva de reinicio** - Tiempo hasta el próximo reinicio de cuota
- **Porcentaje de uso** - Cuánta cuota se ha usado
- **Fallback automático** - Cambia al siguiente nivel cuando se agota
**Vista del dashboard:**
```
Claude Code Pro
├─ Cuota: 75% usada
├─ Reinicio: 2h 15m (5 horas)
├─ Reinicio semanal: 3 días
└─ Fallback: glm/glm-4.7 (nivel barato)
```
---
## Mejores prácticas
### 1. Usa el nivel gratis primero
```
Prioridad:
1. Gemini CLI (180K/mes GRATIS)
2. Antigravity (Claude GRATIS)
3. Claude Code/Codex (suscripciones de pago)
```
### 2. Rastrea la cuota diariamente
- Revisa el dashboard cada mañana
- Planifica tareas pesadas según reinicios de cuota
- Usa el nivel barato/gratis para tareas no críticas
### 3. Crea combos inteligentes
```
Ejemplo de combo:
1. gc/gemini-3-flash-preview (GRATIS principal)
2. cc/claude-opus-4-5 (Tareas complejas)
3. glm/glm-4.7 (Respaldo barato)
4. if/kimi-k2-thinking (Fallback GRATIS)
```
### 4. Optimiza por tiempo
```
Mañana: Cuota fresca de 5 horas (Claude/Codex)
Tarde: Gemini CLI (1K/día)
Noche: Cuota de suscripción
Madrugada: Nivel barato/gratis
```
---
## Solución de problemas
### "Cuota agotada"
**Solución:**
- Verifica el rastreador de cuota del dashboard
- Espera el reinicio (5 horas o diario)
- Usa fallback de combo al nivel barato/gratis
### "Token OAuth expirado"
**Solución:**
- Auto-refresh por 9Router
- Si hay problemas: Dashboard → Provider → Reconnect
### "Rate limiting"
**Solución:**
- Cuota de suscripción agotada
- Agrega fallback: `cc/claude-opus → glm/glm-4.7`
- Usa el nivel gratis: `if/kimi-k2-thinking`
---
## Próximos pasos
- **Configurar respaldo barato:** [Proveedores baratos](./cheap.md)
- **Agregar fallback gratis:** [Proveedores gratis](./free.md)
- **Crear combos:** Dashboard → Combos → Create New

View File

@@ -0,0 +1,351 @@
# Solución de problemas
Problemas comunes y soluciones al usar 9Router.
---
## "Language model did not provide messages"
**Problema:** La solicitud falla con una respuesta vacía o un mensaje de error.
**Causas:**
- Cuota del proveedor agotada
- API key inválida o expirada
- Modelo no disponible
**Soluciones:**
1. **Verifica el estado de la cuota:**
```
Dashboard → Providers → Ver el rastreador de cuota
```
Si la cuota está agotada, espera el reinicio o cambia de proveedor.
2. **Usa el fallback con combo:**
```
Dashboard → Combos → Crea cadena de fallback
Ejemplo: cc/claude-opus → glm/glm-4.7 → if/kimi-k2
```
3. **Verifica la conexión del proveedor:**
```
Dashboard → Providers → Reconecta si es necesario
```
---
## Rate Limiting
**Problema:** Errores "Rate limit exceeded" o "Too many requests".
**Causas:**
- Cuota de suscripción agotada (límites de 5 horas/diario/semanal)
- Límites de tasa de API alcanzados
- Demasiadas solicitudes concurrentes
**Soluciones:**
1. **Verifica el tiempo de reinicio:**
```
Dashboard → Quota Tracking → Ver cuenta regresiva
```
2. **Cambia al nivel barato:**
```
Usa: glm/glm-4.7 ($0.6/1M tokens)
minimax/MiniMax-M2.1 ($0.20/1M tokens)
```
3. **Agrega un combo de fallback:**
```
Dashboard → Combos → Agrega modelos de respaldo
Principal: cc/claude-opus (suscripción)
Respaldo: glm/glm-4.7 (barato)
Emergencia: if/kimi-k2 (gratis)
```
---
## Token OAuth expirado
**Problema:** Errores "Unauthorized" o "Token expired".
**Causas:**
- Token OAuth expirado (refresh automático falló)
- Sesión del proveedor invalidada
- Problemas de red durante el refresh
**Soluciones:**
1. **Refresh automático (por defecto):**
9Router refresca automáticamente los tokens. Espera 30 segundos y reintenta.
2. **Reconexión manual:**
```
Dashboard → Providers → [Nombre del proveedor] → Reconnect
→ Completa el flujo OAuth de nuevo
```
3. **Verifica el estado del proveedor:**
Verifica que el servicio del proveedor esté en línea (Claude Code, Codex, etc.)
---
## Costos altos
**Problema:** Uso o costos altos inesperados.
**Causas:**
- Uso de modelos costosos innecesariamente
- Sin fallback a niveles más baratos
- Ventanas de contexto grandes
**Soluciones:**
1. **Verifica las estadísticas de uso:**
```
Dashboard → Usage Stats → Ver consumo de tokens
→ Identifica modelos de alto costo
```
2. **Cambia a modelos más baratos:**
```
Reemplaza: cc/claude-opus (suscripción $20-100/mes)
Con: glm/glm-4.7 ($0.6/1M tokens)
minimax/MiniMax-M2.1 ($0.20/1M tokens)
```
3. **Usa el nivel gratis:**
```
if/kimi-k2-thinking (GRATIS)
qw/qwen3-coder-plus (GRATIS)
kr/claude-sonnet-4.5 (GRATIS)
gc/gemini-3-flash-preview (GRATIS 180K/mes)
```
4. **Optimiza los prompts:**
- Reduce el tamaño del contexto
- Usa streaming para respuestas largas
- Cachea prompts comunes
---
## Connection Refused
**Problema:** "ECONNREFUSED" o "Cannot connect to localhost:20128".
**Causas:**
- 9Router no está ejecutándose
- Puerto 20128 bloqueado
- Firewall bloqueando la conexión
**Soluciones:**
1. **Inicia 9Router:**
```bash
9router
```
El dashboard debe abrir en http://localhost:3000
2. **Verifica el puerto 20128:**
```bash
# Verifica si el puerto está escuchando
lsof -i :20128
# O en Windows
netstat -ano | findstr :20128
```
3. **Revisa el firewall:**
- macOS: System Settings → Network → Firewall
- Windows: Windows Defender Firewall → Allow app
- Linux: `sudo ufw allow 20128`
4. **Usa el endpoint en la nube:**
Si localhost no funciona (ej. Cursor IDE):
```
Endpoint: https://9router.com/v1
```
---
## El dashboard no abre
**Problema:** El dashboard no carga en http://localhost:3000.
**Causas:**
- Puerto 3000 ya en uso
- 9Router crasheó
- Problemas de caché del navegador
**Soluciones:**
1. **Verifica si 9Router está ejecutándose:**
```bash
# Verifica el proceso
ps aux | grep 9router
# Verifica el puerto 3000
lsof -i :3000
```
2. **Mata el proceso en conflicto:**
```bash
# macOS/Linux
lsof -ti:3000 | xargs kill -9
# Windows
netstat -ano | findstr :3000
taskkill /PID <PID> /F
```
3. **Reinicia 9Router:**
```bash
# Detener
pkill -f 9router
# Iniciar
9router
```
4. **Limpia la caché del navegador:**
- Chrome: Ctrl+Shift+Delete → Limpiar caché
- Prueba en modo incógnito
5. **Verifica la configuración del firewall:**
Asegúrate de que el puerto 3000 no esté bloqueado.
---
## Modelo no encontrado
**Problema:** Errores "Model not found" o "Invalid model".
**Causas:**
- Proveedor no conectado
- Error tipográfico en el ID del modelo
- Proveedor inactivo
**Soluciones:**
1. **Verifica la conexión del proveedor:**
```
Dashboard → Providers → Verifica estado (verde = activo)
```
2. **Revisa el formato del ID del modelo:**
```
Correcto: cc/claude-opus-4-5-20251101
Incorrecto: claude-opus-4-5-20251101
Formato: [prefijo-proveedor]/[nombre-modelo]
```
3. **Lista los modelos disponibles:**
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer your-api-key"
```
4. **Reconecta el proveedor:**
```
Dashboard → Providers → [Proveedor] → Reconnect
```
---
## Respuesta lenta
**Problema:** Las solicitudes tardan demasiado o hacen timeout.
**Causas:**
- Latencia del proveedor
- Problemas de red
- Contexto/respuesta grande
- Rate limiting del proveedor
**Soluciones:**
1. **Verifica el estado del proveedor:**
```
Dashboard → Providers → Ver estadísticas de latencia
```
2. **Cambia a un modelo más rápido:**
```
Rápidos: cc/claude-haiku-4-5 (Haiku es más rápido que Opus)
gc/gemini-3-flash-preview
qw/qwen3-coder-flash
```
3. **Usa streaming:**
```json
{
"model": "cc/claude-opus-4-5",
"messages": [...],
"stream": true
}
```
4. **Verifica la red:**
```bash
# Prueba la latencia
ping api.anthropic.com
ping api.openai.com
```
5. **Reduce el tamaño del contexto:**
- Recorta el historial de mensajes
- Usa prompts más pequeños
- Habilita el pruning de contexto en la herramienta CLI
---
## API Key inválida
**Problema:** Errores "Invalid API key" o "Authentication failed".
**Causas:**
- API key incorrecta copiada
- API key expirada
- API key no generada
**Soluciones:**
1. **Regenera la API key:**
```
Dashboard → Settings → API Keys → Generate New Key
→ Copia y usa la nueva key
```
2. **Verifica el formato de la key:**
```
Correcto: 9r_xxxxxxxxxxxxxxxxxxxxxxxx
Incorrecto: Falta el prefijo 9r_
```
3. **Verifica la key en la configuración del CLI:**
```bash
# Cursor
Settings → Models → OpenAI API Key
# Cline
Settings → API Key
# Variable de entorno
export OPENAI_API_KEY="9r_your_key"
```
4. **Prueba la API key:**
```bash
curl http://localhost:20128/v1/models \
-H "Authorization: Bearer 9r_your_key"
```
---
## ¿Necesitas más ayuda?
- **GitHub Issues:** [github.com/decolua/9router/issues](https://github.com/decolua/9router/issues)
- **Documentación:** [9router.com/docs](https://9router.com/docs)
- **FAQ:** [faq.md](faq.md)