Wendov1.0 · iOS & Android
Nederlands

Leren

Mosh of SSH op je telefoon: welke gebruik je om je agent te volgen

Je start Claude Code op een lange taak, klapt de laptop dicht en gaat op pad. De trein rijdt een tunnel in, je telefoon valt van wifi terug op mobiel en heeft een minuut geen bereik, en als je weer kijkt, is de SSH-sessie dood. Dat is te verwachten: SSH is nooit ontworpen voor een client die om de paar minuten van netwerk wisselt, en Mosh en Eternal Terminal bestaan precies daarvoor.

Hier lees je wat elk van de twee doet, wat er op een telefoon gebeurt en hoe je kiest. Wil je het hele plaatje van een agent vanuit je broekzak bedienen, begin dan met Claude Code gebruiken vanaf je telefoon.

Wat er met SSH op een telefoon gebeurt

SSH draait over een TCP-verbinding, en die verbinding is gebonden aan één IP-adres en één paar sockets. Als je telefoon van wifi naar mobiel gaat, verandert zijn IP en merkt de server dat nooit. De verbinding hangt tot een timeout hem beëindigt. Hetzelfde gebeurt als iOS of Android het netwerk van de app in slaap legt om batterij te sparen, of de app afsluit omdat het geheugen nodig is.

Je verliest meer dan het scherm. Een proces dat aan die SSH-sessie hangt, kan een SIGHUP krijgen en ermee sterven. Daarom is een agent die rechtstreeks vanuit een SSH-shell is gestart kwetsbaar, en daarom is het zusterartikel van dit stuk, tmux voor coding agents, bijna verplicht.

Mosh: UDP en stil opnieuw verbinden

Mosh (mobile shell) gebruikt SSH alleen om te starten. Het authenticeert via SSH, start mosh-server op je computer en praat vanaf dan over UDP. Zonder TCP-verbinding die kan breken, mag de client van IP wisselen, bereik verliezen of slapen, en als het netwerk terug is, is de sessie er nog.

In de praktijk:

  • Je schakelt van wifi naar mobiel en de sessie merkt het niet.
  • Als de server niet meer antwoordt, meldt de app dat in plaats van de sessie te sluiten.
  • Lokale echo met voorspelling: wat je typt wordt meteen getekend, onderstreept, en bevestigd zodra de server antwoordt. Op een trage mobiele verbinding merk je het verschil.

Wat het kost:

  • UDP 60000–61000 moet open staan op je computer (elke sessie neemt één poort uit dat bereik).
  • Geen scrollback. Mosh synchroniseert alleen wat op het scherm staat. Wil je omhoog scrollen en lezen wat de agent heeft afgedrukt, werk dan binnen tmux.
  • Als het besturingssysteem de app afsluit, eindigt de Mosh-sessie en kan ze niet worden hervat.

Eternal Terminal: TCP, maar met hervatten

Eternal Terminal (ET) gaat de andere kant op. Het draait over TCP, standaard op poort 2022, maar houdt een eigen sessiestatus bij, zodat het de verbinding bij een onderbreking opnieuw opbouwt en opnieuw verstuurt wat gemist is. Het heeft een draaiende etserver op je computer nodig en etterminal in het PATH van de SSH-sessie.

Op een telefoon is het voordeel dat het het enige transport in Wendo (op Android) is dat het sluiten van de app overleeft. De sessie verschijnt onder Start en gaat bij het openen verder waar ze was. Wendo noemt ET experimenteel, houd daar rekening mee voordat je erop leunt.

Kort samengevat

  • Schakelt de telefoon van wifi naar mobiel of valt hij in slaap, dan valt SSH weg en houden Mosh en ET stand.
  • Sluit het OS de app af, dan ben je de sessie met SSH en met Mosh kwijt; met ET wordt ze hervat.
  • SSH en ET bewaren scrollback; Mosh niet.
  • SSH en ET lopen over TCP (ET via poort 2022) en Mosh over UDP.
  • Met een Jump Host werkt in Wendo alleen SSH.

mosh-server installeren

Op de computer waar de agent draait:

# macOS
brew install mosh

# Debian / Ubuntu
sudo apt install mosh

# Fedora
sudo dnf install mosh

Controleer dat hij in het PATH van een gewone SSH-verbinding staat, niet alleen in je interactieve terminal:

ssh my-server 'which mosh-server'

Op een Apple Silicon-Mac zet Homebrew hem op /opt/homebrew/bin/mosh-server, wat niet altijd in het PATH van een niet-interactieve sessie staat. Gebeurt dat, dan laat Wendo je het pad naar mosh-server in de verbinding instellen.

Opmerkingen over de firewall

Mosh heeft inkomend UDP 60000–61000 nodig. Op Linux met ufw:

sudo ufw allow 60000:61000/udp

Met firewalld:

sudo firewall-cmd --permanent --add-port=60000-61000/udp
sudo firewall-cmd --reload

Als je computer achter een router staat, forward dat UDP-bereik op dezelfde manier als je poort 22 zou forwarden. Voor ET open je TCP 2022 op dezelfde manier (sudo ufw allow 2022/tcp).

Als je SSH via een proxy of load balancer loopt, kan het UDP van Mosh naar het verkeerde IP gaan. Daarvoor heeft Wendo de optie “Server-IP voor UDP gebruiken”.

Kiezen in Wendo

Als je een verbinding bewerkt, biedt het veld Transport Auto, SSH, MOSH en ET. Bij Auto probeert Wendo eerst Mosh, dan ET, en valt terug op SSH als geen van beide beschikbaar is. Begin met Auto.

Een belangrijke kanttekening: Mosh en ET zitten voorlopig alleen in de Android-versie. Op de iPhone verbindt Wendo altijd via SSH (Auto gaat rechtstreeks via SSH, en als je zelf MOSH of ET kiest, meldt de app dat ze niet beschikbaar zijn op iOS). Gebruik je een iPhone, dan is tmux wat je redt bij onderbrekingen: de verbinding valt weg, maar de agent werkt door en je stapt weer in waar je was.

Een praktische vuistregel op Android:

  • Je loopt rond met de telefoon en sessies duren minuten: Mosh.
  • Je wilt de app sluiten, een uur later terugkomen en de sessie onder Start vinden: ET.
  • Je verbindt via een Jump Host: SSH. Noch Mosh noch ET werkt in Wendo met een Jump Host.
  • Je computer kan geen UDP-poorten openen: ET of SSH.

Mosh en Eternal Terminal zijn functies van Wendo Pro; zonder Pro loopt de verbinding over SSH. De velden worden beschreven in de docs over sessies.

Welk transport je ook kiest, start de agent binnen tmux. Het transport houdt het scherm in leven; tmux houdt het proces in leven en geeft je de scrollback die Mosh mist. De gebruikelijke combinatie is Mosh of ET voor de lijn en tmux voor het werk, en hier is het minimum aan tmux dat je nodig hebt. Om meldingen te krijgen als de agent om toestemming vraagt, zie hooks.