jpg) o un clip de video corto (mp4, con audio opcional) mediante Gateway node.invoke.
Todo acceso a la cámara está protegido por una configuración controlada por el usuario en cada plataforma.
Nodo iOS
Configuración de usuario de iOS
- Pestaña Configuración de iOS → Cámara → Permitir cámara (
camera.enabled).- Valor predeterminado: activado (una clave ausente se trata como habilitada).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos de iOS (mediante Gateway node.invoke)
-
camera.list- Carga útil de respuesta:
devices— arreglo de{ id, name, position, deviceType }.
- Carga útil de respuesta:
-
camera.snap- Parámetros:
facing:front|back(valor predeterminado:front)maxWidth: número (opcional; valor predeterminado1600)quality:0..1(opcional; valor predeterminado0.9, limitado a[0.05, 1.0])format: actualmentejpgdelayMs: número (opcional; valor predeterminado0, limitado internamente a10000)deviceId: cadena (opcional; decamera.list)
- Carga útil de respuesta:
format: "jpg",base64,width,height. - Protección de carga útil: las fotos se recomprimen para mantener la carga útil codificada en base64 por debajo de 5 MB.
- Parámetros:
-
camera.clip- Parámetros:
facing:front|back(valor predeterminado:front)durationMs: número (valor predeterminado3000, limitado a[250, 60000])includeAudio: booleano (valor predeterminadotrue)format: actualmentemp4deviceId: cadena (opcional; decamera.list)
- Carga útil de respuesta:
format: "mp4",base64,durationMs,hasAudio.
- Parámetros:
Requisito de primer plano de iOS
Al igual quecanvas.*, el nodo iOS solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Ayudante de CLI
La forma más sencilla de obtener archivos multimedia es mediante el ayudante de CLI, que escribe los medios decodificados en un archivo temporal e imprime la ruta guardada.nodes camera snap usa --facing both como valor predeterminado, capturando tanto la cámara frontal como la trasera para dar al agente ambas vistas; pasa --device-id con una sola orientación explícita (both se rechaza cuando --device-id está establecido). Los archivos de salida son temporales (en el directorio temporal del SO) a menos que crees tu propio contenedor.
Nodo Android
Configuración de usuario de Android
- Hoja de configuración de Android → Cámara → Permitir cámara (
camera.enabled).- Las instalaciones nuevas vienen desactivadas de forma predeterminada. Las instalaciones existentes anteriores a esta configuración se migran a activado para que las actualizaciones no pierdan silenciosamente el acceso a la cámara que funcionaba antes.
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED: enable Camera in Settings.
Permisos
CAMERAes necesario tanto paracamera.snapcomo paracamera.clip; si falta el permiso o se deniega, devuelveCAMERA_PERMISSION_REQUIRED.RECORD_AUDIOes necesario paracamera.clipcuandoincludeAudioestrue; si falta el permiso o se deniega, devuelveMIC_PERMISSION_REQUIRED.
Requisito de primer plano de Android
Al igual quecanvas.*, el nodo Android solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE: command requires foreground.
Comandos de Android (mediante Gateway node.invoke)
-
camera.list- Carga útil de respuesta:
devices— arreglo de{ id, name, position, deviceType }.
- Carga útil de respuesta:
-
camera.snap- Parámetros:
facing(front|back, valor predeterminadofront),quality(valor predeterminado0.95, limitado a[0.1, 1.0]),maxWidth(valor predeterminado1600),deviceId(opcional; un id desconocido falla conINVALID_REQUEST). - Carga útil de respuesta:
format: "jpg",base64,width,height. - Protección de carga útil: se recomprime para mantener base64 por debajo de 5 MB (el mismo presupuesto que iOS).
- Parámetros:
-
camera.clip- Parámetros:
facing(valor predeterminadofront),durationMs(valor predeterminado3000, limitado a[200, 60000]),includeAudio(valor predeterminadotrue),deviceId(opcional). - Carga útil de respuesta:
format: "mp4",base64,durationMs,hasAudio. - Protección de carga útil: el MP4 sin procesar está limitado a 18 MB antes de la codificación base64; los clips de tamaño excesivo fallan con
PAYLOAD_TOO_LARGE(reducedurationMsy vuelve a intentarlo).
- Parámetros:
App de macOS
Configuración de usuario de macOS
La app complementaria de macOS expone una casilla:- Configuración → General → Permitir cámara (
openclaw.cameraEnabled).- Valor predeterminado: desactivado.
- Cuando está desactivado: las solicitudes de cámara devuelven
CAMERA_DISABLED: enable Camera in Settings.
Ayudante de CLI (invocación de nodo)
Usa la CLI principalopenclaw para invocar comandos de cámara en el nodo macOS.
openclaw nodes camera snapusamaxWidth=1600como valor predeterminado a menos que se sobrescriba.camera.snapesperadelayMs(valor predeterminado 2000 ms, limitado a[0, 10000]) después del calentamiento/estabilización de la exposición antes de capturar.- Las cargas útiles de fotos se recomprimen para mantener base64 por debajo de 5 MB.
Seguridad + límites prácticos
- El acceso a la cámara y al micrófono activa los avisos habituales de permisos del SO (y requiere cadenas de uso en
Info.plist). - Los clips de video están limitados a 60 s para evitar cargas útiles de nodo demasiado grandes (sobrecarga de base64 más límites de mensajes).