2026 OpenClaw Daemon und Autostart: launchd auf Remote-Mac mit VNC für stabilen Betrieb
25. März 2026 · ca. 12 Min.
Ohne Supervisor stirbt der Prozess mit der SSH-Session. launchd beschreibt Start, Logs und optional Neustart – ideal für OpenClaw auf einem VNC-Remote-Mac. Pfad via which openclaw, plist mit plutil -lint prüfen, launchctl bootstrap gui/$(id -u) laden, Ports und stderr beobachten. KeepAlive erst nach stabiler Konfiguration.
Auf gemieteten Maschinen addieren sich Risiken: andere Nutzer auf demselben Host, wechselnde IP-Adressen, Provider-Wartungsfenster. Ein sauber versioniertes plist in Git (ohne Secrets) plus kurze Runbook-Notizen reduziert Panik, wenn nachts der Gateway-Port „plötzlich“ weg ist—meistens ist es ein Prompt, kein Netzwerk.
Schmerzpunkte ohne Daemon
- SSH weg, Prozess weg—tmux hilft, ersetzt aber keine Restart-Politik.
- Schlafmodus oder Energieprofile killen Listener ohne klare Logzeile.
- Keychain-Dialoge blockieren still, wenn niemand in der GUI klickt.
- Fehlende Stderr-Datei erschwert Postmortems für das On-Call-Team.
- Doppelte Jobs erzeugen Portkonflikte und nicht-deterministisches Verhalten.
Matrix
| Methode | Einsatz | Autostart | Crash-Recovery | Audit |
|---|---|---|---|---|
| Vordergrund | Debug | Nein | Nein | Niedrig |
| tmux | Mittelfristig | Skript nötig | Manuell | Mittel |
| cron | Periodisch | Zeitplan | Ungeeignet für Dauer-Gateway | Mittel |
| LaunchAgent | Nach Login | RunAtLoad | Optional KeepAlive | Hoch |
Schritte
~/Library/LaunchAgents/com.example.openclaw.plist anlegen.<?xml version="1.0" encoding="UTF-8"?> <plist version="1.0"><dict> <key>Label</key><string>com.example.openclaw</string> <key>ProgramArguments</key><array> <string>/opt/homebrew/bin/openclaw</string><string>gateway</string> </array> <key>RunAtLoad</key><true/> <key>StandardOutPath</key><string>/tmp/openclaw.out.log</string> <key>StandardErrorPath</key><string>/tmp/openclaw.err.log</string> </dict></plist>
WorkingDirectory, Umgebung und keine Geheimnisse im Klartext
Setzen Sie WorkingDirectory, wenn OpenClaw relative Pfade für Konfiguration oder Skills nutzt—so entspricht das Verhalten Ihrer interaktiven Shell. Über EnvironmentVariables ergänzen Sie nur unkritische Werte wie einen erweiterten PATH für Homebrew oder Node-Versionmanager. API-Schlüssel gehören nicht in world-readable plists auf gemieteten Hosts; nutzen Sie Schlüsselbund, restriktive Dateirechte oder die Secrets-Strategie Ihres Teams.
KeepAlive, ThrottleInterval und Neustart-Stürme
Fehlt ein Token oder eine Datei, beendet sich der Prozess sofort—mit KeepAlive entsteht eine enge Restart-Schleife, die Logs flutet und die eigentliche Ursache verbirgt. Erst stabil ohne KeepAlive laufen lassen, stderr sauber lesen, dann optional Drosselung laut Apple-Dokumentation ergänzen. Rotieren oder begrenzen Sie Loggrößen, damit ein Wochenendfehler nicht die Partition füllt.
VNC-First-Triage, wenn launchctl „grün“ wirkt
Der Job kann geladen sein, während Tastatur-/Bedienungshilfen- oder Festplattenzugriff fehlt oder ein Dialog hinter der Sitzung wartet. Prüfen Sie dieselben Systemeinstellungen wie auf einem lokalen Mac. SSH zeigt diese Zustände selten explizit; die VNC-Session ist auf gemieteter Hardware meist der schnellste Weg zur Wahrheit.
Rollback-Playbook (Runbook-Auszug)
- Letzte 200 stderr-Zeilen und aktuelle plist sichern.
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/com.example.openclaw.plist(Domain anpassen).- OpenClaw interaktiv unter VNC stabilisieren, argv mit plist vergleichen.
- Nach
plutil -lintund Review erneut bootstrappen.
Upgrade-Tag-Checkliste
Pfade, Standardkonfigurationsordner oder Unterbefehle können sich ändern. Vorgehen: einmal interaktiv unter VNC starten, Dialoge schließen, funktionierende argv notieren, plist aktualisieren, Job neu laden, stderr-Zeilen pro Minute vor/nach dem Upgrade vergleichen. Ohne klaren „Owner“ des plist riskieren gemietete Mehrbenutzer-Maschinen Überschreibkonflikte.
Minimales Monitoring ohne teures APM
Reicht oft: regelmäßig launchctl print-Exitcode, Timestamp der stderr-Datei und ein HTTP-Check auf die Konsole. Prüfen Sie auch freien Speicherplatz—KeepAlive-Loops mit großen Logs füllen Volumes schneller als erwartet.
Portkonflikte, Doppelstarts und klare Betriebsregeln
Wenn dasselbe Label zweimal geladen wird oder ein manueller Prozess parallel zu launchd auf demselben Port lauscht, tauchen oft nur sporadische bind-Fehler auf—ohne dass sofort klar ist, welcher Prozess „gewinnt“. Vereinbaren Sie eine einfache Regel: entweder immer nur launchd oder zum Debuggen zuerst bootout, bevor Sie interaktiv starten. Ein kurzes Shared-Doc mit Zuordnung Port → erwarteter Prozess spart beim Onboarding neuer Kolleg:innen Stunden und verhindert widersprüchliche „Fixes“ nachts.
Sicherheitsgrundlinie für Gateways auf gemieteten Hosts
Ob der Listener auf 0.0.0.0 gebunden wird oder ausschließlich hinter SSH-Tunneln erreichbar ist, hängt vom Threat Model ab. Selbst wenn Sie glauben, nur Sie nutzten die Maschine, sind schwache VNC-Passwörter und wiederverwendete Secrets ein klassischer Weg zur Kompromittierung. Halten Sie API-Token und langlebige Schlüssel aus world-readable plists heraus und schreiben Sie diese zwei Sätze ganz oben ins Runbook—später dankt Ihnen die Person, die um drei Uhr morgens debuggt.
Weiterlesen
Häufige Fehler, Migration 2026.3.x, VNC-Guide.
Fazit
VNCMac Remote-Mac mit VNC plus launchd-Checkliste: weniger Blindflug bei Prompts, klarere Logs, näher an einem echten Schreibtisch-Mac.