Cómo se relaciona con los planes
Cómo funciona BYOK
BYOK es primero el proveedor: conectas un proveedor una vez, le agregas los modelos que quieres y luego enrutas esos modelos a las tareas de Kody. La pantalla/organization/byok tiene tres pestañas:
Providers
Routing
Budget
/organization/byok. Consulta Roles del workspace.Conectar un proveedor
Abrir la configuración de BYOK
Elegir un proveedor
- Providers — proveedores de primera clase que conectas con solo una clave de API (OpenAI, Anthropic, Google AI Studio, OpenRouter, Novita…).
- Custom — proveedores que apuntas a tu propio endpoint o donde ejecutas un modelo arbitrario: OpenAI-compatible, Anthropic-compatible, Google Vertex AI y Amazon Bedrock. Están marcados con una indicación de Custom endpoint.
Agregar un modelo
- Si Kodus puede listar los modelos del proveedor, obtienes un menú desplegable.
- De lo contrario (endpoints personalizados, auto-alojados, o cuando las claves de la plataforma no están configuradas), escribe el ID exacto del modelo.
Ajustar configuración avanzada (opcional)
Probar y guardar
Prueba antes de guardar
El botón Test verifica tu configuración antes de que pueda romper una revisión real. Lo que hace depende del proveedor:- Una temperatura que un modelo que siempre razona no respetará (está fijada en
1— consulta Temperatura). - Razonamiento en Off en un modelo que siempre razona y no puede deshabilitarse.
Model not found.Enrutamiento: qué modelo ejecuta cada tarea
Una vez que conectas dos o más modelos, la pestaña Routing decide qué modelo ejecuta qué. El enrutamiento es plano: cada tarea usa el predeterminado hasta que lo anulas.Policy
Defaults
- Model for all tasks — el único modelo que usa cada tarea a menos que se anule.
- Fallback (opcional) — un modelo distinto en el que Kody vuelve a ejecutar una llamada una vez cuando el modelo de la tarea falla: una clave mala o vencida, sin crédito, o el proveedor caído (después de sus propios reintentos).
Per agent
Elegir modelos
Cualquier modelo que sirva tu proveedor funciona. Si no sabes por dónde empezar, estas son opciones sólidas para revisión de código:Claude Sonnet / Opus
Gemini Pro
GPT (latest)
Kimi / GLM (coding plans)
Conectar Kimi (Moonshot) y GLM (Z.ai)
Moonshot y Z.ai ofrecen cada uno un plan de suscripción en un endpoint distinto al de su Developer API de pago por token. Cada plan es una cuenta separada con su propia clave — elige la base URL que coincida con la clave que tienes.- Kimi (Moonshot AI)
- GLM (Z.ai)
maxConcurrentRequests=30. Las variantes de Kimi que siempre razonan (por ejemplo, kimi-k2p7-code, kimi-k3) fijan la temperatura en 1 y no pueden apagar el razonamiento — consulta Temperatura.Proveedores compatibles
- OpenAI
- Google Gemini
- Anthropic Claude
- Novita AI
- OpenRouter
- Google Vertex AI
- Amazon Bedrock
- OpenAI Compatible
- Anthropic-compatible
- Visita OpenAI API Keys
- Crea una nueva clave para Kodus
- Agrega información de facturación
Razonamiento / Pensamiento extendido
El formulario Add a model expone un interruptor Thinking (Off / Low / Medium / High / Custom) bajo Advanced settings. Las opciones disponibles reflejan lo que el modelo realmente puede hacer:- Un modelo que no puede razonar queda bloqueado en Off con una nota.
- Un modelo que solo razona en ciertos niveles (por ejemplo, medium/high de GPT-5) deshabilita los inválidos.
- Un modelo que razona por defecto obtiene Medium como punto de partida razonable.
Niveles predefinidos
Cuando eliges Low / Medium / High, Kodus traduce el nivel al formato nativo de cada proveedor automáticamente:k2p7-code/k3, GLM-5.3) razonan incondicionalmente — no se pueden poner en Off, y el formulario deshabilita esa opción.Sobrescritura con JSON personalizado
Elegir Custom en el interruptor de Thinking revela un área de texto JSON. Pega directamente las opciones del proveedor — Kodus las envuelve automáticamente bajo el namespace del proveedor activo. No necesitas conocer las reglas de enrutamiento del Vercel AI SDK. Úsalo cuando:- Necesitas un valor específico de
budgetTokenspara Claude (en lugar del mapeo predefinido de esfuerzo) - Quieres habilitar/deshabilitar el razonamiento por modelo en proveedores compatibles con OpenAI
- Quieres campos más allá del razonamiento — caching, service tier, safety settings, etiquetado
user, etc. La sobrescritura se fusiona enproviderOptions, por lo que cualquier campo del adaptador pasa - El proveedor lanza un nuevo campo que Kodus aún no ha envuelto
Ejemplos (pega directamente — sin namespace)
- Anthropic
- Google Gemini
- OpenAI
- OpenRouter
- OpenAI-compatible (Kimi, GLM, etc.)
Modo manual con namespaces (usuarios avanzados)
Si tu JSON ya empieza con una clave de namespace conocida en el nivel superior — cualquier clave de la tabla de mapeo de abajo — Kodus lo deja intacto. Útil si quieres mezclar múltiples namespaces de proveedores o ser explícito:Detalles a tener en cuenta
- Solo JSON válido. Las comas faltantes o sobrantes rompen el análisis y Kodus ignora la sobrescritura.
- Precedencia: la sobrescritura JSON reemplaza por completo el bloque de namespace del preset de esfuerzo — si sobrescribes
anthropic.thinkingpero olvidasanthropic.effort, ese campo no se enviará. El enrutamiento de OpenRouter (Pin providers / Allow fallbacks) es la única excepción: se fusiona en profundidad con tu sobrescritura bajoopenrouter. - Proveedor desconocido = sin envoltura. Si tu proveedor de BYOK no está en la tabla de namespaces anterior, Kodus pasa el JSON tal cual.
Temperatura
La temperatura vive bajo Advanced settings, y el campo se adapta a las reglas del modelo — definidas por el proveedor, no adivinadas por el formulario:Fijar proveedores de OpenRouter
OpenRouter es un enrutador — cuando solicitas un modelo (por ejemplo,moonshotai/kimi-k2), reenvía la llamada a uno de varios proveedores upstream (Moonshot directo, Together, Groq, Fireworks, Novita…). Cada llamada puede caer en un backend diferente. Es conveniente, pero introduce variación silenciosa:
- Variación de calidad — los upstreams corren diferentes precisiones (FP8, INT4, completa) y entregan salidas sutilmente distintas para prompts idénticos
- Inconsistencia en tool-calling — algunos backends no soportan function calling de la misma forma, lo que provoca llamadas a herramientas mal formadas
- Variación en el formato de razonamiento — un upstream respeta
reasoning_effort, otro solothinking.enabled, otro ignora ambos - Oscilaciones de latencia — el p50 puede saltar de 800ms a 4s entre llamadas a medida que cambia el enrutamiento
- Sorpresas de rate-limit — alcanzas la cuota en un backend que no elegiste explícitamente
Cómo fijarlos
Cuando tu proveedor de BYOK es OpenRouter, el panel de Advanced settings muestra una sección OpenRouter routing con dos campos:- Pin providers (in order) — lista separada por comas de nombres de upstream (por ejemplo,
moonshot, together). OpenRouter los prueba en orden y usa el primero disponible. - Allow fallbacks — cuando está desactivado, las solicitudes fallan de forma contundente si ninguno de los proveedores fijados está disponible. Cuando está activado (valor por defecto), OpenRouter puede recurrir a cualquier otro upstream que sirva el modelo.
Avanzado: sobrescritura con JSON en crudo
Si necesitas campos más allá deorder y allow_fallbacks (por ejemplo, ignore, data_collection, require_parameters), cambia Thinking a Custom en Advanced settings y pega el payload de enrutamiento completo — se fusiona en providerOptions junto con cualquier configuración de razonamiento:
Concurrencia y límites de tasa
El campomaxConcurrentRequests (bajo Advanced settings) limita cuántas solicitudes en curso envía Kodus a tu proveedor en paralelo. La mayoría de las veces, el valor predeterminado es suficiente — pero los planes de suscripción con topes de concurrencia estrictos necesitan configurarlo explícitamente.
Valores a definir
Cuándo ajustarlo
Subirlo
- Tienes un nivel de recarga alto en Moonshot/OpenRouter y quieres más rendimiento en PRs grandes
- Actualizaste tu GLM Coding Plan a Max y quieres usar el presupuesto completo de 30 concurrentes
- Las revisiones se sienten serializadas en PRs con múltiples archivos y no ves errores 429
Bajarlo
- Ves errores
429oToo much concurrencyen los logs de revisión - Tu proveedor advierte sobre límites de tasa en el panel
- Quieres conservar la ventana del Coding Plan (5h/semanal) entre más PRs
maxConcurrentRequests del propio Fallback. Configurar un Fallback generoso en un proveedor distinto es una buena forma de absorber ráfagas cuando tu modelo principal está en una suscripción ajustada.Mejores prácticas
Seguridad
Claves dedicadas
Rotación regular
Monitorear el uso
Almacenamiento seguro
Estrategia de enrutamiento
- Usa un proveedor diferente para tu predeterminado y tu respaldo (por ejemplo, Anthropic predeterminado, Google respaldo). Protege contra interrupciones específicas del proveedor.
- Las suscripciones con límites de concurrencia estrictos (GLM Coding Plan Lite/Pro, Kimi Code Plan) son malas configuraciones en solitario — empárlalas con un respaldo de pago por token para que los PRs variables no se queden sin recursos.
- Enruta las tareas pesadas (revisión de código profunda) a tu modelo más fuerte y las ligeras (resúmenes, chat) a uno más barato en Per agent.
Solución de problemas
'Invalid API key' al hacer clic en Test
'Invalid API key' al hacer clic en Test
- Copia la clave sin espacios extra, comillas o saltos de línea al final.
- Confirma que la facturación esté habilitada y la cuenta tenga créditos.
- Para claves del GLM Coding Plan / Kimi Code Plan, asegúrate de que la base URL coincida con el plan — las claves de suscripción no funcionan en el endpoint del Developer API y viceversa.
'Model not found' al hacer clic en Test
'Model not found' al hacer clic en Test
- Para los proveedores de sondeo por chat (Anthropic-compatible, OpenAI-compatible, Novita), Test envía una solicitud real al modelo, así que un ID de modelo incorrecto o mal escrito falla aquí — esto es lo esperado y mejor que fallar en el momento de la revisión.
- Copia el ID exacto del modelo desde el panel del proveedor. Algunos proveedores usan rutas profundas (por ejemplo, Fireworks
accounts/fireworks/models/kimi-k2p7-code) o escriben las versiones de otra forma (k2p7vsk2.7).
'Endpoint not found' al hacer clic en Test
'Endpoint not found' al hacer clic en Test
- Verifica que la base URL coincida exactamente con el proveedor (la barra al final importa para algunos).
- Para proveedores compatibles con OpenAI, el endpoint suele ser
{baseURL}/chat/completions(Kodus agrega la ruta).
Test rechaza la temperatura o el razonamiento que definí
Test rechaza la temperatura o el razonamiento que definí
- Algunos modelos fijan la temperatura o siempre razonan (Kimi
k2p7-code/k3, GLM-5.3; Claude 4.7+/GPT-5 eliminan la temperatura por completo). Test valida tu ajuste contra las reglas del modelo y devuelve un mensaje específico — síguelo (deja la temperatura sin definir o usa el valor requerido; no pongas el razonamiento en Off en un modelo que siempre razona). Consulta Temperatura.
'Rate limited' o 'Too much concurrency'
'Rate limited' o 'Too much concurrency'
- Baja Max concurrent requests en Advanced settings.
- En GLM Coding Plan Lite/Pro, mantente en 1 concurrente. Actualiza a Max (30 concurrentes) si necesitas más rendimiento.
- En Kimi Code Plan, el tope documentado es 30 concurrentes.
Variables de entorno de alojamiento autónomo no aparecen
Variables de entorno de alojamiento autónomo no aparecen
- Si Kodus está configurado mediante
.env(Modo Fijo auto-alojado), la pantalla de BYOK muestra un banner informativo azul con el proveedor/modelo activo — la clave nunca se muestra por seguridad. - Conectar un modelo y guardar sobrescribe la configuración de
.env.
Costos altos o inesperados
Costos altos o inesperados
- El razonamiento agrega tokens. Si el costo se dispara, baja Thinking de Medium a Low, o enruta las tareas pesadas a un modelo más barato en Per agent.
- Consulta el panel de tu proveedor para el desglose por modelo, y establece un tope en la pestaña Budget.
Preguntas frecuentes
¿Puedo cambiar de proveedor en cualquier momento?
¿Puedo cambiar de proveedor en cualquier momento?
¿Qué sucede si mi clave de API se queda sin créditos?
¿Qué sucede si mi clave de API se queda sin créditos?
¿Cómo funciona el sistema de predeterminado / respaldo?
¿Cómo funciona el sistema de predeterminado / respaldo?
¿Pueden distintas tareas usar distintos modelos?
¿Pueden distintas tareas usar distintos modelos?
¿Almacenan nuestras claves de API de forma segura?
¿Almacenan nuestras claves de API de forma segura?
¿Puedo usar un LLM auto-alojado (por ejemplo, Ollama, vLLM)?
¿Puedo usar un LLM auto-alojado (por ejemplo, Ollama, vLLM)?