CLAUDE CODE UNTERWEGS

Autor: mgranda
Datum: Januar 2026
  

Ich lasse sechs Claude Code Agenten parallel von meinem Telefon aus laufen. Kein Laptop, kein Desktop—nur Termius auf iOS und eine Cloud-VM.

Das Setup

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

Der Kreislauf ist: eine Aufgabe starten, Telefon in die Tasche, Benachrichtigung erhalten, wenn Claude Input braucht. Asynchrone Entwicklung von überall.

Infrastruktur

Eine Vultr VM in Silicon Valley:

SpecValue
Instancevhf-8c-32gb
Cost$0.29/Std (~$7/Tag im Betrieb)
AccessNur Tailscale (kein öffentliches SSH)

Ich zahle nur, wenn ich arbeite. Zwei Skripte verwalten den Lebenszyklus:

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

Ich habe auch einen iOS Shortcut, der die Vultr API direkt aufruft—starte die VM von meinem Telefon aus, bevor ich überhaupt Termius öffne.

Die öffentliche IP der VM hat keinen SSH-Listener. Alle Zugriffe laufen über das private Netzwerk von Tailscale. Defense in Depth: Cloud-Firewall blockiert alles außer Tailscale-Koordination, lokale nftables als Backup, fail2ban zur Sicherheit.

Mobiles Terminal

Termius handhabt SSH und mosh auf iOS/Android. Mosh ist der Schlüssel—es überlebt Netzwerkwechsel. Von WiFi zu Mobilfunk wechseln, durch eine Funkzone laufen, das Telefon in den Ruhezustand versetzen. Die Verbindung bleibt bestehen.

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

Eine Einschränkung: mosh leitet keinen SSH-Agent weiter. Für Git-Operationen, die GitHub-Authentifizierung benötigen, verwende ich reguläres SSH innerhalb von tmux.

Sitzungspersistenz

Die Shell hängt sich beim Login automatisch an tmux an. Termius schließen, Stunden später wieder öffnen, alles ist noch da.

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

Mehrere Claude-Agenten laufen in parallelen Fenstern. C-a c für neues Fenster, C-a n zum Wechseln. Funktioniert gut auf einer Telefontastatur.

Push-Benachrichtigungen

Das macht mobile Entwicklung praktikabel. Ohne Benachrichtigungen würde man ständig das Terminal überprüfen. Mit ihnen kann man weggehen.

Der Hook in ~/.claude/settings.json:

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

Wenn Claude AskUserQuestion aufruft, wird der Hook ausgelöst. Ein einfaches Skript extrahiert die Frage und POSTet an Pokes Webhook:

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\"}"

Das Telefon vibriert. Die Benachrichtigung zeigt die Frage. Tippen, antworten, weitermachen.

Vertrauensmodell

Ich lasse Claude Code im permissiven Modus laufen. Die VM ist isoliert—kein Zugriff auf Produktionssysteme, keine Geheimnisse außer dem, was für die Entwicklung benötigt wird. Schlimmster Fall: Claude macht etwas Unerwartetes auf einer Wegwerf-VM.

Kostenkontrolle fügt eine weitere Ebene hinzu. Die VM kostet $0.29/Std. Selbst wenn etwas außer Kontrolle gerät, ist die tägliche Obergrenze begrenzt.

Parallele Entwicklung

Git-Worktrees ermöglichen es mir, mehrere Features gleichzeitig zu bearbeiten:

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

Jeder Worktree bekommt sein eigenes tmux-Fenster mit einem Claude-Agenten. Die Portzuweisung ist hash-basiert—deterministisch aus dem Branch-Namen, keine Konflikte:

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

Sechs Agenten, sechs Features, ein Telefon.

Was Das Ermöglicht

PRs überprüfen beim Warten auf Kaffee. Ein Refactoring im Zug starten. Einen Bug vom Sofa aus beheben beim Fernsehen.

Das Muster: eine Aufgabe starten, die Claude 10-20 Minuten dauern wird, etwas anderes machen, benachrichtigt werden, antworten, wiederholen. Entwicklung passt in die Lücken des Tages, anstatt dedizierte Schreibtischzeit zu erfordern.

Die Komponenten

ToolPurpose
VultrCloud VM ($0.29/Std, Pay-per-Use)
TailscalePrivates Netzwerk, sicherer Zugriff
TermiusiOS/Android SSH-Client
moshNetzwerkresistente Shell
tmuxSitzungspersistenz
PokePush-Benachrichtigungen via Webhook
Claude CodeDie eigentliche Arbeit

Das Setup dauerte eine Claude Code Session zum Einrichten—gab ihm meinen Vultr API-Schlüssel und Zugriff auf gh, bat um eine sichere Dev-VM. Jetzt programmiere ich von meinem Telefon aus.


Diskutiere diesen Beitrag auf Hacker News