メインコンテンツへスキップ

Android アプリ(ノード)

サポート概要

  • 役割:コンパニオンノードアプリ(Android は Gateway(ゲートウェイ)をホストしません)。
  • Gateway 必須:はい(macOS、Linux、または Windows(WSL2 経由)で実行します)。
  • インストール:Getting Started + Pairing
  • Gateway:Runbook + Configuration
    • プロトコル:Gateway protocol(ノード + コントロールプレーン)。

システム制御

システム制御(launchd / systemd)は Gateway ホスト上にあります。Gateway を参照してください。 Gateway を参照してください。 Gateway を参照してください。

接続ランブック

Android ノードアプリ ⇄(mDNS / NSD + WebSocket)⇄ Gateway Android は Gateway WebSocket(デフォルト ws://<host>:18789)に直接接続し、Gateway が所有するペアリングを使用します。

前提条件

  • 「マスター」マシンで Gateway を実行できること。
  • Android デバイス / エミュレーターが Gateway WebSocket に到達できること:
    • mDNS / NSD を使用した同一 LAN、または
    • Wide-Area Bonjour / unicast DNS-SD を使用した同一 Tailscale tailnet(下記参照)、または
    • 手動でのゲートウェイホスト / ポート指定(フォールバック)
  • ゲートウェイマシン上で CLI(openclaw)を実行できること(または SSH 経由)。

1. Gateway を起動する

openclaw gateway --port 18789 --verbose
ログに次のような出力が表示されることを確認してください:
  • listening on ws://0.0.0.0:18789
tailnet 専用のセットアップ(Vienna ⇄ London には推奨)の場合は、Gateway を tailnet IP にバインドします:
  • ゲートウェイホストの ~/.openclaw/openclaw.jsongateway.bind: "tailnet" を設定します。
  • Gateway / macOS メニューバーアプリを再起動します。

2. 検出を確認する(任意)

ゲートウェイマシンから:
dns-sd -B _openclaw-gw._tcp local.
追加のデバッグノート:Bonjour

unicast DNS-SD による Tailnet(Vienna ⇄ London)検出

Android NSD/mDNSの検出はネットワークを越えません。 Android の NSD / mDNS 検出はネットワークを越えられません。Android ノードと Gateway が異なるネットワーク上にあり、Tailscale で接続されている場合は、Wide-Area Bonjour / unicast DNS-SD を使用してください: Android の NSD / mDNS 検出はネットワークを越えられません。Android ノードと Gateway が異なるネットワーク上にあり、Tailscale で接続されている場合は、Wide-Area Bonjour / unicast DNS-SD を使用してください:
  1. ゲートウェイホストに DNS-SD ゾーン(例:openclaw.internal.)を設定し、_openclaw-gw._tcp レコードを公開します。
  2. 選択したドメインをその DNS サーバーに向けるよう、Tailscale の split DNS を設定します。
詳細および CoreDNS 設定例:Bonjour

3. Android から接続する

Android アプリ内で:
  • アプリは フォアグラウンドサービス(永続通知)により Gateway への接続を維持します。
  • Settings を開きます。
  • Discovered Gateways から対象のゲートウェイを選択し、Connect をタップします。
  • mDNS がブロックされている場合は、Advanced → Manual Gateway(ホスト + ポート)を使用し、Connect (Manual) を選択します。
最初のペアリングが成功すると、Android は起動時に自動再接続します:
  • 手動エンドポイント(有効な場合)、それ以外は
  • 最後に検出されたゲートウェイ(ベストエフォート)。

4. ペアリングを承認する(CLI)

ゲートウェイマシン上で:
openclaw nodes pending
openclaw nodes approve <requestId>
ペアリングの詳細:Gateway pairing

5. ノードが接続されていることを確認する

  • ノードステータスから:
    openclaw nodes status
    
  • Gateway から:
    openclaw gateway call node.list --params "{}"
    

6. チャット + 履歴

Android ノードの Chat シートは、Gateway の primary session keymain)を使用するため、WebChat や他のクライアントと履歴および返信が共有されます:
  • 履歴:chat.history
  • 送信:chat.send
  • プッシュ更新(ベストエフォート):chat.subscribeevent:"chat"

7. Canvas + カメラ

Gateway Canvas Host(Web コンテンツ向けに推奨)

エージェントがディスク上のファイルを編集できる実際の HTML / CSS / JS をノードに表示したい場合は、ノードを Gateway の canvas host に向けてください。 注: ノードは Gateway HTTP サーバー(gateway.port と同じポート、デフォルトは 18789)からキャンバスを読み込みます。
  1. ゲートウェイホスト上に ~/.openclaw/workspace/canvas/index.html を作成します。
  2. ノードからそれにアクセスします(LAN):
openclaw nodes invoke --node "<Android Node>" --command canvas.navigate --params '{"url":"http://<gateway-hostname>.local:18793/__openclaw__/canvas/"}'
tailnet(任意):両方のデバイスが Tailscale 上にある場合は、.local の代わりに MagicDNS 名または tailnet IP を使用します(例:http://<gateway-magicdns>:18793/__openclaw__/canvas/)。 このサーバーは、HTML にライブリロードクライアントを注入し、ファイル変更時にリロードします。 このサーバーは、HTML にライブリロードクライアントを注入し、ファイル変更時にリロードします。 このサーバーは HTML にライブリロードクライアントを注入し、ファイル変更時に再読み込みを行います。 A2UI ホストは http://<gateway-host>:18793/__openclaw__/a2ui/ にあります。 Canvas コマンド(フォアグラウンドのみ):
  • canvas.eval, canvas.snapshot, canvas.navigate (デフォルトの足場に戻るには{"url":""}または{"url":"/"}を使用します)。 canvas.evalcanvas.snapshotcanvas.navigate(デフォルトのスキャフォールドに戻るには {"url":""} または {"url":"/"} を使用します)。canvas.snapshot{ format, base64 }(デフォルト format="jpeg")を返します。 canvas.evalcanvas.snapshotcanvas.navigate(デフォルトのスキャフォールドに戻るには {"url":""} または {"url":"/"} を使用します)。canvas.snapshot{ format, base64 }(デフォルト format="jpeg")を返します。
  • A2UI:canvas.a2ui.pushcanvas.a2ui.resetcanvas.a2ui.pushJSONL はレガシーエイリアス)
カメラコマンド(フォアグラウンドのみ、権限による制御あり):
  • camera.snap(jpg)
  • camera.clip(mp4)
パラメーターおよび CLI ヘルパーについては Camera node を参照してください。