コンテンツにスキップ

OpenClawノード設定ガイド:macOS/iOS/Androidを接続する

WS Nodeはデバイスペアリングを使用します。 Nodeは connect 時にデバイス ID を提示し、Gateway は role: node のデバイスペアリングリクエストを作成します。承認は devices CLI(または UI)から行ってください。

クイック CLI コマンド:

Terminal window
openclaw devices list
openclaw devices approve <requestId>
openclaw devices reject <requestId>
openclaw nodes status
openclaw nodes describe --node <idOrNameOrIp>

Nodeが認証の詳細(role、scopes、public key)を変更して再試行した場合、以前の保留中のリクエストは上書きされ、新しい requestId が作成されます。承認する前に、再度 openclaw devices list を実行して確認してください。

注意点:

  • nodes status は、デバイスペアリングの role に node が含まれている場合に、その Node を paired(ペアリング済み)としてマークします。
  • node.pair.*(CLI: openclaw nodes pending/approve/reject)は、Gateway が所有する別の Node ペアリング用ストレージです。これは WS の connect ハンドシェイクを制限するものではありません。

Gateway をあるマシンで実行し、別のマシンでコマンドを実行したい場合は、Node ホストを使用してください。このモデルでも、通信の相手は Gateway です。host=node が選択されると、Gateway は exec 呼び出しを Node ホストに転送します。

  • Gateway ホスト: メッセージの受信、モデルの実行、ツール呼び出しのルーティングを行います。
  • Node ホスト: Node マシン上で system.run や system.which を実行します。
  • 承認: Node ホスト上の ~/.openclaw/exec-approvals.json を通じて強制されます。

承認に関する注意:

  • 承認が必要な Node での実行は、正確なリクエストコンテキストに紐付けられます。
  • シェルやランタイムファイルの直接実行について、OpenClaw は 1 つの具体的なローカルファイル操作を紐付けようと試みます。実行前にそのファイルが変更された場合、実行は拒否されます。
  • インタープリタやランタイムコマンドに対して、OpenClaw が 1 つの具体的なローカルファイルを特定できない場合、承認ベースの実行は拒否されます。より広範なインタープリタのセマンティクスが必要な場合は、サンドボックス化、別のホストの使用、または明示的な信頼済み allowlist やフルワークフローを検討してください。

Node ホストの起動 (フォアグラウンド)

Section titled “Node ホストの起動 (フォアグラウンド)”

Node マシンで以下を実行します:

Terminal window
openclaw node run --host <gateway-host> --port 18789 --display-name "Build Node"

SSH トンネル経由のリモート Gateway (ループバックバインド)

Section titled “SSH トンネル経由のリモート Gateway (ループバックバインド)”

Gateway がループバック(gateway.bind=loopback、ローカルモードのデフォルト)にバインドされている場合、リモートの Node ホストは直接接続できません。SSH トンネルを作成し、Node ホストをトンネルのローカルエンドに向けてください。

例(Node ホスト -> Gateway ホスト):

Terminal window
# Terminal A (keep running): forward local 18790 -> gateway 127.0.0.1:18789
ssh -N -L 18790:127.0.0.1:18789 user@gateway-host
# Terminal B: export the gateway token and connect through the tunnel
export OPENCLAW_GATEWAY_TOKEN="<gateway-token>"
openclaw node run --host 127.0.0.1 --port 18790 --display-name "Build Node"

注意点:

  • openclaw node run はトークンまたはパスワード認証をサポートしています。
  • 環境変数の使用を推奨します:OPENCLAW_GATEWAY_TOKEN または OPENCLAW_GATEWAY_PASSWORD。
  • 設定のフォールバックは gateway.auth.token または gateway.auth.password です。
  • ローカルモードでは、Node ホストは意図的に gateway.remote.token や gateway.remote.password を無視します。
  • リモートモードでは、リモートの優先順位ルールに従って gateway.remote.token や gateway.remote.password が適用されます。
  • アクティブなローカルの gateway.auth.* SecretRefs が設定されているが解決されない場合、Node ホストの認証は失敗します。
  • Node ホストの認証解決では、OPENCLAW_GATEWAY_* 環境変数のみが考慮されます。
