Nodes and media
Camera-opname
OpenClaw ondersteunt camera-opnamen voor agentworkflows op gekoppelde iOS-, Android-, macOS- en Linux-nodes: maak een foto (jpg) of een korte videoclip (mp4, met optionele audio) via Gateway node.invoke.
Alle cameratoegang wordt per platform beperkt door een door de gebruiker beheerde instelling.
iOS-node
iOS-gebruikersinstelling
- Tabblad iOS Settings → Camera → Allow Camera (
camera.enabled).- Standaard: aan (een ontbrekende sleutel wordt als ingeschakeld beschouwd).
- Wanneer uitgeschakeld:
camera.*-opdrachten retournerenCAMERA_DISABLED.
iOS-opdrachten (via Gateway node.invoke)
-
camera.list- Responsinhoud:
devices— array van{ id, name, position, deviceType }.
- Responsinhoud:
-
camera.snap- Parameters:
facing:front|back(standaard:front)maxWidth: getal (optioneel; standaard1600)quality:0..1(optioneel; standaard0.9, begrensd op[0.05, 1.0])format: momenteeljpgdelayMs: getal (optioneel; standaard0, intern begrensd op10000)deviceId: tekenreeks (optioneel; uitcamera.list)
- Responsinhoud:
format: "jpg",base64,width,height. - Inhoudsbeveiliging: foto's worden opnieuw gecomprimeerd om de base64-gecodeerde inhoud onder 5MB te houden.
- Parameters:
-
camera.clip- Parameters:
facing:front|back(standaard:front)durationMs: getal (standaard3000, begrensd op[250, 60000])includeAudio: boolean (standaardtrue)format: momenteelmp4deviceId: tekenreeks (optioneel; uitcamera.list)
- Responsinhoud:
format: "mp4",base64,durationMs,hasAudio.
- Parameters:
Vereiste voorgrondstatus op iOS
Net als canvas.* staat de iOS-node camera.*-opdrachten alleen op de voorgrond toe. Aanroepen op de achtergrond retourneren NODE_BACKGROUND_UNAVAILABLE.
CLI-helper
De eenvoudigste manier om mediabestanden te verkrijgen, is via de CLI-helper. Deze schrijft gedecodeerde media naar een tijdelijk bestand en toont het opgeslagen pad.
openclaw nodes camera snap --node <id> # standaard: zowel voor als achter (2 MEDIA-regels)openclaw nodes camera snap --node <id> --facing frontopenclaw nodes camera clip --node <id> --duration 3000openclaw nodes camera clip --node <id> --no-audionodes camera snap is standaard --facing both en maakt opnamen met zowel de camera aan de voor- als achterzijde om de agent beide beelden te geven; geef --device-id door met één expliciete richting (both wordt geweigerd wanneer --device-id is ingesteld). Uitvoerbestanden zijn tijdelijk (in de tijdelijke map van het besturingssysteem), tenzij je een eigen wrapper bouwt.
Android-node
Android-gebruikersinstelling
- Android Settings-venster → Camera → Allow Camera (
camera.enabled).- Bij nieuwe installaties is deze optie standaard uitgeschakeld. Bestaande installaties van vóór deze instelling worden naar aan gemigreerd, zodat eerder werkende cameratoegang na een upgrade niet stilzwijgend verloren gaat.
- Wanneer uitgeschakeld:
camera.*-opdrachten retournerenCAMERA_DISABLED: enable Camera in Settings.
Machtigingen
CAMERAis vereist voor zowelcamera.snapalscamera.clip; een ontbrekende of geweigerde machtiging retourneertCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOis vereist voorcamera.clipwanneerincludeAudiotrueis; een ontbrekende of geweigerde machtiging retourneertMIC_PERMISSION_REQUIRED.
De app vraagt waar mogelijk om runtimemachtigingen.
Vereiste voorgrondstatus op Android
Net als canvas.* staat de Android-node camera.*-opdrachten alleen op de voorgrond toe. Aanroepen op de achtergrond retourneren NODE_BACKGROUND_UNAVAILABLE: command requires foreground.
Android-opdrachten (via Gateway node.invoke)
-
camera.list- Responsinhoud:
devices— array van{ id, name, position, deviceType }.
- Responsinhoud:
-
camera.snap- Parameters:
facing(front|back, standaardfront),quality(standaard0.95, begrensd op[0.1, 1.0]),maxWidth(standaard1600),deviceId(optioneel; een onbekende id mislukt metINVALID_REQUEST). - Responsinhoud:
format: "jpg",base64,width,height. - Inhoudsbeveiliging: opnieuw gecomprimeerd om base64 onder 5MB te houden (hetzelfde budget als iOS).
- Parameters:
-
camera.clip- Parameters:
facing(standaardfront),durationMs(standaard3000, begrensd op[200, 60000]),includeAudio(standaardtrue),deviceId(optioneel). - Responsinhoud:
format: "mp4",base64,durationMs,hasAudio. - Inhoudsbeveiliging: onbewerkte MP4 is vóór base64-codering begrensd op 18MB; te grote clips mislukken met
PAYLOAD_TOO_LARGE(verlaagdurationMsen probeer het opnieuw).
- Parameters:
macOS-app
macOS-gebruikersinstelling
De macOS-begeleidende app bevat een selectievakje:
- Settings → General → Allow Camera (
openclaw.cameraEnabled).- Standaard: uit.
- Wanneer uitgeschakeld: cameraverzoeken retourneren
CAMERA_DISABLED: enable Camera in Settings.
CLI-helper (node-aanroep)
Gebruik de hoofd-CLI openclaw om cameraopdrachten op de macOS-node aan te roepen.
openclaw nodes camera list --node <id> # camera-id's weergevenopenclaw nodes camera snap --node <id> # toont opgeslagen padopenclaw 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 # toont opgeslagen padopenclaw nodes camera clip --node <id> --duration-ms 3000 # toont opgeslagen pad (verouderde vlag)openclaw nodes camera clip --node <id> --device-id <id>openclaw nodes camera clip --node <id> --no-audioopenclaw nodes camera snapis standaardmaxWidth=1600, tenzij dit wordt overschreven.camera.snapwacht na de opwarm- en belichtingsstabilisatiedelayMs(standaard 2000ms, begrensd op[0, 10000]) voordat de opname wordt gemaakt.- Foto-inhoud wordt opnieuw gecomprimeerd om base64 onder 5MB te houden.
Linux-nodehost
De meegeleverde Linux Node-plugin voegt camera-opnamen toe aan de CLI-service openclaw node. Deze werkt op een headless host en vereist de Linux-desktopapp niet.
Cameratoegang is standaard uitgeschakeld. Schakel deze in bij de pluginvermelding en start vervolgens de nodeservice opnieuw, zodat de Gateway-advertentie opnieuw wordt opgebouwd:
{ plugins: { entries: { "linux-node": { config: { camera: { enabled: true }, }, }, }, },}Vereisten:
- FFmpeg met V4L2-invoer,
libx264en AAC-ondersteuning - een
/dev/video*-apparaat dat leesbaar is voor de gebruiker van de nodeservice; voeg die gebruiker op gangbare distributies toe aan de groepvideo - voor clips met de standaardwaarde
includeAudio: true: een werkende PulseAudio-server of PipeWire-compatibiliteitslaag voor PulseAudio met een standaardbron
Linux retourneert vanuit camera.list leesbare V4L2-apparaatpaden die opnamen ondersteunen; FFmpeg controleert elke /dev/video*-kandidaat en laat metadata- of alleen-uitvoernodes weg. Apparaat position is unknown, zodat richtingsverzoeken zonder deviceId één foto of clip met positie unknown opleveren in plaats van ten onrechte een camera aan de voor- of achterzijde te melden. Gebruik deviceId wanneer een host meerdere camera's heeft. camera.snap gebruikt FFmpeg-invoeropwarming voor delayMs en behoudt de beeldverhouding terwijl de breedte wordt beperkt. camera.clip neemt microfoonaudio op als de MP4-audiotrack; OpenClaw biedt bewust geen afzonderlijke microfoonopdracht.
De plugin gebruikt libx264 voor MP4-video en wijzigt codecs niet stilzwijgend. Een FFmpeg-build zonder de vereiste invoer of encoders retourneert CAMERA_UNAVAILABLE. Foto's en clips die het base64-inhoudsbudget van 25MB zouden overschrijden, mislukken met PAYLOAD_TOO_LARGE.
camera.snap en camera.clip blijven gevaarlijke opdrachten. Voeg ze alleen toe aan gateway.nodes.commands.allow wanneer je daadwerkelijk opnamen wilt inschakelen; alleen de plugin inschakelen omzeilt het Gateway-beleid niet.
Veiligheid en praktische limieten
- Toegang tot de camera en microfoon activeert de gebruikelijke toestemmingsvragen van het besturingssysteem (en vereist gebruiksbeschrijvingen in
Info.plist). - Videoclips zijn begrensd op 60s om te grote node-inhoud te voorkomen (base64-overhead plus berichtlimieten).
macOS-schermvideo (op besturingssysteemniveau)
Gebruik voor schermvideo (niet de camera) de macOS-begeleidende app:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # toont opgeslagen padVereist de macOS-machtiging Screen Recording (TCC).