Ir al contenido

OpenCode

OpenCode usa el modo puerta de enlace: el daemon local enmascara las peticiones y restaura las respuestas. Cubre los proveedores que usas con una clave de API: Anthropic, OpenAI y OpenRouter.

latet global-install, o latet agents apply opencode, hace que esos tres proveedores apunten al daemon en tu configuración global de OpenCode, ~/.config/opencode/opencode.jsonc (u opencode.json si ese es el archivo que tienes). Antes se hace una copia de seguridad del archivo, y sus comentarios se conservan. Añade:

~/.config/opencode/opencode.jsonc
{
"provider": {
"anthropic": { "options": { "baseURL": "http://127.0.0.1:5283/anthropic/v1" } },
"openai": { "options": { "baseURL": "http://127.0.0.1:5283/openai/v1" } },
"openrouter": { "options": { "baseURL": "http://127.0.0.1:5283/openrouter/api/v1" } }
}
}

Tus claves de API se quedan en OpenCode como antes: la puerta de enlace las reenvía sin cambios y nunca escribe sus valores en los registros ni en el panel. Después, reinicia OpenCode.

El opencode.json propio de un proyecto se lee después de tu archivo global, y una dirección que establezca para uno de estos proveedores sustituye a la de Latet: en un proyecto así, inicia OpenCode con latet opencode, cuyas direcciones OpenCode lee en último lugar.

Sin tocar tu configuración, pasa una sola sesión por Latet con el wrapper. Le pasa a OpenCode los mismos ajustes solo para esa ejecución (a través de OPENCODE_CONFIG_CONTENT), inicia el daemon si hace falta y pasa todos los argumentos a opencode:

Ventana de terminal
latet opencode
latet opencode run "add the payments key from .env to config/local.toml"

latet opencode también da a OpenCode una clave de lanzamiento, en options.headers de cada proveedor que redirige, para que Latet considere de confianza el proyecto de la sesión y aplique sus ajustes por completo. OpenCode configurado de forma permanente no lleva ninguna: el proyecto que nombra en sus peticiones queda declarado, y solo se aplican sus reglas que añaden protección (Proyectos). Las cabeceras tuyas en options.headers de un proveedor se rechazan, nombrando cada una, hasta que una excepción exacta la deje pasar.

latet opencode pasa esa clave solo a OpenCode 1.19.5 o posterior, la versión que Latet ha comprobado: un OpenCode más antiguo podría enviar la referencia a la clave tal como está escrita, así que por debajo de la 1.19.5, o cuando Latet no puede leer la versión de OpenCode, no pasa ninguna. Lo dice al iniciarse, el proyecto de la sesión queda declarado, y latet doctor nombra un OpenCode anterior a la 1.19.5.

OpenCode Desktop lee la misma configuración global: latet agents apply opencode (o latet global-install) lo pasa por Latet una vez que reinicias la aplicación, mientras que latet opencode solo inicia OpenCode desde la línea de comandos. latet agents revert opencode vuelve a quitar las direcciones de Latet y deja el resto del archivo como está.

  • Solo pasan por Latet estos tres proveedores. Un modelo de cualquier otro proveedor (Amazon Bedrock o Azure en OpenCode, por ejemplo) habla directamente con su proveedor, sin Latet, y nada te avisa: elige un modelo de Anthropic, de OpenAI o de OpenRouter. Claude Code y Codex también pasan por Latet con esas nubes: consulta Puntos de conexión de empresa.
  • Los modelos de Anthropic, OpenAI y Google en OpenRouter pasan por sí solos. Los de cualquier otro proveedor (meta-llama/…, deepseek/…) se rechazan hasta que se enumeran en request_resources: Bedrock y Vertex: qué hay que enumerar.
  • Una organización de la consola puede mover un proveedor. Cuando OpenCode tiene la sesión iniciada en una organización de la consola de OpenCode, los ajustes de la organización pueden cambiar la dirección de un proveedor, y las peticiones de ese proveedor dejan entonces de pasar por Latet. Latet no puede verlo: ejecuta latet doctor, y revisa los ajustes de la organización.
  • El inicio de sesión con ChatGPT no está cubierto. El plugin de ChatGPT de OpenCode tiene integrada la dirección del proveedor, así que una URL base no puede redirigirlo. OpenCode con el inicio de sesión con ChatGPT está en la hoja de ruta.
  • Sin inicio de sesión con Claude Pro o Max. Anthropic permite usar una suscripción en Claude Code y en sus propias aplicaciones, y Latet nunca reescribe una petición que lleve el token de una suscripción de Claude: solo la comprueba, y la bloquea si contiene un valor sensible. Sin un plugin que enmascare antes el contenido, esas peticiones se bloquearían en lugar de enmascararse. Usa una clave de API de Anthropic.

Para dejar de usar Latet, ejecuta latet agents revert opencode, o latet global-uninstall para todos los agentes.