Claude Code Survoje

Mi rulas ses Claude Code agentojn paralele de mia telefono. Neniu tekkomputilo, neniu labortabla komputilo—nur Termius sur iOS kaj nuba VM.

La Agordo

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 ciklo estas: lanĉi taskon, enpoŝigi la telefonon, ricevi sciigon kiam Claude bezonas enigon. Nesinkrona programado de ie ajn.

Infrastrukturo

Vultr VM en Silicon Valley:

SpecValue
Instancevhf-8c-32gb
Cost$0.29/horo (~$7/tage dum rulado)
AccessNur Tailscale (neniu publika SSH)

Mi pagas nur dum laborado. Du skriptoj administras la vivciklon:

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

Mi ankaŭ havas iOS Shortcut kiu rekte vokas la Vultr API—startigas la VM de mia telefono antaŭ ol mi eĉ malfermas Termius.

La publika IP de la VM havas neniun SSH-aŭskultanton. Ĉiu aliro iras tra la privata reto de Tailscale. Profunda defendo: nuba fajrobarilo blokas ĉion krom Tailscale-koordinado, loka nftables kiel savkopio, fail2ban por sekureco.

Portebla Terminalo

Termius traktas SSH kaj mosh sur iOS/Android. Mosh estas la ŝlosilo—ĝi pluvivas rettransitojn. Ŝanĝi de WiFi al ĉela reto, promeni tra senzono, endormigi la telefonon. La konekto persistas.

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

Unu kapto: mosh ne plusendas SSH-agenton. Por git-operacioj kiuj bezonas GitHub-aŭtentikigon, mi uzas regulan SSH ene de tmux.

Seancpersisto

La ŝelo aŭtomate aliĝas al tmux dum ensaluto. Fermu Termius, remalfermu horojn poste, ĉio ankoraŭ tie estas.

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

Pluraj Claude-agentoj rulas en paralelaj fenestroj. C-a c por nova fenestro, C-a n por cikli. Funkcias bone sur telefona klavaro.

Puŝsciigoj

Jen kio praktigas porteblan programadon. Sen sciigoj, vi konstante kontrolus la terminalon. Kun ili, vi povas foriri.

La hoko en ~/.claude/settings.json:

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

Kiam Claude vokas AskUserQuestion, la hoko ekfunkcias. Simpla skripto ekstraktas la demandon kaj POST-as al la 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\"}"

Telefono vibras. Sciigo montras la demandon. Tuŝetu, respondu, daŭrigu.

Fidmodelo

Mi rulas Claude Code en permesa reĝimo. La VM estas izolita—neniu aliro al produktaj sistemoj, neniuj sekretoj preter kio necesas por programado. Plej malbona kazo: Claude faras ion neatenditan sur forĵetebla VM.

Kostkontrolon aldonas alian tavolon. La VM kostas $0.29/horo. Eĉ se io eskapis, la taga limo estas limigita.

Paralela Programado

Git worktrees ebligas al mi ruli plurajn funkciojn samtempе:

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

Ĉiu worktree ricevas sian propran tmux-fenestron kun Claude-agento. Porda asigno estas haketbazita—determinisma el branĉnomo, neniuj konfliktoj:

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

Ses agentoj, ses funkcioj, unu telefono.

Kion Ĉi Tio Ebligas

Kontroli PR-ojn dum atendado de kafo. Lanĉi refaktorigon en trajno. Ripari cimon de kanapo dum rigardado de televidilo.

La ŝablono: komenci taskon kiu prenos al Claude 10-20 minutojn, fari ion alian, ricevi sciigon, respondi, ripeti. Programado enkadriiĝas en la breĉojn de la tago anstataŭ postuli dediĉitan labortablan tempon.

La Komponentoj

ToolPurpose
VultrNuba VM ($0.29/horo, pago laŭuze)
TailscalePrivata reto, sekura aliro
TermiusiOS/Android SSH-kliento
moshRet-rezista ŝelo
tmuxSeancpersisto
PokePuŝsciigoj per webhook
Claude CodeLa efektiva laboro

La agordo bezonis unu Claude Code-seancon por konstrui—donis al ĝi mian Vultr API-ŝlosilon kaj aliron al gh, petis sekuran programadan VM. Nun mi kodigas de mia telefono.


Diskutu ĉi tiun artikolon sur Hacker News