Eseguo sei agenti Claude Code in parallelo dal mio telefono. Nessun laptop, nessun desktop—solo Termius su iOS e una VM cloud.
La Configurazione
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
Il ciclo è: avviare un’attività, mettere il telefono in tasca, ricevere una notifica quando Claude ha bisogno di input. Sviluppo asincrono da qualsiasi luogo.
Infrastruttura
Una VM Vultr nella Silicon Valley:
| Spec | Value |
|---|---|
| Instance | vhf-8c-32gb |
| Cost | $0.29/ora (~$7/giorno quando in esecuzione) |
| Access | Solo Tailscale (nessun SSH pubblico) |
Pago solo quando lavoro. Due script gestiscono il ciclo di vita:
vm-start # Start VM, wait for Tailscale, connect via mosh
vm-stop # Halt VM
Ho anche uno Shortcut iOS che chiama direttamente l’API Vultr—avvio la VM dal mio telefono prima ancora di aprire Termius.
L’IP pubblico della VM non ha un listener SSH. Tutti gli accessi passano attraverso la rete privata di Tailscale. Difesa in profondità: il firewall cloud blocca tutto tranne il coordinamento Tailscale, nftables locale come backup, fail2ban per maggiore sicurezza.
Terminale Mobile
Termius gestisce SSH e mosh su iOS/Android. Mosh è la chiave—sopravvive alle transizioni di rete. Passa da WiFi a cellulare, cammina attraverso una zona morta, metti il telefono in standby. La connessione persiste.
mosh --ssh="ssh -p 47892" [email protected]
Un inconveniente: mosh non inoltra l’agente SSH. Per le operazioni git che necessitano di autenticazione GitHub, uso SSH regolare dentro tmux.
Persistenza della Sessione
La shell si collega automaticamente a tmux al login. Chiudi Termius, riapri ore dopo, tutto è ancora lì.
# In .zshrc
if [[ -z "$TMUX" ]]; then
tmux attach -t main 2>/dev/null || tmux new -s main
fi
Più agenti Claude vengono eseguiti in finestre parallele. C-a c per nuova finestra, C-a n per cambiare. Funziona bene su una tastiera del telefono.
Notifiche Push
Questo è ciò che rende pratico lo sviluppo mobile. Senza notifiche, controlleresti costantemente il terminale. Con esse, puoi allontanarti.
L’hook in ~/.claude/settings.json:
{
"hooks": {
"PreToolUse": [{
"matcher": "AskUserQuestion",
"hooks": [{
"type": "command",
"command": "~/.claude/hooks/poke-notify.sh question"
}]
}]
}
}
Quando Claude chiama AskUserQuestion, l’hook si attiva. Uno script semplice estrae la domanda e fa POST al webhook di 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\"}"
Il telefono vibra. La notifica mostra la domanda. Tocca, rispondi, continua.
Modello di Fiducia
Eseguo Claude Code in modalità permissiva. La VM è isolata—nessun accesso ai sistemi di produzione, nessun segreto oltre a ciò che è necessario per lo sviluppo. Caso peggiore: Claude fa qualcosa di inaspettato su una VM usa e getta.
Il controllo dei costi aggiunge un altro livello. La VM costa $0.29/ora. Anche se qualcosa sfugge al controllo, il limite giornaliero è limitato.
Sviluppo Parallelo
I worktree di Git mi permettono di eseguire più funzionalità simultaneamente:
~/Code/myproject/ # main
~/Code/myproject-sidebar/ # feature branch
~/Code/myproject-dark-mode/ # another feature
Ogni worktree ottiene la propria finestra tmux con un agente Claude. L’allocazione delle porte è basata su hash—deterministica dal nome del branch, nessun conflitto:
hash_val = sum(ord(c) for c in branch_name)
django_port = 8001 + (hash_val % 99)
Sei agenti, sei funzionalità, un telefono.
Cosa Questo Consente
Revisionare PR mentre aspetti il caffè. Avviare un refactoring sul treno. Correggere un bug dal divano mentre guardi la TV.
Il modello: iniziare un’attività che richiederà a Claude 10-20 minuti, fare qualcos’altro, ricevere una notifica, rispondere, ripetere. Lo sviluppo si adatta agli spazi vuoti della giornata invece di richiedere tempo dedicato alla scrivania.
I Componenti
| Tool | Purpose |
|---|---|
| Vultr | Cloud VM ($0.29/ora, pay-per-use) |
| Tailscale | Rete privata, accesso sicuro |
| Termius | Client SSH per iOS/Android |
| mosh | Shell resistente alla rete |
| tmux | Persistenza della sessione |
| Poke | Notifiche push via webhook |
| Claude Code | Il lavoro vero e proprio |
La configurazione ha richiesto una sessione di Claude Code per essere costruita—gli ho dato la mia chiave API Vultr e l’accesso a gh, ho chiesto una VM di sviluppo sicura. Ora programmo dal mio telefono.
Discuti questo articolo su Hacker News