SandboxesGuíasEjecutar OpenCode

Ejecutar OpenCode en un sandbox

Para ejecutar OpenCode en un sandbox de Lizard (lizard.build), conecta una credencial con lizard agents (una suscripción de ChatGPT o una clave de Anthropic, OpenAI, OpenRouter o LLM Gateway), crea un sandbox desde la plantilla opencode y envía prompts con lizard sandbox prompt <id> --agent opencode "…". Si prefieres la interfaz web de OpenCode, inicia opencode web --hostname 0.0.0.0 --port 4096 en el sandbox y abre el puerto con lizard sandbox expose.

Estado de las pruebas: los comandos se basan en Lizard CLI 4.0.42 y del ejecutor de agentes de la plataforma a fecha de 2026-10-12. Comprobamos los pasos de la interfaz web con el código fuente de OpenCode 1.18.34, que sirve su interfaz y su API desde un mismo puerto, y con el del router de sandboxes de Lizard, que guarda el token de acceso en una cookie y deja pasar los WebSockets. Todavía no hemos hecho ninguno de los dos métodos de principio a fin en un sandbox real para esta página.

Antes de empezar

  • Lizard CLI, con la sesión iniciada mediante lizard login, y un proyecto: ejecuta lizard init en una carpeta o pasa -p <project> a los comandos de sandbox.
  • Lizard Pro o la prueba de Pro de 7 días (requiere tarjeta). Los sandboxes se facturan por segundo según su tamaño mientras están en marcha; consulta límites y precios.

Conectar credenciales

CredencialComando
Suscripción de ChatGPTlizard agents login chatgpt --open
Clave de API de Anthropiclizard agents add anthropic
Clave de API de OpenAIlizard agents add openai
Clave de API de OpenRouterlizard agents add openrouter
Clave de API de LLM Gatewaylizard agents add llmgateway

OpenCode recibe todas las credenciales conectadas que acepta, y cada una permite usar los modelos de ese proveedor. No acepta un token de suscripción de Claude; para eso, usa Claude Code. Un inicio de sesión de ChatGPT llega a una ejecución como un token de acceso de corta duración, nunca como el token de actualización. Las claves de API llegan a una ejecución como variables de entorno, por ejemplo ANTHROPIC_API_KEY.

OpenCode nombra los modelos como provider/model. Fija uno predeterminado o pasa -m en cada prompt:

lizard agents use opencode -m openrouter/anthropic/claude-sonnet-4.5
lizard agents status

Si solo tienes conectada una clave de OpenRouter y no has elegido modelo, Lizard ejecuta openrouter/openai/gpt-5.3-codex.

Crear un sandbox

lizard sandbox create -t opencode --timeout 3600000

Guarda el ID que muestra en una variable: SB=sb_abc123. La duración predeterminada de la CLI es de cinco minutos; pasado ese tiempo, Lizard elimina el sandbox y sus archivos. --timeout 3600000 le da una hora. La plantilla opencode incluye Node.js 22, una versión fijada de OpenCode, git, Python 3, ripgrep, curl, jq, unzip y Lizard CLI.

Copia tu código igual que con Claude Code:

lizard sandbox exec $SB -- git clone https://github.com/your-org/your-app /workspace/app

Para un repositorio privado o local, consulta poner tu código en el sandbox.

Enviar un prompt

lizard sandbox prompt $SB --agent opencode --cwd /workspace/app "add input validation to the signup form"

Cada turno ejecuta opencode run --auto, que aprueba toda solicitud de permiso que no esté denegada de forma explícita: OpenCode edita archivos y ejecuta comandos sin preguntar. --effort <level> se convierte en el --variant de OpenCode. Continúa una conversación con -c <conversation-id> y vuelve a pasar --agent opencode y --cwd en cada prompt siguiente. Ctrl-C deja de mostrar la actividad; lizard sandbox interrupt $SB detiene al agente.

Para recuperar los cambios como parche, consulta recuperar los cambios.

Abrir la interfaz web de OpenCode

opencode web sirve la interfaz de navegador de OpenCode y su API desde un mismo puerto. Ejecútalo en el sandbox y abre ese puerto con una URL de vista previa.

Las credenciales de lizard agents solo llegan a las ejecuciones de lizard sandbox prompt, así que este servidor necesita su propia clave. Cópiala como archivo para que no aparezca en una línea de comandos:

printf 'export ANTHROPIC_API_KEY=%s\n' "$ANTHROPIC_API_KEY" > opencode.env
lizard sandbox files put $SB opencode.env /root/opencode.env
rm opencode.env

Inicia el servidor y abre el puerto:

lizard sandbox exec $SB -- sh -c '. /root/opencode.env && cd /workspace/app && nohup opencode web --hostname 0.0.0.0 --port 4096 >/tmp/opencode.log 2>&1 </dev/null & echo $! > /tmp/opencode.pid'
lizard sandbox expose $SB 4096

Abre la URL que muestra expose. Lleva ?lizard_token=; Lizard pasa el token a una cookie para ese host y redirige a la misma página sin él, así que las solicitudes de la propia interfaz, su flujo de eventos y los WebSockets del terminal pueden autenticarse.

  • Necesitas --hostname 0.0.0.0. OpenCode escucha en 127.0.0.1 por defecto, y entonces la URL de vista previa responde Sandbox is not listening on port 4096.
  • Indica un --port fijo. Sin él, OpenCode elige al azar un puerto libre.
  • La URL funciona como una contraseña: quien la tenga puede ejecutar comandos en el sandbox a través de OpenCode. Para pedir además una contraseña, añade export OPENCODE_SERVER_PASSWORD=… a opencode.env; el nombre de usuario es opencode.
  • Lee el log del servidor con lizard sandbox exec $SB -- tail -n 50 /tmp/opencode.log. Detén el servidor con lizard sandbox exec $SB -- sh -c 'kill $(cat /tmp/opencode.pid)'.
  • La interfaz se detiene cuando se detiene el sandbox. Amplía su duración con lizard sandbox timeout $SB 3600000.

Problemas comunes

Mensaje o síntomaSolución
OpenCode has no credential. Connect one of: …Conecta una de las credenciales de arriba con lizard agents.
Your ChatGPT login expiredVuelve a ejecutar lizard agents login chatgpt.
La salida menciona CodexEl prompt salió sin --agent opencode.
La URL de vista previa responde 401Abre la URL completa que mostró expose, con su lizard_token. Consulta URLs de vista previa.
La URL de vista previa responde 502El servidor no está en marcha o escucha en 127.0.0.1. Revisa /tmp/opencode.log.
La interfaz web carga, pero todos los modelos fallanEl servidor no tiene clave de proveedor. Corrige /root/opencode.env, detén el servidor y vuelve a iniciarlo.

Ver también

Actualizado