Nodes and media
Pengambilan gambar kamera
OpenClaw mendukung pengambilan gambar kamera untuk alur kerja agen pada node iOS, Android, dan macOS yang telah dipasangkan: ambil foto (jpg) atau klip video pendek (mp4, dengan audio opsional) melalui Gateway node.invoke.
Semua akses kamera dibatasi oleh pengaturan yang dikendalikan pengguna pada setiap platform.
Node iOS
Pengaturan pengguna iOS
- Tab Settings iOS → Camera → Allow Camera (
camera.enabled).- Bawaan: aktif (kunci yang tidak ada dianggap aktif).
- Saat nonaktif: perintah
camera.*mengembalikanCAMERA_DISABLED.
Perintah iOS (melalui Gateway node.invoke)
-
camera.list- Payload respons:
devices— larik{ id, name, position, deviceType }.
- Payload respons:
-
camera.snap- Parameter:
facing:front|back(bawaan:front)maxWidth: angka (opsional; bawaan1600)quality:0..1(opsional; bawaan0.9, dibatasi ke[0.05, 1.0])format: saat inijpgdelayMs: angka (opsional; bawaan0, secara internal dibatasi maksimum10000)deviceId: string (opsional; daricamera.list)
- Payload respons:
format: "jpg",base64,width,height. - Pembatas payload: foto dikompresi ulang agar payload yang dikodekan dengan base64 tetap di bawah 5 MB.
- Parameter:
-
camera.clip- Parameter:
facing:front|back(bawaan:front)durationMs: angka (bawaan3000, dibatasi ke[250, 60000])includeAudio: boolean (bawaantrue)format: saat inimp4deviceId: string (opsional; daricamera.list)
- Payload respons:
format: "mp4",base64,durationMs,hasAudio.
- Parameter:
Persyaratan latar depan iOS
Seperti canvas.*, node iOS hanya mengizinkan perintah camera.* saat berada di latar depan. Pemanggilan di latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.
Pembantu CLI
Cara termudah untuk mendapatkan berkas media adalah melalui pembantu CLI, yang menulis media hasil dekode ke berkas sementara dan mencetak jalur penyimpanannya.
openclaw nodes camera snap --node <id> # bawaan: kamera depan + belakang (2 baris MEDIA)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audionodes camera snap secara bawaan menggunakan --facing both, mengambil gambar dari kamera depan dan belakang untuk memberikan kedua tampilan kepada agen; berikan --device-id dengan satu arah kamera eksplisit (both ditolak ketika --device-id ditetapkan). Berkas keluaran bersifat sementara (di direktori sementara OS), kecuali Anda membuat pembungkus sendiri.
Node Android
Pengaturan pengguna Android
- Panel Settings Android → Camera → Allow Camera (
camera.enabled).- Instalasi baru secara bawaan dinonaktifkan. Instalasi lama yang mendahului pengaturan ini dimigrasikan menjadi aktif agar peningkatan versi tidak secara diam-diam menghilangkan akses kamera yang sebelumnya berfungsi.
- Saat nonaktif: perintah
camera.*mengembalikanCAMERA_DISABLED: enable Camera in Settings.
Izin
CAMERAdiperlukan untukcamera.snapdancamera.clip; izin yang tidak ada/ditolak mengembalikanCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOdiperlukan untukcamera.clipketikaincludeAudiobernilaitrue; izin yang tidak ada/ditolak mengembalikanMIC_PERMISSION_REQUIRED.
Aplikasi meminta izin waktu proses jika memungkinkan.
Persyaratan latar depan Android
Seperti canvas.*, node Android hanya mengizinkan perintah camera.* saat berada di latar depan. Pemanggilan di latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE: command requires foreground.
Perintah Android (melalui Gateway node.invoke)
-
camera.list- Payload respons:
devices— larik{ id, name, position, deviceType }.
- Payload respons:
-
camera.snap- Parameter:
facing(front|back, bawaanfront),quality(bawaan0.95, dibatasi ke[0.1, 1.0]),maxWidth(bawaan1600),deviceId(opsional; id yang tidak dikenal gagal denganINVALID_REQUEST). - Payload respons:
format: "jpg",base64,width,height. - Pembatas payload: dikompresi ulang agar base64 tetap di bawah 5 MB (batas yang sama dengan iOS).
- Parameter:
-
camera.clip- Parameter:
facing(bawaanfront),durationMs(bawaan3000, dibatasi ke[200, 60000]),includeAudio(bawaantrue),deviceId(opsional). - Payload respons:
format: "mp4",base64,durationMs,hasAudio. - Pembatas payload: MP4 mentah dibatasi hingga 18 MB sebelum pengodean base64; klip yang terlalu besar gagal dengan
PAYLOAD_TOO_LARGE(kurangidurationMsdan coba lagi).
- Parameter:
Aplikasi macOS
Pengaturan pengguna macOS
Aplikasi pendamping macOS menyediakan kotak centang:
- Settings → General → Allow Camera (
openclaw.cameraEnabled).- Bawaan: nonaktif.
- Saat nonaktif: permintaan kamera mengembalikan
CAMERA_DISABLED: enable Camera in Settings.
Pembantu CLI (pemanggilan node)
Gunakan CLI utama openclaw untuk memanggil perintah kamera pada node macOS.
openclaw nodes camera list --node <id> # mencantumkan id kameraopenclaw nodes camera snap --node <id> # mencetak jalur penyimpananopenclaw nodes camera snap --node <id> --max-width 1280openclaw nodes camera snap --node <id> --delay-ms 2000openclaw nodes camera snap --node <id> --device-id <id>openclaw nodes camera clip --node <id> --duration 10s # mencetak jalur penyimpananopenclaw nodes camera clip --node <id> --duration-ms 3000 # mencetak jalur penyimpanan (flag lama)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioopenclaw nodes camera snapsecara bawaan menggunakanmaxWidth=1600, kecuali ditimpa.camera.snapmenunggu selamadelayMs(bawaan 2000 md, dibatasi ke[0, 10000]) setelah pemanasan/penyesuaian pencahayaan selesai sebelum mengambil gambar.- Payload foto dikompresi ulang agar base64 tetap di bawah 5 MB.
Keamanan + batas praktis
- Akses kamera dan mikrofon memicu permintaan izin OS seperti biasa (dan memerlukan string penggunaan dalam
Info.plist). - Klip video dibatasi hingga 60 detik untuk menghindari payload node yang terlalu besar (overhead base64 ditambah batas pesan).
Video layar macOS (tingkat OS)
Untuk video layar (bukan kamera), gunakan aplikasi pendamping macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # mencetak jalur penyimpananMemerlukan izin Screen Recording macOS (TCC).