Android アプリ
Android ノードアプリ:接続手順 + Canvas / Chat / Camera。
サポート概要
- 役割:コンパニオンノードアプリ(Android は Gateway をホストしません)。
- Gateway 必須:はい(macOS、Linux、または Windows (WSL2) で実行)。
- インストール参照:''Getting Started'' + ''Pairing''。
- Gateway reference: ''Runbook'' + ''Configuration''.
- プロトコル:''Gateway protocol''(ノード ↔ 制御プレーン)。
システム制御
システムレベル制御(launchd/systemd)は Gateway ホストで行われます。''Gateway'' を参照してください。
接続ガイド(Runbook)
Android ノードアプリ ⇄ (mDNS/NSD + WebSocket) ⇄ Gateway
Android connects directly to Gateway WebSocket (default ws://<host>:18789) and uses the pairing mechanism managed by Gateway.
#
Prerequisites
- Gateway を「メイン」マシンで実行できます。
- Android デバイス/エミュレータが gateway WebSocket にアクセスできます:
- 同じ LAN、mDNS/NSD で発見、または
- 同じ Tailscale tailnet、Wide-Area Bonjour / unicast DNS-SD 経由(下記参照)、または
- 手動の gateway host/port 入力(フォールバック)
- Gateway マシンで CLI(openclaw)を実行できます(または SSH 経由)。
#
1) Gateway を起動
openclaw gateway --port 18789 --verbose
ログに以下のようなものが表示されることを確認してください:
- listening on ws://0.0.0.0:18789
tailnet 専用デプロイメント(例:Vienna ⇄ London、推奨)の場合、Gateway を tailnet IP にバインドします:
- Gateway ホストの ~/.openclaw/openclaw.json で ~/.openclaw/openclaw.json を設定します。
- Gateway / macOS メニューバーアプリを再起動します。
#
2) 発見を検証(オプション)
Tailnet (Vienna ⇄ London) unicast DNS-SD 経由の発見
Android の NSD/mDNS 発見はネットワークを越えられません。Android ノードと gateway が同じネットワークにないが、Tailscale 経由で接続されている場合、Wide-Area Bonjour / unicast DNS-SD を使用します:
1. Gateway ホストで DNS-SD zone を設定します(例:openclaw.internal.)し、_openclaw-gw._tcp レコードを公開します。
2. Tailscale でそのドメインのスプリット DNS を設定し、DNS サーバーを指します。
詳細と CoreDNS の例については、''Bonjour'' を参照してください。
#
3) Android から接続
Android アプリで:
- アプリは フォアグラウンドサービス(永続的な通知)経由で gateway との接続を維持します。
- Settings を開きます。
- Discovered Gateways で gateway を選択し、Connect をタップします。
- mDNS がブロックされている場合、Advanced → Manual Gateway(host + port)を使用し、Connect (Manual) をタップします。
初期ペアリングが成功した後、Android は起動時に自動的に再接続を試みます:
- 手動エンドポイントが有効な場合、手動エンドポイントを優先します;それ以外の場合
- 最後に発見された gateway に再接続を試みます(ベストエフォート)。
#
4) ペアリングを承認(CLI)
Gateway マシンで:
openclaw nodes pending openclaw nodes approve <requestId>
ペアリングの詳細:''/gateway/pairing''。
#
5) ノードが接続されていることを確認
- ノードステータス:
- Via Gateway:
PlatformsAndroidPage step 10: P3
6) Chat と履歴同期
Android ノードの Chat ページは gateway の プライマリセッションキー(main)を使用するため、チャット履歴と返信は WebChat などのクライアントと共有されます:
- History: chat.history
- Send: chat.send
- プッシュ更新(ベストエフォート):chat.subscribe → event:"chat"
#
7) Canvas + カメラ
##
Gateway Canvas Host(Web コンテンツ表示推奨)
ノードで実際の HTML/CSS/JS(Agent がディスク上で編集)を表示したい場合、ノードを Gateway canvas host に接続します。
注意:ノードはポート canvasHost.port(デフォルト 18793)の別の canvas host を使用します。
1. Gateway ホストで ~/.openclaw/workspace/canvas/index.html を作成します。
2. ノードをそれに移動させます(LAN):
Tailnet (optional): If both devices are on Tailscale, use MagicDNS or tailnet IP instead of .local, e.g., http://<gateway-magicdns>:18793/__openclaw__/canvas/.
This service injects a live-reload client into the HTML and auto-refreshes on file changes. A2UI host is at http://<gateway-host>:18793/__openclaw__/a2ui/.
Canvas コマンド(フォアグラウンドのみ):
- canvas.eval、canvas.snapshot、canvas.navigate('{"url":""}' または '{"url":"/"}' を使用してデフォルトのスキャフォールドに戻ります)。canvas.snapshot は '{ format, base64 }' を返します(デフォルト format="jpeg")。
- A2UI:canvas.a2ui.push、canvas.a2ui.reset(古いエイリアス canvas.a2ui.pushJSONL も使用可能)
カメラコマンド(フォアグラウンドのみ;権限制御):
- camera.snap (jpg)
- camera.clip (mp4)
パラメータと CLI ヘルパーについては、''Camera node'' を参照してください。