Terminal window
openclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"
openclaw node restart

Gateway ホストで以下を実行します:

Terminal window
openclaw devices list
openclaw devices approve <requestId>
openclaw nodes status

Node が変更された認証詳細で再試行した場合は、再度 openclaw devices list を実行し、現在の requestId を承認してください。

名前付けのオプション:

  • openclaw node run または openclaw node install 時に --display-name を指定(Node 上の ~/.openclaw/node.json に保存されます)。
  • openclaw nodes rename --node &lt;id|name|ip&gt; --name "Build Node"(Gateway 側での上書き)。

実行の承認は Node ホストごとに行われます。Gateway から allowlist エントリを追加してください:

Terminal window
openclaw approvals allowlist add --node &lt;id|name|ip&gt; "/usr/bin/uname"
openclaw approvals allowlist add --node &lt;id|name|ip&gt; "/usr/bin/sw_vers"

承認設定は Node ホストの ~/.openclaw/exec-approvals.json に保存されます。

デフォルト設定(Gateway 設定):

Terminal window
openclaw config set tools.exec.host node
openclaw config set tools.exec.security allowlist
openclaw config set tools.exec.node "<id-or-name>"

またはセッションごとに指定:

/exec host=node security=allowlist node=<id-or-name>

設定が完了すると、host=node を指定した exec 呼び出しは、Node ホスト上で実行されます(Node の allowlist と承認に従います)。

関連情報:

低レベルな操作(生の RPC)を行う場合は、以下のコマンドを使用します。

Terminal window
openclaw nodes invoke --node <idOrNameOrIp> --command canvas.eval --params '{"javaScript":"location.href"}'

一般的な「エージェントに MEDIA 添付ファイルを渡す」ワークフローには、より高レベルなヘルパーが用意されています。

スクリーンショット (Canvas スナップショット)

Section titled “スクリーンショット (Canvas スナップショット)”

Node が Canvas (WebView) を表示している場合、canvas.snapshot は { format, base64 } を返します。

CLI ヘルパー(一時ファイルに書き込み、MEDIA:<path> を出力します):

Terminal window
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format png
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9
Terminal window
openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.com
openclaw nodes canvas hide --node <idOrNameOrIp>
openclaw nodes canvas navigate https://example.com --node <idOrNameOrIp>
openclaw nodes canvas eval --node <idOrNameOrIp> --js "document.title"

注意点:

  • canvas present は URL またはローカルファイルのパス (--target) を受け取ります。また、配置のためにオプションで --x/--y/--width/--height を指定できます。
  • canvas eval はインライン JS (--js) または位置引数を受け取ります。
Terminal window
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"
openclaw nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonl
openclaw nodes canvas a2ui reset --node <idOrNameOrIp>

注意点:

  • A2UI v0.8 JSONL のみがサポートされています(v0.9 や createSurface は拒否されます)。

AI Setup Assistant

写真(jpg)を撮影する方法はこちらです:

Terminal window
openclaw nodes camera list --node <idOrNameOrIp>
openclaw nodes camera snap --node <idOrNameOrIp> # default: both facings (2 MEDIA lines)
openclaw nodes camera snap --node <idOrNameOrIp> --facing front

ビデオクリップ(mp4)を録画する場合はこちらです:

Terminal window
openclaw nodes camera clip --node <idOrNameOrIp> --duration 10s
openclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio

注意点:

  • canvas.* や camera.* を使用する場合、node が フォアグラウンド になっている必要があります(バックグラウンドでの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します)。
  • クリップの長さは、base64 ペイロードが大きくなりすぎないよう制限されています(現在は 60秒以下)。
  • Android では、可能な場合に CAMERA や RECORD_AUDIO の権限を求められます。権限が拒否されると *_PERMISSION_REQUIRED で失敗します。

