Skip to main content
OpenClaw は、エージェントワークフロー向けに camera capture をサポートしています。
  • iOS node(Gateway 経由でペアリング): node.invoke写真jpg)または 短い動画クリップmp4、音声は任意)を取得できます
  • Android node(Gateway 経由でペアリング): node.invoke写真jpg)または 短い動画クリップmp4、音声は任意)を取得できます
  • macOS app(Gateway 配下の node): node.invoke写真jpg)または 短い動画クリップmp4、音声は任意)を取得できます
カメラアクセスはすべて ユーザーが制御する設定 の背後にあります。

iOS node

ユーザー設定(デフォルトでオン)

  • iOS の Settings タブ → CameraAllow Cameracamera.enabled
    • デフォルト: on(キー未設定でも有効として扱う)
    • off の場合: camera.* コマンドは CAMERA_DISABLED を返す

コマンド(Gateway の node.invoke 経由)

  • camera.list
    • 応答ペイロード:
      • devices: { id, name, position, deviceType } の配列
  • camera.snap
    • パラメータ:
      • facing: front|back(デフォルト: front
      • maxWidth: number(任意。iOS node のデフォルトは 1600
      • quality: 0..1(任意。デフォルトは 0.9
      • format: 現在は jpg
      • delayMs: number(任意。デフォルトは 0
      • deviceId: string(任意。camera.list で取得)
    • 応答ペイロード:
      • format: "jpg"
      • base64: "<...>"
      • widthheight
    • ペイロード保護: 写真は base64 ペイロードが 5 MB 未満に収まるよう再圧縮される
  • camera.clip
    • パラメータ:
      • facing: front|back(デフォルト: front
      • durationMs: number(デフォルト 3000、最大 60000 にクランプ)
      • includeAudio: boolean(デフォルト true
      • format: 現在は mp4
      • deviceId: string(任意。camera.list で取得)
    • 応答ペイロード:
      • format: "mp4"
      • base64: "<...>"
      • durationMs
      • hasAudio

フォアグラウンド要件

canvas.* と同様に、iOS node では foreground 中のみ camera.* を実行できます。background から呼び出した場合は NODE_BACKGROUND_UNAVAILABLE を返します。

CLI helper(一時ファイル + MEDIA)

添付ファイルとして扱う最も簡単な方法は、デコード済みメディアを一時ファイルへ書き込み、MEDIA:<path> を出力する CLI helper を使うことです。 例:
openclaw nodes camera snap --node <id>               # default: both front + back (2 MEDIA lines)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio
注:
  • nodes camera snap はデフォルトで 両方の向き を取得し、エージェントに front / back 両方の視点を渡します
  • 自前のラッパーを作らない限り、出力ファイルは OS の一時ディレクトリ上のテンポラリファイルです

Android node

Android のユーザー設定(デフォルトでオン)

  • Android の Settings sheet → CameraAllow Cameracamera.enabled
    • デフォルト: on(キー未設定でも有効として扱う)
    • off の場合: camera.* コマンドは CAMERA_DISABLED を返す

権限

  • Android では実行時権限が必要です
    • camera.snapcamera.clip の両方に CAMERA
    • camera.clipincludeAudio=true の場合は RECORD_AUDIO
権限が不足している場合、可能であればアプリが権限要求を出します。拒否された場合、camera.* リクエストは *_PERMISSION_REQUIRED で失敗します。

Android の foreground 要件

canvas.* と同様に、Android node でも foreground 中のみ camera.* を実行できます。background からの呼び出しは NODE_BACKGROUND_UNAVAILABLE を返します。

Android コマンド(Gateway の node.invoke 経由)

  • camera.list
    • 応答ペイロード:
      • devices: { id, name, position, deviceType } の配列

ペイロード保護

写真は base64 ペイロードを 5 MB 未満に抑えるため再圧縮されます。

macOS app

ユーザー設定(デフォルトでオフ)

macOS companion app には次のチェックボックスがあります。
  • Settings → General → Allow Cameraopenclaw.cameraEnabled
    • デフォルト: off
    • off の場合: カメラ要求は “Camera disabled by user” を返す

CLI helper(node invoke)

メインの openclaw CLI を使って、macOS node に camera command を送れます。 例:
openclaw nodes camera list --node <id>            # list camera ids
openclaw nodes camera snap --node <id>            # prints MEDIA:<path>
openclaw nodes camera snap --node <id> --max-width 1280
openclaw nodes camera snap --node <id> --delay-ms 2000
openclaw nodes camera snap --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --duration 10s          # prints MEDIA:<path>
openclaw nodes camera clip --node <id> --duration-ms 3000      # prints MEDIA:<path> (legacy flag)
openclaw nodes camera clip --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --no-audio
注:
  • openclaw nodes camera snap は、未指定時 maxWidth=1600 になります
  • macOS の camera.snap は、warm-up / 露出安定のあと delayMs(デフォルト 2000ms)だけ待ってから撮影します
  • 写真ペイロードは base64 が 5 MB 未満になるよう再圧縮されます

セーフティと実用上の制限

  • カメラおよびマイクの使用時には、通常の OS 権限プロンプトが表示されます(Info.plist の usage string も必要)
  • ノードペイロードの肥大化(base64 オーバーヘッド + メッセージ制限)を避けるため、動画クリップは現在 <= 60s に制限されています

macOS の画面動画(OS レベル)

screen 動画(カメラではなく画面)については、macOS companion を使用します。
openclaw nodes screen record --node <id> --duration 10s --fps 15   # prints MEDIA:<path>
注:
  • macOS の Screen Recording 権限(TCC)が必要です