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).- Default: 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(default:front)maxWidth: angka (opsional; default1600)quality:0..1(opsional; default0.9, dibatasi ke[0.05, 1.0])format: saat inijpgdelayMs: angka (opsional; default0, 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 5MB.
- Parameter:
-
camera.clip- Parameter:
facing:front|back(default:front)durationMs: angka (default3000, dibatasi ke[250, 60000])includeAudio: boolean (defaulttrue)format: saat inimp4deviceId: string (opsional; daricamera.list)
- Payload respons:
format: "mp4",base64,durationMs,hasAudio.
- Parameter:
Persyaratan latar depan iOS
Seperticanvas.*, node iOS hanya mengizinkan perintah camera.* di latar depan. Pemanggilan di latar belakang mengembalikan NODE_BACKGROUND_UNAVAILABLE.
Pembantu CLI
Cara termudah untuk memperoleh berkas media adalah melalui pembantu CLI, yang menulis media hasil dekode ke berkas sementara dan mencetak jalur penyimpanannya.nodes camera snap secara default menggunakan --facing both, mengambil gambar dari kamera depan dan belakang untuk memberikan kedua tampilan kepada agen; teruskan --device-id dengan satu arah kamera eksplisit (both ditolak ketika --device-id ditetapkan). Berkas keluaran bersifat sementara (di direktori sementara OS), kecuali jika Anda membuat pembungkus sendiri.
Node Android
Pengaturan pengguna Android
- Lembar Settings Android → Camera → Allow Camera (
camera.enabled).- Instalasi baru secara default nonaktif. Instalasi yang sudah ada sebelum pengaturan ini tersedia 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.snapmaupuncamera.clip; izin yang tidak ada/ditolak mengembalikanCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOdiperlukan untukcamera.clipketikaincludeAudiobernilaitrue; izin yang tidak ada/ditolak mengembalikanMIC_PERMISSION_REQUIRED.
Persyaratan latar depan Android
Seperticanvas.*, node Android hanya mengizinkan perintah camera.* 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, defaultfront),quality(default0.95, dibatasi ke[0.1, 1.0]),maxWidth(default1600),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 5MB (batas yang sama seperti iOS).
- Parameter:
-
camera.clip- Parameter:
facing(defaultfront),durationMs(default3000, dibatasi ke[200, 60000]),includeAudio(defaulttrue),deviceId(opsional). - Payload respons:
format: "mp4",base64,durationMs,hasAudio. - Pembatas payload: MP4 mentah dibatasi maksimum 18MB 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).- Default: nonaktif.
- Saat nonaktif: permintaan kamera mengembalikan
CAMERA_DISABLED: enable Camera in Settings.
Pembantu CLI (pemanggilan node)
Gunakan CLI utamaopenclaw untuk memanggil perintah kamera pada node macOS.
openclaw nodes camera snapsecara default menggunakanmaxWidth=1600kecuali ditimpa.camera.snapmenunggudelayMs(default 2000ms, dibatasi ke[0, 10000]) setelah pemanasan/penstabilan eksposur sebelum mengambil gambar.- Payload foto dikompresi ulang agar base64 tetap di bawah 5MB.
Host node Linux
Plugin Node Linux bawaan menambahkan pengambilan gambar kamera ke layanan CLIopenclaw node. Plugin ini berfungsi pada host tanpa antarmuka grafis dan tidak memerlukan aplikasi desktop Linux.
Akses kamera secara default nonaktif. Aktifkan di bawah entri plugin, lalu mulai ulang layanan node agar pengumuman Gateway-nya dibuat ulang:
- FFmpeg dengan input V4L2,
libx264, dan dukungan AAC - perangkat
/dev/video*yang dapat dibaca oleh pengguna layanan node; pada distribusi umum, tambahkan pengguna tersebut ke grupvideo - untuk klip dengan
includeAudio: truedefault, server PulseAudio yang berfungsi atau lapisan kompatibilitas PulseAudio PipeWire dengan sumber default
camera.list; FFmpeg memeriksa setiap kandidat /dev/video* dan mengabaikan node metadata atau node khusus keluaran. position perangkat adalah unknown, sehingga permintaan arah kamera tanpa deviceId menghasilkan satu foto atau klip dengan posisi unknown, alih-alih mengklaim kamera depan atau belakang. Gunakan deviceId ketika host memiliki beberapa kamera. camera.snap menggunakan pemanasan input FFmpeg selama delayMs dan mempertahankan rasio aspek sambil membatasi lebar. camera.clip merekam audio mikrofon sebagai trek audio MP4; OpenClaw secara sengaja tidak menyediakan perintah mikrofon mandiri.
Plugin menggunakan libx264 untuk video MP4 dan tidak mengubah codec secara diam-diam. Build FFmpeg tanpa input atau encoder yang diperlukan mengembalikan CAMERA_UNAVAILABLE. Foto dan klip yang akan melampaui batas payload base64 sebesar 25MB gagal dengan PAYLOAD_TOO_LARGE.
camera.snap dan camera.clip tetap merupakan perintah berbahaya. Tambahkan perintah tersebut ke gateway.nodes.allowCommands hanya jika Anda bermaksud mengaktifkan pengambilan; mengaktifkan plugin saja tidak melewati kebijakan Gateway.
Keamanan + batas praktis
- Akses kamera dan mikrofon memicu permintaan izin OS seperti biasa (dan memerlukan string penggunaan dalam
Info.plist). - Klip video dibatasi maksimum 60s untuk menghindari payload node yang terlalu besar (overhead base64 ditambah batas pesan).