対応している node では screen.record(mp4)が利用できます。例を見てみましょう:

Terminal window
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio

注意点:

  • screen.record が利用できるかどうかは、node のプラットフォームに依存します。
  • 画面録画は 60秒以下に制限されています。
  • --no-audio を指定すると、対応しているプラットフォームでマイクの録音を無効にします。
  • 複数の画面がある場合は、--screen <index> を使ってディスプレイを選択してください。

設定で位置情報が有効になっている場合、node は location.get を公開します。

CLI ヘルパーの使用例です:

Terminal window
openclaw nodes location get --node <idOrNameOrIp>
openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000

注意点:

  • 位置情報は デフォルトでオフ になっています。
  • 「常に許可」にはシステム権限が必要です。バックグラウンドでの取得はベストエフォートとなります。
  • レスポンスには、緯度・経度、精度(メートル単位)、タイムスタンプが含まれます。

Android node では、ユーザーが SMS 権限を許可し、デバイスが電話機能をサポートしている場合に sms.send を利用できます。

低レベルの呼び出し(invoke)の例です:

Terminal window
openclaw nodes invoke --node <idOrNameOrIp> --command sms.send --params '{"to":"+15555550123","message":"Hello from OpenClaw"}'

注意点:

  • 機能が有効になる前に、Android デバイス上で権限のプロンプトを承認する必要があります。
  • 電話機能のない Wi-Fi 専用デバイスでは、sms.send は利用できません。

Android デバイスと個人データ用コマンド

Section titled “Android デバイスと個人データ用コマンド”

Android Node は、対応する機能(capabilities)が有効になっている場合、追加のコマンドファミリーを公開できます。

利用可能なファミリーは以下の通りです:

  • device.status, device.info, device.permissions, device.health
  • notifications.list, notifications.actions
  • photos.latest
  • contacts.search, contacts.add
  • calendar.events, calendar.add
  • callLog.search
  • sms.search
  • motion.activity, motion.pedometer

実行例:

Terminal window
openclaw nodes invoke --node <idOrNameOrIp> --command device.status --params '{}'
openclaw nodes invoke --node <idOrNameOrIp> --command notifications.list --params '{}'
openclaw nodes invoke --node <idOrNameOrIp> --command photos.latest --params '{"limit":1}'

注意点:

  • モーション関連のコマンドは、利用可能なセンサーによって制限されます。

システムコマンド (node host / mac node)

Section titled “システムコマンド (node host / mac node)”

macOS Node では system.run、system.notify、system.execApprovals.get/set が利用可能です。 ヘッドレスな node host では system.run、system.which、system.execApprovals.get/set が利用可能です。

例:

Terminal window
openclaw nodes notify --node <idOrNameOrIp> --title "Ping" --body "Gateway ready"
openclaw nodes invoke --node <idOrNameOrIp> --command system.which --params '{"name":"git"}'

