Claude Code en Movimiento

Ejecuto seis agentes de Claude Code en paralelo desde mi teléfono. Sin portátil, sin ordenador de escritorio—solo Termius en iOS y una VM en la nube.

La Configuración

flowchart LR
    A[Phone] -->|Termius + mosh| B[Tailscale VPN]
    B --> C[Vultr VM]
    C --> D[Claude Code]
    D -->|PreToolUse hook| E[Poke webhook]
    E -->|Push notification| A

El ciclo es: iniciar una tarea, guardar el teléfono, recibir notificación cuando Claude necesite información. Desarrollo asíncrono desde cualquier lugar.

Infraestructura

Una VM de Vultr en Silicon Valley:

SpecValue
Instancevhf-8c-32gb
Cost$0.29/hr (~$7/día cuando está en ejecución)
AccessSolo Tailscale (sin SSH público)

Solo pago cuando trabajo. Dos scripts gestionan el ciclo de vida:

vm-start   # Start VM, wait for Tailscale, connect via mosh
vm-stop    # Halt VM

También tengo un Shortcut de iOS que llama a la API de Vultr directamente—inicio la VM desde mi teléfono antes de abrir Termius.

La IP pública de la VM no tiene un listener SSH. Todo el acceso pasa por la red privada de Tailscale. Defensa en profundidad: el firewall de la nube bloquea todo excepto la coordinación de Tailscale, nftables local como respaldo, fail2ban por si acaso.

Terminal Móvil

Termius maneja SSH y mosh en iOS/Android. Mosh es la clave—sobrevive a las transiciones de red. Cambiar de WiFi a celular, caminar por una zona sin señal, poner el teléfono en suspensión. La conexión persiste.

mosh --ssh="ssh -p 47892" [email protected]

Un inconveniente: mosh no reenvía el agente SSH. Para operaciones git que necesitan autenticación de GitHub, uso SSH regular dentro de tmux.

Persistencia de Sesión

El shell se adjunta automáticamente a tmux al iniciar sesión. Cierra Termius, vuelve a abrir horas después, todo sigue ahí.

# In .zshrc
if [[ -z "$TMUX" ]]; then
    tmux attach -t main 2>/dev/null || tmux new -s main
fi

Múltiples agentes de Claude se ejecutan en ventanas paralelas. C-a c para nueva ventana, C-a n para cambiar. Funciona bien en un teclado de teléfono.

Notificaciones Push

Esto es lo que hace práctico el desarrollo móvil. Sin notificaciones, estarías constantemente revisando el terminal. Con ellas, puedes alejarte.

El hook en ~/.claude/settings.json:

{
  "hooks": {
    "PreToolUse": [{
      "matcher": "AskUserQuestion",
      "hooks": [{
        "type": "command",
        "command": "~/.claude/hooks/poke-notify.sh question"
      }]
    }]
  }
}

Cuando Claude llama AskUserQuestion, el hook se dispara. Un script simple extrae la pregunta y hace POST al webhook de Poke:

QUESTION=$(echo "$EVENT_DATA" | jq -r '.tool_input.questions[0].question')
MESSAGE="$PROJECT_NAME: Claude needs input - $QUESTION"
curl -X POST "$API_URL" -d "{\"message\": \"$MESSAGE\"}"

El teléfono vibra. La notificación muestra la pregunta. Toca, responde, continúa.

Modelo de Confianza

Ejecuto Claude Code en modo permisivo. La VM está aislada—sin acceso a sistemas de producción, sin secretos más allá de lo necesario para el desarrollo. Peor caso: Claude hace algo inesperado en una VM desechable.

El control de costos añade otra capa. La VM cuesta $0.29/hr. Incluso si algo se descontrola, el límite diario está acotado.

Desarrollo Paralelo

Los worktrees de Git me permiten ejecutar múltiples características simultáneamente:

~/Code/myproject/              # main
~/Code/myproject-sidebar/      # feature branch
~/Code/myproject-dark-mode/    # another feature

Cada worktree obtiene su propia ventana de tmux con un agente de Claude. La asignación de puertos es basada en hash—determinista desde el nombre de la rama, sin conflictos:

hash_val = sum(ord(c) for c in branch_name)
django_port = 8001 + (hash_val % 99)

Seis agentes, seis características, un teléfono.

Lo Que Esto Permite

Revisar PRs mientras esperas el café. Iniciar una refactorización en el tren. Arreglar un bug desde el sofá mientras ves la televisión.

El patrón: comenzar una tarea que tomará a Claude 10-20 minutos, hacer otra cosa, recibir notificación, responder, repetir. El desarrollo encaja en los huecos del día en lugar de requerir tiempo dedicado en el escritorio.

Los Componentes

ToolPurpose
VultrCloud VM ($0.29/hr, pago por uso)
TailscaleRed privada, acceso seguro
TermiusCliente SSH para iOS/Android
moshShell resistente a la red
tmuxPersistencia de sesión
PokeNotificaciones push vía webhook
Claude CodeEl trabajo real

La configuración tomó una sesión de Claude Code para construir—le di mi clave API de Vultr y acceso a gh, pedí una VM de desarrollo segura. Ahora programo desde mi teléfono.


Discute este artículo en Hacker News