Guía

Mantener viva una sesión de Claude Code con tmux

Un agente de terminal vive dentro de una terminal. Si cierras la ventana, pierdes el agente. Si se corta la conexión SSH, pierdes el agente. tmux mete el agente en una sesión que la terminal solo muestra. La sesión sigue en marcha cuando dejas de mirarla. Esta es la configuración que usamos en cada Mac para agentes, con los comandos exactos.

Instalar e iniciar

brew install tmux
tmux new -s agent

Ahora estás dentro de una sesión llamada agent. Arranca el agente en ella como cualquier otro comando.

claude

Para Codex, ejecuta su comando. Todo lo que hay en esta página funciona igual con las dos herramientas.

Desconectar y volver

Pulsa Ctrl-b, suelta y luego pulsa d. La terminal vuelve a tu shell y el agente sigue trabajando en segundo plano. Para volver a él desde cualquier terminal de la máquina, conéctate por su nombre.

tmux attach -t agent

Si olvidas el nombre, lista lo que está en marcha.

tmux ls

Retómalo desde el móvil

Instala un cliente SSH en el móvil. Termius y Blink Shell son los habituales. Conéctate al Mac y únete a la misma sesión. Ves exactamente lo que hace el agente y puedes escribirle. Los teclados del móvil son malos para prompts largos. Por eso casi todo el mundo usa el móvil para ver el progreso y responder alguna pregunta. El trabajo de verdad lo hacen desde un portátil.

En el caso de Claude Code, Remote Control funciona mejor que SSH en el móvil. Conecta la app de Claude a la sesión en marcha sin ninguna terminal. La guía para ejecutar Claude Code 24/7 explica cómo configurarlo. tmux sigue siendo importante por debajo, porque Remote Control se conecta a una sesión que tiene que existir.

Hazlo cómodo

Dos ajustes hacen tmux mucho más fácil para trabajar con agentes. Ponlos en un archivo llamado .tmux.conf en tu carpeta de inicio.

set -g mouse on
set -g history-limit 50000

El primero te deja desplazarte con el trackpad o con el dedo. El segundo guarda salida suficiente para leer lo que hizo el agente hace una hora. Reinicia tmux después de guardar el archivo, o recárgalo desde dentro de una sesión.

tmux source-file ~/.tmux.conf

Sobrevivir a un reinicio

Las sesiones de tmux viven en memoria. Un reinicio las borra. En una máquina sin supervisión, la sesión debería volver sola. Un LaunchAgent que se ejecuta al iniciar sesión se encarga de eso. Guarda esto en un archivo llamado dev.local.agent-session.plist en la carpeta LaunchAgents, dentro de la Library de tu carpeta de inicio.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key><string>dev.local.agent-session</string>
  <key>ProgramArguments</key>
  <array>
    <string>/bin/sh</string>
    <string>-c</string>
    <string>/opt/homebrew/bin/tmux has-session -t agent 2>/dev/null || /opt/homebrew/bin/tmux new -d -s agent</string>
  </array>
  <key>RunAtLoad</key><true/>
  <key>StartInterval</key><integer>60</integer>
</dict>
</plist>

Cárgalo una vez. A partir de ahí se ejecuta en cada inicio de sesión y comprueba cada minuto.

launchctl load ~/Library/LaunchAgents/dev.local.agent-session.plist

Esto crea una sesión vacía. No reinicia el agente dentro de ella, y es a propósito. Un agente que se relanza solo sobre una tarea a medias, sin nadie despierto, es la receta de las sorpresas. Activa el inicio de sesión automático del usuario para que el LaunchAgent tenga una sesión donde ejecutarse. Luego lanza tú la tarea la próxima vez que te conectes.

Dos sesiones, dos agentes

Nada te impide ejecutar Claude Code en una sesión y Codex en otra, en la misma máquina. Dos sesiones de Claude Code en dos repositorios también funcionan. Ponles el nombre del trabajo.

tmux new -s api-refactor
tmux new -s ios-tests

Mantén cada agente en su propia copia del repositorio para que no editen los mismos archivos. Los worktrees de Git lo hacen barato.

Preguntas frecuentes

¿tmux mantiene el agente en marcha si el Mac entra en reposo?

+

No. tmux te protege de que se cierre la terminal o se corte la conexión. El reposo congela toda la máquina, tmux incluido. Arregla el reposo por separado con los ajustes de energía y usa tmux encima.

¿Qué diferencia hay entre tmux y screen?

+

Resuelven el mismo problema. tmux tiene mantenimiento activo, está en Homebrew y tiene los ajustes de ratón e historial de arriba. Usa el que conozcas. Los comandos cambian, pero la idea es la misma.

¿Puedo ver la salida del agente de antes de conectarme?

+

Sí. Desplázate hacia arriba dentro de la sesión. El ajuste history-limit controla cuántas líneas se guardan. Con el modo ratón activo, desplázate con el trackpad. Sin él, pulsa Ctrl-b y luego la tecla del corchete izquierdo, desplázate y pulsa q para salir.

¿Funciona en un Mac alojado?

+

Sí, y así están configurados nuestros Macs para agentes. Al iniciar sesión se crea una sesión llamada agent con el agente elegido en marcha. En el escritorio que abres en el navegador hay una ventana de Terminal conectada a ella.

Guías relacionadas