OpenClawノード設定ガイド:macOS/iOS/Androidを接続する
ペアリングとステータス
Section titled “ペアリングとステータス”WS Nodeはデバイスペアリングを使用します。 Nodeは connect 時にデバイス ID を提示し、Gateway は role: node のデバイスペアリングリクエストを作成します。承認は devices CLI(または UI)から行ってください。
クイック CLI コマンド:
openclaw devices listopenclaw devices approve <requestId>openclaw devices reject <requestId>openclaw nodes statusopenclaw 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ハンドシェイクを制限するものではありません。
リモート Node ホスト (system.run)
Section titled “リモート Node ホスト (system.run)”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 マシンで以下を実行します:
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 A (keep running): forward local 18790 -> gateway 127.0.0.1:18789ssh -N -L 18790:127.0.0.1:18789 user@gateway-host
# Terminal B: export the gateway token and connect through the tunnelexport 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_*環境変数のみが考慮されます。
Node ホストの起動 (サービス)
Section titled “Node ホストの起動 (サービス)”openclaw node install --host <gateway-host> --port 18789 --display-name "Build Node"openclaw node restartペアリングと名前付け
Section titled “ペアリングと名前付け”Gateway ホストで以下を実行します:
openclaw devices listopenclaw devices approve <requestId>openclaw nodes statusNode が変更された認証詳細で再試行した場合は、再度 openclaw devices list を実行し、現在の requestId を承認してください。
名前付けのオプション:
openclaw node runまたはopenclaw node install時に--display-nameを指定(Node 上の~/.openclaw/node.jsonに保存されます)。openclaw nodes rename --node <id|name|ip> --name "Build Node"(Gateway 側での上書き)。
コマンドの allowlist 登録
Section titled “コマンドの allowlist 登録”実行の承認は Node ホストごとに行われます。Gateway から allowlist エントリを追加してください:
openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/uname"openclaw approvals allowlist add --node <id|name|ip> "/usr/bin/sw_vers"承認設定は Node ホストの ~/.openclaw/exec-approvals.json に保存されます。
exec の実行先を Node に向ける
Section titled “exec の実行先を Node に向ける”デフォルト設定(Gateway 設定):
openclaw config set tools.exec.host nodeopenclaw config set tools.exec.security allowlistopenclaw config set tools.exec.node "<id-or-name>"またはセッションごとに指定:
/exec host=node security=allowlist node=<id-or-name>設定が完了すると、host=node を指定した exec 呼び出しは、Node ホスト上で実行されます(Node の allowlist と承認に従います)。
関連情報:
コマンドの実行
Section titled “コマンドの実行”低レベルな操作(生の RPC)を行う場合は、以下のコマンドを使用します。
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> を出力します):
openclaw nodes canvas snapshot --node <idOrNameOrIp> --format pngopenclaw nodes canvas snapshot --node <idOrNameOrIp> --format jpg --max-width 1200 --quality 0.9Canvas の操作
Section titled “Canvas の操作”openclaw nodes canvas present --node <idOrNameOrIp> --target https://example.comopenclaw 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) または位置引数を受け取ります。
A2UI (Canvas)
Section titled “A2UI (Canvas)”openclaw nodes canvas a2ui push --node <idOrNameOrIp> --text "Hello"openclaw nodes canvas a2ui push --node <idOrNameOrIp> --jsonl ./payload.jsonlopenclaw nodes canvas a2ui reset --node <idOrNameOrIp>注意点:
- A2UI v0.8 JSONL のみがサポートされています(v0.9 や createSurface は拒否されます)。
次のステップ
Section titled “次のステップ”写真と動画 (node camera)
Section titled “写真と動画 (node camera)”写真(jpg)を撮影する方法はこちらです:
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)を録画する場合はこちらです:
openclaw nodes camera clip --node <idOrNameOrIp> --duration 10sopenclaw nodes camera clip --node <idOrNameOrIp> --duration 3000 --no-audio注意点:
canvas.*やcamera.*を使用する場合、node が フォアグラウンド になっている必要があります(バックグラウンドでの呼び出しはNODE_BACKGROUND_UNAVAILABLEを返します)。- クリップの長さは、base64 ペイロードが大きくなりすぎないよう制限されています(現在は 60秒以下)。
- Android では、可能な場合に
CAMERAやRECORD_AUDIOの権限を求められます。権限が拒否されると*_PERMISSION_REQUIREDで失敗します。
画面録画 (nodes)
Section titled “画面録画 (nodes)”対応している node では screen.record(mp4)が利用できます。例を見てみましょう:
openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10openclaw nodes screen record --node <idOrNameOrIp> --duration 10s --fps 10 --no-audio注意点:
screen.recordが利用できるかどうかは、node のプラットフォームに依存します。- 画面録画は 60秒以下に制限されています。
--no-audioを指定すると、対応しているプラットフォームでマイクの録音を無効にします。- 複数の画面がある場合は、
--screen <index>を使ってディスプレイを選択してください。
位置情報 (nodes)
Section titled “位置情報 (nodes)”設定で位置情報が有効になっている場合、node は location.get を公開します。
CLI ヘルパーの使用例です:
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000注意点:
- 位置情報は デフォルトでオフ になっています。
- 「常に許可」にはシステム権限が必要です。バックグラウンドでの取得はベストエフォートとなります。
- レスポンスには、緯度・経度、精度(メートル単位)、タイムスタンプが含まれます。
SMS (Android nodes)
Section titled “SMS (Android nodes)”Android node では、ユーザーが SMS 権限を許可し、デバイスが電話機能をサポートしている場合に sms.send を利用できます。
低レベルの呼び出し(invoke)の例です:
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.healthnotifications.list,notifications.actionsphotos.latestcontacts.search,contacts.addcalendar.events,calendar.addcallLog.searchsms.searchmotion.activity,motion.pedometer
実行例:
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 が利用可能です。
例:
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 <passive|active|timeSensitive>と--delivery <system|overlay|auto>をサポートしています。- 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)によって制限されます。
Exec ノードのバインド
Section titled “Exec ノードのバインド”複数の Node が利用可能な場合、特定の Node に exec をバインドできます。これにより、exec host=node のデフォルト Node を指定できるようになります。この設定は Agent ごとに個別に上書きすることも可能です。
グローバルなデフォルト設定:
openclaw config set tools.exec.node "node-id-or-name"Agent ごとの上書き設定:
openclaw config get agents.listopenclaw config set agents.list[0].tools.exec.node "node-id-or-name"設定を解除して、どの Node でも利用できるようにする場合:
openclaw config unset tools.exec.nodeopenclaw config unset agents.list[0].tools.exec.nodePermissions マップ
Section titled “Permissions マップ”Node には、node.list や node.describe の中に permissions マップが含まれることがあります。これは権限名(例:screenRecording、accessibility)をキーとし、その権限が与えられているかどうかをブール値(true = 許可済み)で示します。
ヘッドレスノードホスト(クロスプラットフォーム)
Section titled “ヘッドレスノードホスト(クロスプラットフォーム)”OpenClawでは、UIを持たないヘッドレスノードホストを実行できます。これは Gateway の WebSocket に接続し、system.run や system.which を利用可能にするものです。Linux や Windows での利用、またはサーバーと一緒に最小限のノードを動かしたい場合に便利です。
起動コマンド:
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を追加してください。
Macノードモード
Section titled “Macノードモード”- macOS のメニューバーアプリは、ノードとして Gateway の WebSocket サーバーに接続します(そのため、この Mac に対して
openclaw nodes …を実行できます)。 - リモートモードでは、アプリが Gateway ポート用の SSH トンネルを開き、
localhostに接続します。
OpenClaw Expert
まだ解決しませんか?
このページで解決しない場合は、OpenClaw Expertに直接質問してください。