Nodes and media
Acquisizione dalla fotocamera
OpenClaw supporta la cattura da fotocamera per i flussi di lavoro degli agenti:
- Node iOS (associato tramite Gateway): cattura una foto (
jpg) o una breve clip video (mp4, con audio opzionale) tramitenode.invoke. - Node Android (associato tramite Gateway): cattura una foto (
jpg) o una breve clip video (mp4, con audio opzionale) tramitenode.invoke. - App macOS (Node tramite Gateway): cattura una foto (
jpg) o una breve clip video (mp4, con audio opzionale) tramitenode.invoke.
Tutto l’accesso alla fotocamera è protetto da impostazioni controllate dall’utente.
Node iOS
Impostazione utente (attiva per impostazione predefinita)
- Scheda Impostazioni iOS → Fotocamera → Consenti fotocamera (
camera.enabled)- Predefinito: attivo (una chiave mancante viene trattata come abilitata).
- Quando è disattivo: i comandi
camera.*restituisconoCAMERA_DISABLED.
Comandi (tramite Gateway node.invoke)
-
camera.list- Payload della risposta:
devices: array di{ id, name, position, deviceType }
- Payload della risposta:
-
camera.snap- Parametri:
facing:front|back(predefinito:front)maxWidth: numero (opzionale; predefinito1600sul Node iOS)quality:0..1(opzionale; predefinito0.9)format: attualmentejpgdelayMs: numero (opzionale; predefinito0)deviceId: stringa (opzionale; dacamera.list)
- Payload della risposta:
format: "jpg"base64: "<...>"width,height
- Protezione del payload: le foto vengono ricompresse per mantenere il payload base64 sotto 5 MB.
- Parametri:
-
camera.clip- Parametri:
facing:front|back(predefinito:front)durationMs: numero (predefinito3000, limitato a un massimo di60000)includeAudio: booleano (predefinitotrue)format: attualmentemp4deviceId: stringa (opzionale; dacamera.list)
- Payload della risposta:
format: "mp4"base64: "<...>"durationMshasAudio
- Parametri:
Requisito di primo piano
Come canvas.*, il Node iOS consente i comandi camera.* solo in primo piano. Le invocazioni in background restituiscono NODE_BACKGROUND_UNAVAILABLE.
Helper CLI
Il modo più semplice per ottenere file multimediali è tramite l’helper CLI, che scrive i media decodificati in un file temporaneo e stampa il percorso salvato.
Esempi:
openclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audioNote:
nodes camera snapusa come predefiniti entrambi gli orientamenti per fornire all’agente entrambe le viste.- I file di output sono temporanei (nella directory temporanea del sistema operativo), a meno che tu non crei un wrapper personalizzato.
Node Android
Impostazione utente Android (attiva per impostazione predefinita)
- Foglio Impostazioni Android → Fotocamera → Consenti fotocamera (
camera.enabled)- Predefinito: attivo (una chiave mancante viene trattata come abilitata).
- Quando è disattivo: i comandi
camera.*restituisconoCAMERA_DISABLED.
Autorizzazioni
- Android richiede autorizzazioni di runtime:
CAMERAsia percamera.snapsia percamera.clip.RECORD_AUDIOpercamera.clipquandoincludeAudio=true.
Se le autorizzazioni mancano, l’app le richiederà quando possibile; se vengono negate, le richieste camera.* non riescono con un errore
*_PERMISSION_REQUIRED.
Requisito di primo piano su Android
Come canvas.*, il nodo Android consente i comandi camera.* solo in primo piano. Le invocazioni in background restituiscono NODE_BACKGROUND_UNAVAILABLE.
Comandi Android (tramite Gateway node.invoke)
camera.list- Payload di risposta:
devices: array di{ id, name, position, deviceType }
- Payload di risposta:
Protezione del payload
Le foto vengono ricompresse per mantenere il payload base64 sotto i 5 MB.
App macOS
Impostazione utente (disattivata per impostazione predefinita)
L'app companion macOS espone una casella di controllo:
- Settings → General → Allow Camera (
openclaw.cameraEnabled)- Valore predefinito: disattivato
- Quando è disattivata: le richieste della fotocamera restituiscono "Fotocamera disattivata dall'utente".
Helper CLI (node invoke)
Usa la CLI principale openclaw per invocare i comandi della fotocamera sul nodo macOS.
Esempi:
openclaw nodes camera list --node <id> # list camera idsopenclaw nodes camera snap --node <id> # prints saved pathopenclaw 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 # prints saved pathopenclaw nodes camera clip --node <id> --duration-ms 3000 # prints saved path (legacy flag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioNote:
openclaw nodes camera snapusa per impostazione predefinitamaxWidth=1600, salvo override.- Su macOS,
camera.snapattendedelayMs(valore predefinito 2000 ms) dopo il riscaldamento e l'assestamento dell'esposizione prima di acquisire. - I payload delle foto vengono ricompressi per mantenere base64 sotto i 5 MB.
Sicurezza + limiti pratici
- L'accesso a fotocamera e microfono attiva le consuete richieste di autorizzazione del sistema operativo (e richiede stringhe di utilizzo in Info.plist).
- I clip video sono limitati (attualmente
<= 60s) per evitare payload del nodo troppo grandi (overhead base64 + limiti dei messaggi).
Video dello schermo macOS (a livello di sistema operativo)
Per i video dello schermo (non della fotocamera), usa l'app companion macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathNote:
- Richiede l'autorizzazione Screen Recording di macOS (TCC).