macOS companion app
Fernsteuerung
Dieser Ablauf lässt die macOS-App als vollständige Fernsteuerung für einen OpenClaw Gateway agieren, der auf einem anderen Host (Desktop/Server) läuft. Es ist die Funktion Remote über SSH (Remote-Ausführung) der App. Alle Funktionen - Integritätsprüfungen, Weiterleitung von Voice Wake und Web Chat - verwenden dieselbe Remote-SSH-Konfiguration aus Einstellungen → Allgemein.
Modi
- Lokal (dieser Mac): Alles läuft auf dem Laptop. Kein SSH beteiligt.
- Remote über SSH (Standard): OpenClaw-Befehle werden auf dem Remote-Host ausgeführt. Die Mac-App öffnet eine SSH-Verbindung mit
-o BatchModeplus Ihrer gewählten Identität/Ihrem gewählten Schlüssel und einer lokalen Port-Weiterleitung. - Remote direkt (ws/wss): Kein SSH-Tunnel. Die Mac-App verbindet sich direkt mit der Gateway-URL (zum Beispiel über Tailscale Serve oder einen öffentlichen HTTPS-Reverse-Proxy).
Remote-Transporte
Der Remote-Modus unterstützt zwei Transporte:
- SSH-Tunnel (Standard): Verwendet
ssh -N -L ..., um den Gateway-Port an localhost weiterzuleiten. Der Gateway sieht die IP des Node als127.0.0.1, weil der Tunnel loopback ist. - Direkt (ws/wss): Verbindet sich direkt mit der Gateway-URL. Der Gateway sieht die echte Client-IP.
Im SSH-Tunnelmodus werden erkannte LAN-/Tailnet-Hostnamen als
gateway.remote.sshTarget gespeichert. Die App belässt gateway.remote.url auf dem lokalen
Tunnel-Endpunkt, zum Beispiel ws://127.0.0.1:18789, sodass CLI, Web Chat und
der lokale Node-Host-Service alle denselben sicheren loopback-Transport verwenden.
Browser-Automatisierung im Remote-Modus gehört dem CLI-Node-Host, nicht dem
nativen macOS-App-Node. Die App startet den installierten Node-Host-Service, wenn
möglich; wenn Sie Browser-Steuerung von diesem Mac benötigen, installieren/starten Sie ihn mit
openclaw node install ... und openclaw node start (oder führen Sie
openclaw node run ... im Vordergrund aus), und zielen Sie dann auf diesen browserfähigen
Node.
Voraussetzungen auf dem Remote-Host
- Installieren Sie Node + pnpm und bauen/installieren Sie die OpenClaw-CLI (
pnpm install && pnpm build && pnpm link --global). - Stellen Sie sicher, dass
openclawfür nicht-interaktive Shells im PATH liegt (bei Bedarf Symlink nach/usr/local/binoder/opt/homebrew/bin). - Öffnen Sie SSH mit Schlüssel-Authentifizierung. Wir empfehlen Tailscale-IPs für stabile Erreichbarkeit außerhalb des LAN.
Einrichtung der macOS-App
- Öffnen Sie Einstellungen → Allgemein.
- Wählen Sie unter OpenClaw läuft die Option Remote über SSH aus und legen Sie fest:
- Transport: SSH-Tunnel oder Direkt (ws/wss).
- SSH-Ziel:
user@host(optional:port).- Wenn sich der Gateway im selben LAN befindet und Bonjour ankündigt, wählen Sie ihn aus der erkannten Liste aus, um dieses Feld automatisch auszufüllen.
- Gateway-URL (nur Direkt):
wss://gateway.example.ts.net(oderws://...für lokal/LAN). - Identitätsdatei (erweitert): Pfad zu Ihrem Schlüssel.
- Projektstamm (erweitert): Remote-Checkout-Pfad, der für Befehle verwendet wird.
- CLI-Pfad (erweitert): Optionaler Pfad zu einem ausführbaren
openclaw-Einstiegspunkt/Binary (wird automatisch ausgefüllt, wenn angekündigt).
- Klicken Sie auf Remote testen. Erfolg zeigt an, dass der Remote-Befehl
openclaw status --jsonkorrekt ausgeführt wird. Fehler bedeuten in der Regel PATH-/CLI-Probleme; Exit-Code 127 bedeutet, dass die CLI remote nicht gefunden wird. - Integritätsprüfungen und Web Chat laufen nun automatisch durch diesen SSH-Tunnel.
Web Chat
- SSH-Tunnel: Web Chat verbindet sich über den weitergeleiteten WebSocket-Steuerport (Standard 18789) mit dem Gateway.
- Direkt (ws/wss): Web Chat verbindet sich direkt mit der konfigurierten Gateway-URL.
- Es gibt keinen separaten WebChat-HTTP-Server mehr.
Berechtigungen
- Der Remote-Host benötigt dieselben TCC-Freigaben wie lokal (Automation, Bedienungshilfen, Bildschirmaufnahme, Mikrofon, Spracherkennung, Mitteilungen). Führen Sie das Onboarding auf diesem Computer aus, um sie einmal zu gewähren.
- Nodes geben ihren Berechtigungsstatus über
node.list/node.describebekannt, damit Agents wissen, was verfügbar ist.
Sicherheitshinweise
- Bevorzugen Sie loopback-Bindings auf dem Remote-Host und verbinden Sie sich über SSH oder Tailscale.
- SSH-Tunneling verwendet strikte Host-Key-Prüfung; vertrauen Sie zuerst dem Host-Key, damit er in
~/.ssh/known_hostsexistiert. - Wenn Sie den Gateway an eine Nicht-loopback-Schnittstelle binden, verlangen Sie gültige Gateway-Authentifizierung: Token, Passwort oder einen identitätsbewussten Reverse-Proxy mit
gateway.auth.mode: "trusted-proxy". - Siehe Sicherheit und Tailscale.
WhatsApp-Anmeldeablauf (remote)
- Führen Sie
openclaw channels login --verboseauf dem Remote-Host aus. Scannen Sie den QR-Code mit WhatsApp auf Ihrem Telefon. - Führen Sie die Anmeldung auf diesem Host erneut aus, wenn die Authentifizierung abläuft. Die Integritätsprüfung zeigt Verbindungsprobleme an.
Fehlerbehebung
- Exit 127 / nicht gefunden:
openclawliegt für Nicht-Login-Shells nicht im PATH. Fügen Sie es zu/etc/paths, Ihrer Shell-RC hinzu, oder symlinken Sie es nach/usr/local/bin//opt/homebrew/bin. - Integritätsprobe fehlgeschlagen: Prüfen Sie SSH-Erreichbarkeit, PATH und ob Baileys angemeldet ist (
openclaw status --json). - Web Chat hängt: Bestätigen Sie, dass der Gateway auf dem Remote-Host läuft und der weitergeleitete Port dem Gateway-WS-Port entspricht; die UI benötigt eine fehlerfreie WS-Verbindung.
- Node-IP zeigt 127.0.0.1: Beim SSH-Tunnel erwartet. Wechseln Sie Transport zu Direkt (ws/wss), wenn der Gateway die echte Client-IP sehen soll.
- Dashboard funktioniert, aber Mac-Fähigkeiten sind offline: Das bedeutet, dass die Operator-/Steuerverbindung der App fehlerfrei ist, aber die Companion-Node-Verbindung nicht verbunden ist oder ihre Befehlsoberfläche fehlt. Öffnen Sie den Gerätebereich in der Menüleiste und prüfen Sie, ob der Mac
paired · disconnectedist. Fürwss://*.ts.net-Tailscale-Serve-Endpunkte erkennt die App veraltete Legacy-TLS-Leaf-Pins nach Zertifikatsrotation, löscht den veralteten Pin, wenn macOS dem neuen Zertifikat vertraut, und versucht es automatisch erneut. Wenn das Zertifikat vom System nicht als vertrauenswürdig eingestuft wird oder der Host kein Tailscale-Serve-Name ist, prüfen Sie das Zertifikat oder wechseln Sie zu Remote über SSH. - Voice Wake: Trigger-Phrasen werden im Remote-Modus automatisch weitergeleitet; kein separater Forwarder ist erforderlich.
Benachrichtigungstöne
Wählen Sie Töne pro Benachrichtigung aus Skripten mit openclaw und node.invoke, z. B.:
openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass
Es gibt in der App keinen globalen Schalter für den „Standardton“ mehr; Aufrufer wählen pro Anfrage einen Ton (oder keinen).