J’exécute six agents Claude Code en parallèle depuis mon téléphone. Pas de portable, pas d’ordinateur de bureau—juste Termius sur iOS et une VM cloud.
La Configuration
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
La boucle est : lancer une tâche, mettre le téléphone en poche, recevoir une notification quand Claude a besoin d’informations. Développement asynchrone de n’importe où.
Infrastructure
Une VM Vultr dans la Silicon Valley :
| Spec | Value |
|---|---|
| Instance | vhf-8c-32gb |
| Cost | 0,29 $/h (~7 $/jour en fonctionnement) |
| Access | Tailscale uniquement (pas de SSH public) |
Je paie seulement quand je travaille. Deux scripts gèrent le cycle de vie :
vm-start # Start VM, wait for Tailscale, connect via mosh
vm-stop # Halt VM
J’ai aussi un Raccourci iOS qui appelle directement l’API Vultr—je démarre la VM depuis mon téléphone avant même d’ouvrir Termius.
L’IP publique de la VM n’a pas de listener SSH. Tous les accès passent par le réseau privé de Tailscale. Défense en profondeur : le pare-feu cloud bloque tout sauf la coordination Tailscale, nftables local en sauvegarde, fail2ban par précaution.
Terminal Mobile
Termius gère SSH et mosh sur iOS/Android. Mosh est la clé—il survit aux transitions réseau. Passer du WiFi au cellulaire, marcher dans une zone morte, mettre le téléphone en veille. La connexion persiste.
mosh --ssh="ssh -p 47892" [email protected]
Un inconvénient : mosh ne transfère pas l’agent SSH. Pour les opérations git qui nécessitent l’authentification GitHub, j’utilise SSH classique dans tmux.
Persistance de Session
Le shell se connecte automatiquement à tmux lors de la connexion. Fermez Termius, rouvrez des heures plus tard, tout est toujours là.
# In .zshrc
if [[ -z "$TMUX" ]]; then
tmux attach -t main 2>/dev/null || tmux new -s main
fi
Plusieurs agents Claude s’exécutent dans des fenêtres parallèles. C-a c pour nouvelle fenêtre, C-a n pour changer. Fonctionne bien sur un clavier de téléphone.
Notifications Push
C’est ce qui rend le développement mobile pratique. Sans notifications, vous vérifieriez constamment le terminal. Avec elles, vous pouvez vous éloigner.
Le hook dans ~/.claude/settings.json :
{
"hooks": {
"PreToolUse": [{
"matcher": "AskUserQuestion",
"hooks": [{
"type": "command",
"command": "~/.claude/hooks/poke-notify.sh question"
}]
}]
}
}
Quand Claude appelle AskUserQuestion, le hook se déclenche. Un script simple extrait la question et fait un POST au 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\"}"
Le téléphone vibre. La notification affiche la question. Touchez, répondez, continuez.
Modèle de Confiance
J’exécute Claude Code en mode permissif. La VM est isolée—pas d’accès aux systèmes de production, pas de secrets au-delà de ce qui est nécessaire pour le développement. Pire cas : Claude fait quelque chose d’inattendu sur une VM jetable.
Le contrôle des coûts ajoute une autre couche. La VM coûte 0,29 $/h. Même si quelque chose dérape, le plafond quotidien est limité.
Développement Parallèle
Les worktrees Git me permettent d’exécuter plusieurs fonctionnalités simultanément :
~/Code/myproject/ # main
~/Code/myproject-sidebar/ # feature branch
~/Code/myproject-dark-mode/ # another feature
Chaque worktree a sa propre fenêtre tmux avec un agent Claude. L’allocation de port est basée sur le hash—déterministe à partir du nom de branche, pas de conflits :
hash_val = sum(ord(c) for c in branch_name)
django_port = 8001 + (hash_val % 99)
Six agents, six fonctionnalités, un téléphone.
Ce Que Cela Permet
Réviser des PR en attendant le café. Lancer un refactoring dans le train. Corriger un bug depuis le canapé en regardant la TV.
Le modèle : commencer une tâche qui prendra à Claude 10-20 minutes, faire autre chose, recevoir une notification, répondre, répéter. Le développement s’insère dans les creux de la journée au lieu de nécessiter du temps dédié au bureau.
Les Composants
| Tool | Purpose |
|---|---|
| Vultr | Cloud VM (0,29 $/h, paiement à l’usage) |
| Tailscale | Réseau privé, accès sécurisé |
| Termius | Client SSH pour iOS/Android |
| mosh | Shell résistant au réseau |
| tmux | Persistance de session |
| Poke | Notifications push via webhook |
| Claude Code | Le travail réel |
La configuration a pris une session Claude Code à construire—je lui ai donné ma clé API Vultr et l’accès à gh, demandé une VM de dev sécurisée. Maintenant je code depuis mon téléphone.
Discutez de cet article sur Hacker News