Application Android (nœud)¶
Aperçu du support¶
- Rôle : application de nœud compagnon (Android n’héberge pas la Gateway).
- Gateway requise : oui (exécutez-la sur macOS, Linux ou Windows via WSL2).
- Installation : Premiers pas + Appairage.
- Gateway : Runbook + Configuration.
- Protocoles : Protocole de la Gateway (nœuds + plan de contrôle).
Contrôle système¶
Le contrôle système (launchd/systemd) réside sur l’hôte de la Gateway. Voir Gateway.
Runbook de connexion¶
Application nœud Android ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android se connecte directement au WebSocket de la Gateway (par défaut ws://<host>:18789) et utilise l’appairage détenu par la Gateway.
Prérequis¶
- Vous pouvez exécuter la Gateway sur la machine « maître ».
- L’appareil/émulateur Android peut atteindre le WebSocket de la Gateway :
- Même LAN avec mDNS/NSD, ou
- Même tailnet Tailscale en utilisant Wide-Area Bonjour / DNS-SD unicast (voir ci-dessous), ou
- Hôte/port de la Gateway saisis manuellement (solution de secours)
- Vous pouvez exécuter la CLI (
openclaw) sur la machine de la Gateway (ou via SSH).
1. Démarrer la Gateway¶
openclaw gateway --port 18789 --verbose
Confirmez dans les logs que vous voyez quelque chose comme :
listening on ws://0.0.0.0:18789
Pour des configurations uniquement via tailnet (recommandé pour Vienne ⇄ Londres), liez la Gateway à l’IP du tailnet :
- Définissez
gateway.bind: "tailnet"dans~/.openclaw/openclaw.jsonsur l’hôte de la Gateway. - Redémarrez la Gateway / l’app de barre de menus macOS.
2. Vérifier la découverte (optionnel)¶
Depuis la machine de la Gateway :
dns-sd -B _openclaw-gw._tcp local.
Notes de débogage supplémentaires : Bonjour.
Découverte via DNS-SD unicast du tailnet (Vienne ⇄ Londres)¶
La découverte Android NSD/mDNS ne traverse pas les réseaux. Si votre nœud Android et la Gateway sont sur des réseaux différents mais connectés via Tailscale, utilisez plutôt Wide-Area Bonjour / DNS-SD unicast :
- Configurez une zone DNS-SD (exemple
openclaw.internal.) sur l’hôte de la Gateway et publiez des enregistrements_openclaw-gw._tcp. - Configurez le split DNS Tailscale pour votre domaine choisi en pointant vers ce serveur DNS.
Détails et exemple de configuration CoreDNS : Bonjour.
3. Se connecter depuis Android¶
Dans l’application Android :
- L’application maintient la connexion à la Gateway via un service au premier plan (notification persistante).
- Ouvrez Paramètres.
- Sous Gateways découvertes, sélectionnez votre Gateway et appuyez sur Connecter.
- Si mDNS est bloqué, utilisez Avancé → Gateway manuelle (hôte + port) et Connecter (manuel).
Après le premier appairage réussi, Android se reconnecte automatiquement au lancement :
- Point de terminaison manuel (s’il est activé), sinon
- La dernière Gateway découverte (meilleur effort).
4. Approuver l’appairage (CLI)¶
Sur la machine de la Gateway :
openclaw nodes pending
openclaw nodes approve <requestId>
Détails de l’appairage : Appairage de la Gateway.
5. Vérifier que le nœud est connecté¶
- Via l’état des nœuds :
bash
openclaw nodes status
- Via la Gateway :
bash
openclaw gateway call node.list --params "{}"
6. Chat + historique¶
La feuille Chat du nœud Android utilise la clé de session primaire de la Gateway (main), de sorte que l’historique et les réponses sont partagés avec WebChat et les autres clients :
- Historique :
chat.history - Envoi :
chat.send - Mises à jour push (meilleur effort) :
chat.subscribe→event:"chat"
7. Canvas + caméra¶
Hôte Canvas de la Gateway (recommandé pour le contenu web)¶
Si vous souhaitez que le nœud affiche de vrais HTML/CSS/JS que l’agent peut modifier sur disque, pointez le nœud vers l’hôte Canvas de la Gateway.
Note: nodes load canvas from the Gateway HTTP server (same port as gateway.port, default 18789).
-
Créez
~/.openclaw/workspace/canvas/index.htmlsur l’hôte de la Gateway. -
Naviguez le nœud vers celui-ci (LAN) :
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
Tailnet (optionnel) : si les deux appareils sont sur Tailscale, utilisez un nom MagicDNS ou une IP de tailnet à la place de .local, par exemple http://<gateway-magicdns>:18793/__openclaw__/canvas/.
Ce serveur injecte un client de rechargement à chaud dans le HTML et recharge lors des modifications de fichiers.
L’hôte A2UI se trouve à http://<gateway-host>:18793/__openclaw__/a2ui/.
Commandes Canvas (premier plan uniquement) :
canvas.eval,canvas.snapshot,canvas.navigate(utilisez{"url":""}ou{"url":"/"}pour revenir à l’échafaudage par défaut).canvas.snapshotrenvoie{ format, base64 }(par défautformat="jpeg").- A2UI :
canvas.a2ui.push,canvas.a2ui.reset(canvas.a2ui.pushJSONLalias hérité)
Commandes caméra (premier plan uniquement ; permissions requises) :
camera.snap(jpg)camera.clip(mp4)
Voir Nœud caméra pour les paramètres et les aides CLI.