Zum Inhalt springen

OpenClaw Android App einrichten: Verbindung zum Gateway

Kennst du das? Du versuchst, dein Smartphone in deinen lokalen Entwicklungs-Workflow einzubinden, aber die Verbindung zwischen Mobile-App und Desktop-Gateway fühlt sich oft wie ein Kampf gegen die Infrastruktur an. Meistens scheitert es an der Discovery oder komplizierten Pairing-Prozessen.

Hier erfährst du, wie du die Android-App als Node nutzt, um dein Device direkt mit dem OpenClaw-Ökosystem zu verbinden.

Hinweis: Die Android-App wurde noch nicht öffentlich veröffentlicht. Der Quellcode ist im OpenClaw Repository unter apps/android verfügbar. Du kannst sie mit Java 17 und dem Android SDK selbst bauen (./gradlew :app:assembleDebug). Siehe apps/android/README.md für die Build-Anleitung.

Die Systemsteuerung (launchd/systemd) läuft auf dem Gateway-Host. Siehe Gateway.

Android node app ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway

Android verbindet sich direkt mit dem Gateway WebSocket (Standard ws://<host>:18789) und nutzt Device-Pairing (role: node).

  • Du kannst das Gateway auf dem “Master”-Rechner ausführen.
  • Das Android-Gerät oder der Emulator kann den Gateway WebSocket erreichen:
    • Im selben LAN via mDNS/NSD, oder
    • Im selben Tailscale-Netzwerk (Tailnet) via Wide-Area Bonjour / Unicast DNS-SD (siehe unten), oder
    • Manuelle Eingabe von Gateway Host/Port (Fallback).
  • Du kannst das CLI (openclaw) auf dem Gateway-Rechner (oder via SSH) nutzen.
Terminal-Fenster
openclaw gateway --port 18789 --verbose

Bestätige in den Logs, dass du etwas wie das hier siehst:

  • listening on ws://0.0.0.0:18789

Für Setups, die nur über das Tailnet laufen (empfohlen für Verbindungen wie Wien ⇄ London), binde das Gateway an die Tailnet-IP:

  • Setze gateway.bind: "tailnet" in ~/.openclaw/openclaw.json auf dem Gateway-Host.
  • Starte das Gateway oder die macOS Menubar-App neu.

Vom Gateway-Rechner aus:

Terminal-Fenster
dns-sd -B _openclaw-gw._tcp local.

Weitere Debugging-Notizen: Bonjour.

Tailnet (Wien ⇄ London) Discovery via Unicast DNS-SD

Abschnitt betitelt „Tailnet (Wien ⇄ London) Discovery via Unicast DNS-SD“

Die Android NSD/mDNS Discovery funktioniert nicht netzwerkübergreifend. Wenn dein Android-Node und das Gateway in verschiedenen Netzwerken sind, aber über Tailscale verbunden sind, nutze stattdessen Wide-Area Bonjour / Unicast DNS-SD:

  1. Richte eine DNS-SD Zone (z. B. openclaw.internal.) auf dem Gateway-Host ein und veröffentliche _openclaw-gw._tcp Records.
  2. Konfiguriere Tailscale Split-DNS für deine gewählte Domain, die auf diesen DNS-Server zeigt.

Details und Beispiel für eine CoreDNS-Konfiguration: Bonjour.

In der Android-App:

  • Die App hält die Verbindung zum Gateway über einen Foreground Service (permanente Benachrichtigung) aufrecht.
  • Öffne den Connect Tab.
  • Nutze den Setup Code oder den Manual Modus.
  • Falls die Discovery blockiert ist, verwende manuellen Host/Port (und TLS/Token/Passwort, falls erforderlich) in den Advanced controls.

Nach dem ersten erfolgreichen Pairing verbindet sich Android beim Start automatisch neu:

  • Manueller Endpoint (falls aktiviert), ansonsten
  • Das zuletzt gefundene Gateway (Best-Effort).

Auf dem Gateway-Rechner:

Terminal-Fenster
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>

Pairing-Details: Pairing.

  • Über den Node-Status:

    Terminal-Fenster
    openclaw nodes status
  • Über das Gateway:

    Terminal-Fenster
    openclaw gateway call node.list --params "{}"

Der Android Chat Tab unterstützt die Auswahl von Sessions (Standard ist main, plus andere existierende Sessions):

  • History: chat.history
  • Senden: chat.send
  • Push-Updates (Best-Effort): chat.subscribe → event:"chat"

Wenn der Node echtes HTML/CSS/JS anzeigen soll, das der Agent auf der Festplatte bearbeiten kann, richte den Node auf den Gateway Canvas Host aus.

Hinweis: Nodes laden den Canvas vom Gateway HTTP-Server (gleicher Port wie gateway.port, Standard 18789).

  1. Erstelle ~/.openclaw/workspace/canvas/index.html auf dem Gateway-Host.

  2. Navigiere den Node dorthin (LAN):

Terminal-Fenster
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18789/__openclaw__/canvas/"}'

Tailnet (optional): Wenn beide Geräte im Tailscale-Netzwerk sind, nutze einen MagicDNS-Namen oder die Tailnet-IP anstatt .local, z. B. http://<gateway-magicdns>:18789/__openclaw__/canvas/.

Dieser Server injiziert einen Live-Reload-Client in das HTML und lädt bei Dateiänderungen neu. Der A2UI-Host ist unter http://<gateway-host>:18789/__openclaw__/a2ui/ erreichbar.

Canvas-Befehle (nur im Vordergrund):

  • canvas.eval, canvas.snapshot, canvas.navigate (nutze {"url":""} oder {"url":"/"}, um zum Standard-Scaffold zurückzukehren). canvas.snapshot gibt { format, base64 } zurück (Standard format="jpeg").
  • A2UI: canvas.a2ui.push, canvas.a2ui.reset (canvas.a2ui.pushJSONL ist ein Legacy-Alias).

Kamera-Befehle (nur im Vordergrund; Berechtigung erforderlich):

  • camera.snap (jpg)
  • camera.clip (mp4)

Siehe Camera node für Parameter und CLI-Helper.

  • Voice: Android nutzt einen einfachen Mic On/Off Flow im Voice Tab mit Transkript-Erfassung und TTS-Wiedergabe (ElevenLabs falls konfiguriert, ansonsten System-TTS Fallback). Voice stoppt, wenn die App den Vordergrund verlässt.
  • Voice Wake/Talk-Mode Toggles sind derzeit aus der Android UX/Runtime entfernt.
  • Zusätzliche Android-Befehlsfamilien (Verfügbarkeit hängt vom Gerät und den Berechtigungen ab):
    • device.status, device.info, device.permissions, device.health
    • notifications.list, notifications.actions
    • photos.latest
    • contacts.search, contacts.add
    • calendar.events, calendar.add
    • callLog.search
    • motion.activity, motion.pedometer

AI Setup Assistant

OpenClaw

OpenClaw Expert

Noch festgefahren?

Wenn diese Seite nicht hilft, frage OpenClaw Expert nach Schritt-fuer-Schritt-Loesungen.