注意点:

  • system.run はペイロード内で stdout/stderr/exit code を返します。
  • シェルの実行は host=node を指定した exec ツール経由で行われるようになりました。nodes は引き続き、明示的な Node コマンドのための直接的な RPC インターフェースとして機能します。
  • nodes invoke では system.run や system.run.prepare は公開されていません。これらは exec パス専用です。
  • system.notify は macOS アプリ上の通知権限の状態に従います。
  • 認識されない Node の platform / deviceFamily メタデータの場合、system.run や system.which を除外する保守的なデフォルトの allowlist が使用されます。不明なプラットフォームでこれらのコマンドを意図的に使用する必要がある場合は、gateway.nodes.allowCommands を介して明示的に追加してください。
  • system.run は --cwd、--env KEY=VAL、--command-timeout、--needs-screen-recording をサポートしています。
  • シェルラッパー(bash|sh|zsh ... -c/-lc)の場合、リクエストスコープの --env 値は明示的な allowlist(TERM, LANG, LC_*, COLORTERM, NO_COLOR, FORCE_COLOR)に限定されます。
  • allowlist モードでの「常に許可」の決定において、既知のディスパッチラッパー(env, nice, nohup, stdbuf, timeout)は、ラッパーのパスではなく内部の実行ファイルのパスを保持します。アンラップが安全でない場合、allowlist エントリは自動的に保持されません。
  • allowlist モードの Windows node host では、cmd.exe /c を介したシェルラッパーの実行には承認が必要です(allowlist エントリだけではラッパー形式は自動許可されません)。
  • system.notify は --priority &lt;passive|active|timeSensitive&gt; と --delivery &lt;system|overlay|auto&gt; をサポートしています。
  • Node host は PATH の上書きを無視し、危険なスタートアップ/シェルキー(DYLD_*, LD_*, NODE_OPTIONS, PYTHON*, PERL*, RUBYOPT, SHELLOPTS, PS4)を削除します。追加の PATH エントリが必要な場合は、--env で PATH を渡すのではなく、Node host サービスの環境を設定するか、標準的な場所にツールをインストールしてください。
  • macOS Node モードでは、system.run は macOS アプリ内の実行承認(Settings → Exec approvals)によって制限されます。Ask/allowlist/full はヘッドレスな node host と同様に動作し、拒否されたプロンプトは SYSTEM_RUN_DENIED を返します。
  • ヘッドレスな node host では、system.run は実行承認(~/.openclaw/exec-approvals.json)によって制限されます。

複数の Node が利用可能な場合、特定の Node に exec をバインドできます。これにより、exec host=node のデフォルト Node を指定できるようになります。この設定は Agent ごとに個別に上書きすることも可能です。

グローバルなデフォルト設定:

Terminal window
openclaw config set tools.exec.node "node-id-or-name"

Agent ごとの上書き設定:

Terminal window
openclaw config get agents.list
openclaw config set agents.list[0].tools.exec.node "node-id-or-name"

設定を解除して、どの Node でも利用できるようにする場合:

Terminal window
openclaw config unset tools.exec.node
openclaw config unset agents.list[0].tools.exec.node

Node には、node.list や node.describe の中に permissions マップが含まれることがあります。これは権限名(例:screenRecording、accessibility)をキーとし、その権限が与えられているかどうかをブール値(true = 許可済み)で示します。

ヘッドレスノードホスト(クロスプラットフォーム)

Section titled “ヘッドレスノードホスト(クロスプラットフォーム)”

OpenClawでは、UIを持たないヘッドレスノードホストを実行できます。これは Gateway の WebSocket に接続し、system.run や system.which を利用可能にするものです。Linux や Windows での利用、またはサーバーと一緒に最小限のノードを動かしたい場合に便利です。

起動コマンド:

Terminal window
openclaw node run --host <gateway-host> --port 18789

注意点:

  • ペアリングは引き続き必要です(Gateway にデバイスペアリングのプロンプトが表示されます)。
  • ノードホストは、ノード ID、トークン、表示名、Gateway の接続情報を ~/.openclaw/node.json に保存します。
  • 実行の承認は、~/.openclaw/exec-approvals.json を通じてローカルで強制されます(Exec approvals を参照してください)。
  • macOS では、ヘッドレスノードホストはデフォルトで system.run をローカルで実行します。system.run をコンパニオンアプリの実行ホスト経由でルーティングするには OPENCLAW_NODE_EXEC_HOST=app を設定してください。また、アプリホストを必須とし、利用できない場合に失敗させるには OPENCLAW_NODE_EXEC_FALLBACK=0 を追加します。
  • Gateway の WebSocket で TLS を使用する場合は、--tls や --tls-fingerprint を追加してください。
  • macOS のメニューバーアプリは、ノードとして Gateway の WebSocket サーバーに接続します(そのため、この Mac に対して openclaw nodes … を実行できます)。
  • リモートモードでは、アプリが Gateway ポート用の SSH トンネルを開き、localhost に接続します。
OpenClaw

OpenClaw Expert

まだ解決しませんか?

このページで解決しない場合は、OpenClaw Expertに直接質問してください。