Para ejecutar Claude Code en un servidor remoto, instálalo en el servidor, inicia sesión una vez y arráncalo dentro de una sesión de terminal que sobreviva a tu desconexión, normalmente tmux por SSH. Esa es toda la idea. El resto es elegir dónde vive el servidor, cómo inicia sesión el agente sin navegador y cuánto de tu mundo puede alcanzar el agente desde allí.
Este artículo explica por qué la gente mueve los agentes a un VPS, compara las configuraciones habituales, cubre el inicio de sesión en una máquina sin pantalla y la seguridad básica, y luego muestra cómo maneja AgentVera los agentes remotos con Runner, agentes por SSH y Docker.
Por qué ejecutar un agente de programación en un servidor remoto
Un portátil es un mal hogar para ejecuciones largas de agentes. Se suspende, pierde el Wi-Fi y cierras la tapa para irte a casa. Un servidor no.
Razones habituales para sacar los agentes de tu máquina:
- Tareas largas. Una migración, un refactor grande o una suite de tests que tarda una hora no debería detenerse porque tu portátil se suspendió.
- El código ya vive allí. Algunos proyectos solo compilan en Linux, necesitan una GPU o necesitan una base de datos que solo existe en esa red.
- Aislamiento. Un agente en una VM desechable no puede tocar tus archivos personales, tus claves SSH ni tus sesiones del navegador.
- Acceso desde cualquier sitio. Empiezas una tarea en tu escritorio y la compruebas desde otro ordenador o desde el móvil.
- Varios agentes a la vez. Un servidor con más núcleos y memoria ejecuta más agentes en paralelo que un portátil.
La contrapartida es la configuración y la responsabilidad. Un servidor que controlas es un servidor que tienes que proteger.
Las opciones de un vistazo
| Configuración | Sobrevive a la desconexión | Aislamiento | Esfuerzo | Ideal para |
|---|---|---|---|---|
| SSH + tmux en un VPS | Sí | Máquina aparte | Bajo | La mayoría, uno o dos proyectos |
| Dev container (local o remoto) | Mientras el contenedor funcione | Contenedor | Medio | Entornos reproducibles, equipos |
| VM en la nube por tarea | Sí | VM completa | Medio a alto | Entornos desechables, trabajo arriesgado |
| Agente en un contenedor en tu máquina | No, se detiene con el agente | Contenedor | Bajo | Aislamiento sin servidor |
SSH y tmux
Es la configuración más sencilla y sirve para cualquier agente CLI. En el servidor:
npm install -g @anthropic-ai/claude-code
tmux new -s agent
cd ~/projects/my-app
claude
Sepárate con Ctrl-b d y cierra SSH. El agente sigue trabajando. Más tarde, entra de nuevo por ssh y ejecuta tmux attach -t agent. Si prefieres screen o zellij, la idea es la misma: la sesión pertenece al servidor, no a tu conexión SSH.
A qué renuncias: no hay árbol de archivos ni vista de diffs, y cambiar entre varios agentes significa hacer malabares con ventanas de tmux.
Dev containers
Un dev container describe el entorno en un archivo (devcontainer.json más un Dockerfile), de modo que todas las máquinas tengan las mismas herramientas. Puedes ejecutarlo en local o en un host Docker remoto. El agente se ejecuta dentro del contenedor y solo ve lo que montes en él.
El inconveniente es que el inicio de sesión del agente también tiene que existir dentro del contenedor, y un contenedor que se reconstruye pierde todo lo que no hayas hecho persistir.
VMs en la nube
Una VM nueva por tarea da el aislamiento más limpio: si el agente destroza algo, borras la máquina. Cuesta más de configurar, y necesitas una forma de meter el código y sacar el resultado, normalmente una rama de git a la que el agente hace push.
Iniciar sesión en una máquina sin pantalla
Los agentes de programación suelen iniciar sesión a través de un navegador. Un servidor no tiene, así que necesitas una de estas rutas.
Claude Code
- Navegador en tu ordenador. Ejecuta
claudeen el servidor. Muestra un enlace de inicio de sesión; ábrelo en tu propia máquina. Si el navegador no puede llegar al callback local del servidor, Claude Code muestra un código para pegar en el prompt «Paste code here if prompted» de la terminal. - Token de larga duración.
claude setup-tokencrea un token OAuth de un año para una suscripción Pro, Max, Team o Enterprise. No se guarda en ningún sitio por ti: defínelo en el servidor comoCLAUDE_CODE_OAUTH_TOKEN. Este token solo cubre las peticiones al modelo. - Clave de API. Define
ANTHROPIC_API_KEYsi pagas por uso a través de la API.
En Linux, Claude Code guarda sus credenciales en ~/.claude/.credentials.json con modo de archivo 0600. En macOS van al llavero, y por SSH recurre a ese archivo si el llavero está bloqueado.
Codex
- Código de dispositivo.
codex login --device-authte da un código para introducir en un navegador en otro sitio. Está en beta y hay que habilitarlo en los ajustes de seguridad de ChatGPT (o por el administrador de tu espacio de trabajo). - Clave de API.
printenv OPENAI_API_KEY | codex login --with-api-key. - Alternativas. Copia
~/.codex/auth.jsondesde una máquina donde hayas iniciado sesión, o reenvía el puerto de inicio de sesión conssh -L 1455:localhost:1455e inicia sesión con normalidad.
Elijas la ruta que elijas, un archivo de credenciales en un servidor es tan delicado como una contraseña. Cualquiera que pueda leerlo puede usar tu suscripción.
Seguridad en el servidor
Un agente en un servidor ejecuta comandos con los derechos del usuario con el que corre. Planifica en consecuencia.
- Usa un usuario aparte. No ejecutes agentes como root. Un usuario dedicado con su propia carpeta personal limita lo que puede alcanzar un mal comando.
- No pongas secretos de producción en la máquina. Si el agente no necesita la contraseña de la base de datos de producción, no debería estar en un archivo
.envde ese servidor. - Cierra los puertos de entrada. SSH solo con claves, sin inicio de sesión con contraseña y sin servidores de desarrollo expuestos que se te hayan olvidado.
- Trabaja en ramas. Deja que el agente haga push a una rama, no a main. Los worktrees de Git permiten que varios agentes trabajen en el mismo repositorio sin pisarse.
- Cuidado con los tokens de larga duración. Un token de un año en un servidor compartido es un riesgo de un año. Rótalo si la máquina es compartida o se retira.
- Espera que los inicios de sesión caduquen. En ejecuciones sin supervisión, comprueba que la sesión sigue iniciada antes de dejarla sola por la noche.
Cómo ejecuta AgentVera los agentes en un servidor
AgentVera es una app de escritorio que ejecuta CLI de agentes de programación lado a lado en terminales reales con tus propios inicios de sesión. Te ofrece tres formas de sacar los agentes de tu máquina.
Runner: tu propio servidor, accesible desde cualquier sitio
Runner es un pequeño servicio que instalas en tu propio servidor Linux o macOS, o en un Mac. Ejecuta Claude Code, Codex, Gemini CLI, opencode y sesiones de terminal normales en terminales reales. Las sesiones siguen funcionando cuando te desconectas, y te reconectas desde el navegador o la app de escritorio.
La configuración, en resumen:
- Abre app.agentvera.dev/runners y añade un runner. Obtienes un código de emparejamiento de 8 caracteres válido durante 10 minutos.
- En el servidor, ejecuta el comando de instalación con ese código:
curl -fsSL https://app.agentvera.dev/runner/install.sh | sh -s -- --pair KOD
- Instala la CLI en el servidor e inicia sesión, por ejemplo
npm install -g @anthropic-ai/claude-codey luegoclaude login.
Runner necesita Node.js 20 o superior y curl o wget. En Linux instala un servicio de usuario de systemd; ejecuta sudo loginctl enable-linger $USER una vez para que siga funcionando cuando cierres sesión. Para mantener los agentes dentro de ciertas carpetas, ejecuta agentvera-runner roots ~/projects. Sin roots, los agentes trabajan en tu carpeta personal.
En cuanto a seguridad, Runner solo hace una conexión saliente a app.agentvera.dev por el puerto 443, así que no abres ningún puerto en el servidor. El tráfico se retransmite por TLS, y el servidor de AgentVera no lo interpreta, registra ni almacena. Tu código se queda en tu servidor, y solo los miembros activos de tu organización pueden conectarse. La página de Runner también muestra la CPU, la memoria y el disco del servidor.
Runner está en los planes Pro y Team.
Agentes por SSH: sin servicio adicional
Si ya tienes un servidor en la lista SSH de AgentVera, no necesitas Runner. En el diálogo de nuevo agente, pon Runs on en ese servidor guardado en lugar de This computer, y elige la Folder on the server. El agente se ejecuta entonces en el servidor con el inicio de sesión de CLI del propio servidor. Como indica el diálogo, la CLI debe estar instalada y con sesión iniciada en el servidor, o puedes iniciar sesión desde la terminal del agente en el primer arranque. Tus cuentas locales, MCP y ajustes del navegador no se usan en el servidor.
Si tmux está instalado en el servidor, AgentVera arranca el agente dentro de una sesión de tmux. Esa sesión sobrevive a la conexión SSH, y la siguiente conexión, desde cualquier ordenador, se vuelve a enganchar a ella. Cerrar la app no la detiene; detener o cerrar el agente sí.
La función SSH en sí es gratuita: servidores guardados, una bóveda cifrada para credenciales, SFTP y ProxyJump. Los detalles están en la página de SSH y SFTP.
Agentes en un contenedor Docker: aislamiento sin servidor
A veces no necesitas un servidor, necesitas un muro. Para un agente local de Claude Code o Codex, activa Run in a Docker container en el diálogo del agente. El agente solo ve la carpeta del proyecto; los demás archivos, programas y claves SSH de tu ordenador quedan fuera de su alcance. Puedes fijar límites de CPU y memoria.
AgentVera construye su propia imagen (Node 22, git, ripgrep, Claude Code y Codex) en el primer uso, o puedes usar tu propia imagen siempre que tenga el comando claude o codex. El contenedor se elimina cuando el agente se detiene. Necesita Docker Desktop, Colima u OrbStack. Es gratuito; consulta agentes en Docker.
Cuál elegir
| Lo que quieres | Usa |
|---|---|
| Agentes que funcionen durante horas en tu servidor, abiertos desde el navegador | Runner (Pro y Team) |
| Un agente en un servidor al que ya accedes por SSH | Runs on → servidor SSH guardado |
| Aislamiento en tu propia máquina | Run in a Docker container |
| Un vistazo rápido a un agente en marcha desde el móvil | La app móvil o Telegram |
Errores comunes
- Arrancar el agente directamente en la sesión SSH y perderlo cuando se cae la conexión.
- Ejecutar el agente como root «solo por ahora».
- Copiar al servidor un
.enventero con claves de producción. - Dejar un token de larga duración en una máquina compartida y olvidarse de él.
- Dejar que varios agentes trabajen en la misma carpeta en lugar de en ramas o worktrees separados.
Lista de comprobación
- La CLI está instalada y con sesión iniciada en el servidor.
- El agente se ejecuta dentro de tmux, Runner u otra sesión que sobreviva a una desconexión.
- Se ejecuta como usuario no root, limitado a las carpetas del proyecto.
- No hay secretos de producción en el servidor salvo que la tarea los necesite.
- Los puertos de entrada están cerrados salvo SSH con claves.
- Cada agente trabaja en su propia rama o worktree.
Para terminar
Ejecutar Claude Code en un servidor remoto se reduce a tres cosas: una sesión que sobreviva a tu conexión, un inicio de sesión que funcione sin navegador y un servidor que solo tenga lo que el agente necesita. SSH y tmux te llevan ahí en cinco minutos. Si quieres iniciar agentes desde cualquier sitio, ver sus archivos y diffs y mantener varios en marcha a la vez, Runner y los agentes por SSH de AgentVera hacen el mismo trabajo con menos malabares.
Para seguir leyendo:
- Git worktree para agentes en paralelo
- Crear un bot de trading de criptomonedas con IA
- Ejecutar varios agentes de Claude Code
- Docker
- ¿Qué es un agente de programación?
Para probar AgentVera, empieza en la página de inicio.