Android-App (Node)¶
Support-Übersicht¶
- Rolle: Companion-Node-App (Android hostet das Gateway nicht).
- Gateway erforderlich: ja (auf macOS, Linux oder Windows via WSL2 ausführen).
- Installation: Erste Schritte + Pairing.
- Gateway: Runbook + Konfiguration.
- Protokolle: Gateway-Protokoll (Nodes + Control Plane).
Systemsteuerung¶
Die Systemsteuerung (launchd/systemd) befindet sich auf dem Gateway-Host. Siehe Gateway.
Verbindungs-Runbook¶
Android-Node-App ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android verbindet sich direkt mit dem Gateway-WebSocket (Standard ws://<host>:18789) und verwendet das vom Gateway verwaltete Pairing.
Voraussetzungen¶
- Sie können das Gateway auf der „Master“-Maschine ausführen.
- Das Android-Gerät/der Emulator kann den Gateway-WebSocket erreichen:
- Gleiches LAN mit mDNS/NSD, oder
- Gleiches Tailscale-Tailnet mit Wide-Area Bonjour / unicast DNS-SD (siehe unten), oder
- Manueller Gateway-Host/-Port (Fallback)
- Sie können die CLI (
openclaw) auf der Gateway-Maschine ausführen (oder per SSH).
1. Gateway starten¶
openclaw gateway --port 18789 --verbose
Bestätigen Sie in den Logs, dass Sie etwa Folgendes sehen:
listening on ws://0.0.0.0:18789
Für reine Tailnet-Setups (empfohlen für Wien ⇄ London) binden Sie das Gateway an die Tailnet-IP:
- Setzen Sie
gateway.bind: "tailnet"in~/.openclaw/openclaw.jsonauf dem Gateway-Host. - Starten Sie das Gateway / die macOS-Menüleisten-App neu.
2. Discovery überprüfen (optional)¶
Von der Gateway-Maschine:
dns-sd -B _openclaw-gw._tcp local.
Weitere Debugging-Hinweise: Bonjour.
Tailnet-(Wien ⇄ London)-Discovery via unicast DNS-SD¶
Android-NSD/mDNS-Discovery funktioniert nicht netzwerkübergreifend. Wenn sich Ihr Android-Node und das Gateway in unterschiedlichen Netzwerken befinden, aber über Tailscale verbunden sind, verwenden Sie stattdessen Wide-Area Bonjour / unicast DNS-SD:
- Richten Sie auf dem Gateway-Host eine DNS-SD-Zone (Beispiel
openclaw.internal.) ein und veröffentlichen Sie_openclaw-gw._tcp-Records. - Konfigurieren Sie Tailscale Split DNS für Ihre gewählte Domain, die auf diesen DNS-Server zeigt.
Details und Beispiel-CoreDNS-Konfiguration: Bonjour.
3. Von Android verbinden¶
In der Android-App:
- Die App hält ihre Gateway-Verbindung über einen Foreground-Service (persistente Benachrichtigung) aufrecht.
- Öffnen Sie Settings.
- Wählen Sie unter Discovered Gateways Ihr Gateway aus und tippen Sie auf Connect.
- Wenn mDNS blockiert ist, verwenden Sie Advanced → Manual Gateway (Host + Port) und Connect (Manual).
Nach dem ersten erfolgreichen Pairing verbindet sich Android beim Start automatisch erneut:
- Manueller Endpunkt (falls aktiviert), andernfalls
- Das zuletzt entdeckte Gateway (Best-Effort).
4. Pairing freigeben (CLI)¶
Auf der Gateway-Maschine:
openclaw nodes pending
openclaw nodes approve <requestId>
Pairing-Details: Gateway-Pairing.
5. Prüfen, ob der Node verbunden ist¶
- Über den Node-Status:
bash
openclaw nodes status
- Über das Gateway:
bash
openclaw gateway call node.list --params "{}"
6. Chat + Verlauf¶
Das Chat-Panel des Android-Nodes verwendet den primären Sitzungsschlüssel des Gateways (main), sodass Verlauf und Antworten mit WebChat und anderen Clients geteilt werden:
- Verlauf:
chat.history - Senden:
chat.send - Push-Updates (Best-Effort):
chat.subscribe→event:"chat"
7. Canvas + Kamera¶
Gateway Canvas Host (empfohlen für Webinhalte)¶
Wenn der Node echtes HTML/CSS/JS anzeigen soll, das der Agent auf der Festplatte bearbeiten kann, verweisen Sie den Node auf den Gateway-Canvas-Host.
Note: nodes load canvas from the Gateway HTTP server (same port as gateway.port, default 18789).
-
Erstellen Sie
~/.openclaw/workspace/canvas/index.htmlauf dem Gateway-Host. -
Navigieren Sie den Node dorthin (LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
Tailnet (optional): Wenn beide Geräte über Tailscale verbunden sind, verwenden Sie einen MagicDNS-Namen oder eine Tailnet-IP statt .local, z. B. http://<gateway-magicdns>:18793/__openclaw__/canvas/.
Dieser Server injiziert einen Live-Reload-Client in HTML und lädt bei Dateiänderungen neu.
Der A2UI-Host befindet sich unter http://<gateway-host>:18793/__openclaw__/a2ui/.
Canvas-Befehle (nur Foreground):
canvas.eval,canvas.snapshot,canvas.navigate(verwenden Sie{"url":""}oder{"url":"/"}, um zur Standard-Scaffold zurückzukehren).canvas.snapshotgibt{ format, base64 }zurück (Standardformat="jpeg").- A2UI:
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLLegacy-Alias)
Kamerabefehle (nur Foreground; berechtigungsabhängig):
camera.snap(jpg)camera.clip(mp4)
Siehe Camera node für Parameter und CLI-Hilfen.