この記事をシェア
AIアシスタントは便利だが、現実世界とのインターフェースがない。テキストを読んで、テキストを返す。それだけだ。
でも、「今どこにいる?」と聞かれたらGPSで位置を返し、「部屋の様子見せて」と言われたらカメラで撮影して見せる——そんなAIがいたら?
OpenClawのNodes機能は、まさにそれを実現する。スマートフォンやMacをAIの「周辺機器」として接続し、AIが現実世界にアクセスできるようにする仕組みだ。
本記事では、Nodes機能の全貌を実際のコマンド例・設定ファイル・ユースケースとともに徹底解説する。
Nodesとは何か
Node(ノード)とは、OpenClawのGatewayに接続するコンパニオンデバイスのこと。iPhone、Androidスマホ、Mac、またはLinux/Windowsマシンを「ノード」としてペアリングすると、AIがそのデバイスの機能を直接操作できるようになる。
アーキテクチャ概要
┌─────────────────┐
│ あなた (Slack) │
└────────┬────────┘
│ メッセージ
▼
┌─────────────────┐
│ OpenClaw │
│ Gateway │◄──── WebSocket ────┐
└────────┬────────┘ │
│ API呼び出し │
▼ │
┌─────────────────┐ ┌──────┴──────┐
│ Claude API │ │ Nodes │
│ (Anthropic) │ │ ・iPhone │
└─────────────────┘ │ ・Mac │
│ ・Android │
└─────────────┘
重要なポイント:
- Gatewayが司令塔 — すべてのメッセージはGatewayを経由する
- NodesはWebSocket接続 — ノードはGatewayのWSサーバーに接続し、コマンドを待ち受ける
- ノードは周辺機器 — ノード自身はAIを実行しない。Gatewayからの指示を受けて動作する
できること一覧
| 機能 | コマンド | 対応デバイス | 備考 |
|---|---|---|---|
| 📷 写真撮影 | camera.snap |
iOS, Android, Mac | 前面・背面カメラ選択可 |
| 🎬 動画クリップ | camera.clip |
iOS, Android, Mac | 最大60秒、音声ON/OFF可 |
| 📍 位置情報 | location.get |
iOS, Android, Mac | 精度選択可(coarse/precise) |
| 🖥️ 画面録画 | screen.record |
iOS, Android, Mac | 最大60秒 |
| 🔔 通知送信 | system.notify |
Mac | プッシュ通知 |
| ⚡ コマンド実行 | system.run |
Mac, Linux, Windows | 承認制(allowlist) |
| 📱 SMS送信 | sms.send |
Android | 権限要 |
| 🎨 Canvas表示 | canvas.* |
iOS, Android, Mac | WebView制御 |
セットアップ手順
Step 1: Gatewayの準備
まずOpenClawのGatewayが起動していることを確認:
# Gatewayのステータス確認
openclaw gateway status
# 起動していない場合
openclaw gateway start
Step 2: ノードアプリのインストール
iPhoneの場合
- App Storeで「OpenClaw」を検索
- インストール後、アプリを起動
- GatewayのホストとポートをIPアドレスまたは設定を入力
Androidの場合
- Google Playで「OpenClaw」を検索
- インストール後、アプリを起動
- Gatewayへの接続情報を入力
Macの場合(メニューバーアプリ)
# Homebrewでインストール
brew install --cask openclaw
# またはnpmで(ヘッドレスモード)
npm install -g openclaw
openclaw node run --host localhost --port 18789 --display-name "My Mac"
Linux/Windows(ヘッドレスノードホスト)
# ノードホストとして起動
openclaw node run --host <gateway-ip> --port 18789 --display-name "Build Server"
# サービスとして常駐させる場合
openclaw node install --host <gateway-ip> --port 18789 --display-name "Build Server"
openclaw node restart
Step 3: ペアリングの承認
ノードが接続を試みると、Gateway側で承認が必要:
# 保留中のペアリングリクエストを確認
openclaw nodes pending
# 出力例:
# ID Name Type Status
# 550e8400-e29b-41d4-a716-446655440000 iPhone 15 ios pending
# 6ba7b810-9dad-11d1-80b4-00c04fd430c8 MacBook Pro macos pending
# 承認
openclaw nodes approve 550e8400-e29b-41d4-a716-446655440000
# または名前で承認
openclaw nodes approve --name "iPhone 15"
Step 4: 接続確認
# 接続中のノード一覧
openclaw nodes list --connected
# ノードの詳細情報
openclaw nodes describe --node "iPhone 15"
# 出力例:
# Node: iPhone 15
# ID: 550e8400-e29b-41d4-a716-446655440000
# Type: ios
# Status: connected
# Capabilities: camera.snap, camera.clip, location.get, canvas.*
# Permissions:
# camera: granted
# location: whileUsing
# microphone: granted
カメラ撮影の実践
写真撮影(camera.snap)
# 前面カメラで撮影
openclaw nodes camera snap --node "iPhone 15" --facing front
# 背面カメラで撮影
openclaw nodes camera snap --node "iPhone 15" --facing back
# 両方のカメラで撮影(デフォルト)
openclaw nodes camera snap --node "iPhone 15"
# → 2つのMEDIA:パスが出力される
# 解像度を指定
openclaw nodes camera snap --node "iPhone 15" --max-width 1280
# 撮影前の遅延(セルフタイマー)
openclaw nodes camera snap --node "iPhone 15" --delay-ms 3000
出力例
MEDIA:/tmp/openclaw-camera-1708234567-front.jpg
MEDIA:/tmp/openclaw-camera-1708234567-back.jpg
動画クリップ(camera.clip)
# 10秒の動画を撮影
openclaw nodes camera clip --node "iPhone 15" --duration 10s
# 音声なしで撮影
openclaw nodes camera clip --node "iPhone 15" --duration 5s --no-audio
# 前面カメラで撮影
openclaw nodes camera clip --node "iPhone 15" --facing front --duration 3s
制限事項
- 最大60秒(base64エンコードのサイズ制限のため)
- アプリがフォアグラウンドでないと使用不可
- 権限がない場合は
CAMERA_PERMISSION_REQUIREDエラー
AIとの会話例
あなた: 「外の天気どんな感じ?写真撮って見せて」
AI: [iPhoneの背面カメラで撮影]
「撮影しました。曇り空で、少し雨がぱらついているようですね。
傘を持っていった方が良さそうです。気温も低そうなので、
上着もあった方がいいかもしれません。」
位置情報の取得
基本的な取得
# 位置情報を取得
openclaw nodes location get --node "iPhone 15"
# 精度を指定
openclaw nodes location get --node "iPhone 15" --accuracy precise
openclaw nodes location get --node "iPhone 15" --accuracy coarse
openclaw nodes location get --node "iPhone 15" --accuracy balanced
# タイムアウトを指定
openclaw nodes location get --node "iPhone 15" --location-timeout 10000
出力例(JSON)
{
"lat": 35.6896,
"lon": 139.6921,
"accuracyMeters": 12.5,
"altitudeMeters": 40.2,
"speedMps": 0.0,
"headingDeg": 270.0,
"timestamp": "2026-02-18T12:34:56.000Z",
"isPrecise": true,
"source": "gps"
}
位置情報の設定(ノード側)
位置情報はデフォルトでオフ。ノードアプリの設定で有効化が必要:
| 設定値 | 意味 | 備考 |
|---|---|---|
off |
位置情報無効 | デフォルト |
whileUsing |
アプリ使用中のみ | フォアグラウンド時のみ |
always |
常時許可 | バックグラウンドでも取得可能 |
画面録画
基本的な録画
# 10秒間の画面録画
openclaw nodes screen record --node "MacBook Pro" --duration 10s
# フレームレートを指定
openclaw nodes screen record --node "MacBook Pro" --duration 10s --fps 15
# 音声なし
openclaw nodes screen record --node "MacBook Pro" --duration 10s --no-audio
# 特定のディスプレイを指定(複数モニター環境)
openclaw nodes screen record --node "MacBook Pro" --duration 10s --screen 1
制限事項
- 最大60秒
- macOSでは画面収録の権限(TCC)が必要
- iOS/Androidではシステムのスクリーンキャプチャ許可プロンプトが表示される
- アプリがフォアグラウンドでないと使用不可
リモートコマンド実行
Macノードまたはヘッドレスノードホストでは、system.runを使ってシェルコマンドを実行できる。
基本的な実行
# 単純なコマンド
openclaw nodes run --node "MacBook Pro" -- echo "Hello from remote Mac"
# 複雑なコマンド(--raw オプション)
openclaw nodes run --node "MacBook Pro" --raw "git status && npm test"
# 作業ディレクトリを指定
openclaw nodes run --node "MacBook Pro" --cwd /path/to/project -- git pull
# 環境変数を設定
openclaw nodes run --node "MacBook Pro" --env NODE_ENV=production -- npm start
セキュリティ:コマンド承認(Allowlist)
system.runは承認制。許可されていないコマンドは実行できない。
# 許可リストに追加(Gateway側から)
openclaw approvals allowlist add --node "MacBook Pro" "/usr/bin/git"
openclaw approvals allowlist add --node "MacBook Pro" "/usr/local/bin/npm"
# 許可リストを確認
openclaw approvals list --node "MacBook Pro"
# パターンで許可(危険:慎重に)
openclaw approvals allowlist add --node "MacBook Pro" "/usr/bin/*"
ノード側の承認ファイル
承認情報はノード側の~/.openclaw/exec-approvals.jsonに保存される:
{
"allowlist": [
"/usr/bin/git",
"/usr/local/bin/npm",
"/usr/bin/echo"
],
"denylist": [
"/bin/rm",
"/usr/bin/sudo"
],
"mode": "allowlist"
}
Gatewayの設定でノードをデフォルトに
# execコマンドをノード経由に設定
openclaw config set tools.exec.host node
openclaw config set tools.exec.node "MacBook Pro"
openclaw config set tools.exec.security allowlist
これにより、AIがexecツールを使う際に自動的にノード経由で実行される。
通知送信
Macノードに対してプッシュ通知を送信できる。
# 基本的な通知
openclaw nodes notify --node "MacBook Pro" --title "リマインダー" --body "15時からミーティング"
# 優先度を指定
openclaw nodes notify --node "MacBook Pro" \
--title "緊急" \
--body "サーバーダウン検知" \
--priority timeSensitive
# 配信方法を指定
openclaw nodes notify --node "MacBook Pro" \
--title "完了" \
--body "バックアップ完了" \
--delivery overlay
優先度オプション
| 値 | 説明 |
|---|---|
passive | 静かに通知(バッジのみ) |
active | 通常の通知 |
timeSensitive | 緊急通知(集中モードでも表示) |
セキュリティ設計
Nodes機能は強力だが、プライバシーへの配慮が設計に組み込まれている。
フォアグラウンド必須
カメラ(camera.*)と画面録画(screen.record)は、ノードアプリがフォアグラウンドでないと使用できない。バックグラウンドでの無断撮影は技術的に不可能。
エラー例:
NODE_BACKGROUND_UNAVAILABLE: The node app must be in the foreground to use camera commands.
権限はユーザー管理
各機能はノードアプリの設定で個別に有効/無効を切り替えられる:
- カメラ: デフォルトON(アプリ設定でOFF可能)
- 位置情報: デフォルトOFF(明示的に有効化が必要)
- 画面録画: OS権限が必要
- コマンド実行: Allowlist制
ペアリング承認
すべてのノードは接続時にGateway側での承認が必要。勝手にノードを接続して悪用することはできない。
設定リファレンス
Gateway設定(~/.openclaw/config.yaml)
# ノード関連の設定
tools:
exec:
host: node # exec をノード経由に
node: "MacBook Pro" # デフォルトのノード名
security: allowlist # allowlist | full | deny
# ノードの接続設定(通常は自動)
gateway:
port: 18789
wsPort: 18789 # WebSocketポート(ノード接続用)
ノード設定(~/.openclaw/node.json)
{
"nodeId": "550e8400-e29b-41d4-a716-446655440000",
"displayName": "MacBook Pro",
"gatewayHost": "192.168.1.100",
"gatewayPort": 18789,
"token": "xxxxx"
}
実行承認(~/.openclaw/exec-approvals.json)
{
"mode": "allowlist",
"allowlist": [
"/usr/bin/git",
"/usr/local/bin/npm",
"/usr/bin/echo",
"/bin/ls"
],
"denylist": [
"/bin/rm",
"/usr/bin/sudo",
"/usr/sbin/*"
]
}
トラブルシューティング
ノードが接続できない
# Gatewayのステータス確認
openclaw gateway status
# WSポートが開いているか確認
lsof -i :18789
# ファイアウォールの確認(macOS)
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --listapps
カメラが使えない
エラー: CAMERA_DISABLED
→ ノードアプリの設定で「Allow Camera」を有効にする
エラー: CAMERA_PERMISSION_REQUIRED
→ OS設定でアプリにカメラ権限を付与する
エラー: NODE_BACKGROUND_UNAVAILABLE
→ ノードアプリをフォアグラウンドに持ってくる
位置情報が取得できない
エラー: LOCATION_DISABLED
→ ノードアプリの設定でLocationを「While Using」または「Always」に変更
エラー: LOCATION_TIMEOUT
→ GPS信号が弱い場所にいる可能性。屋外で再試行するか、--accuracy coarseを試す
コマンドが実行できない
エラー: SYSTEM_RUN_DENIED
→ コマンドがallowlistに含まれていない。openclaw approvals allowlist addで追加
まとめ
OpenClawのNodes機能は、AIアシスタントを「テキストだけの存在」から「現実世界にアクセスできる存在」へと拡張する。
- カメラ — 写真・動画の撮影で「目」を持つ
- 位置情報 — GPSで「今どこにいるか」を知る
- 画面録画 — デスクトップの操作を記録
- コマンド実行 — リモートマシンで作業を代行
- 通知 — プロアクティブに情報を伝える
セットアップは少し手間がかかるが、一度設定すれば「写真撮って」「今どこ?」「Macで〇〇実行して」といった自然な会話でAIに指示できるようになる。
詳細は公式ドキュメント https://docs.openclaw.ai/nodes を参照。
