Nodes and media
Captura de cámara
OpenClaw admite la captura de cámara para flujos de trabajo de agentes:
- Nodo iOS (emparejado mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - Nodo Android (emparejado mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke. - App macOS (nodo mediante Gateway): captura una foto (
jpg) o un clip de video corto (mp4, con audio opcional) mediantenode.invoke.
Todo el acceso a la cámara está protegido por ajustes controlados por el usuario.
Nodo iOS
Ajuste de usuario (activado de forma predeterminada)
- Pestaña Ajustes de iOS → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (si falta la clave, se trata como habilitado).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Comandos (mediante Gateway node.invoke)
-
camera.list- Carga útil de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Carga útil de respuesta:
-
camera.snap- Parámetros:
facing:front|back(predeterminado:front)maxWidth: número (opcional; predeterminado1600en el nodo iOS)quality:0..1(opcional; predeterminado0.9)format: actualmentejpgdelayMs: número (opcional; predeterminado0)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 base64 por debajo de 5 MB.
- Parámetros:
-
camera.clip- Parámetros:
facing:front|back(predeterminado:front)durationMs: número (predeterminado3000, limitado a un máximo de60000)includeAudio: booleano (predeterminadotrue)format: actualmentemp4deviceId: cadena (opcional; decamera.list)
- Carga útil de respuesta:
format: "mp4"base64: "<...>"durationMshasAudio
- Parámetros:
Requisito de primer plano
Al igual que canvas.*, 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.
Ejemplos:
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-audioNotas:
nodes camera snapusa de forma predeterminada ambas orientaciones para dar al agente ambas vistas.- Los archivos de salida son temporales (en el directorio temporal del SO) salvo que crees tu propio envoltorio.
Nodo Android
Ajuste de usuario de Android (activado de forma predeterminada)
- Hoja de Ajustes de Android → Cámara → Permitir cámara (
camera.enabled)- Predeterminado: activado (si falta la clave, se trata como habilitado).
- Cuando está desactivado: los comandos
camera.*devuelvenCAMERA_DISABLED.
Permisos
- Android requiere permisos en tiempo de ejecución:
CAMERAparacamera.snapycamera.clip.RECORD_AUDIOparacamera.clipcuandoincludeAudio=true.
Si faltan permisos, la app solicitará autorización cuando sea posible; si se deniega, las solicitudes camera.* fallan con un error
*_PERMISSION_REQUIRED.
Requisito de primer plano en Android
Al igual que canvas.*, el nodo Android solo permite comandos camera.* en primer plano. Las invocaciones en segundo plano devuelven NODE_BACKGROUND_UNAVAILABLE.
Comandos de Android (mediante Gateway node.invoke)
camera.list- Carga útil de respuesta:
devices: matriz de{ id, name, position, deviceType }
- Carga útil de respuesta:
Protección de carga útil
Las fotos se recomprimen para mantener la carga útil base64 por debajo de 5 MB.
App macOS
Ajuste de usuario (desactivado de forma predeterminada)
La app complementaria de macOS expone una casilla:
- Ajustes → General → Permitir cámara (
openclaw.cameraEnabled)- Predeterminado: desactivado
- Cuando está desactivado: las solicitudes de cámara devuelven "Cámara desactivada por el usuario".
Ayudante de CLI (invocación de nodo)
Usa la CLI principal openclaw para invocar comandos de cámara en el nodo macOS.
Ejemplos:
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-audioNotas:
openclaw nodes camera snapusamaxWidth=1600de forma predeterminada salvo que se sobrescriba.- En macOS,
camera.snapesperadelayMs(predeterminado 2000 ms) después del calentamiento y la estabilización de la exposición antes de capturar. - Las cargas útiles de foto 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 las indicaciones habituales de permisos del SO (y requiere cadenas de uso en Info.plist).
- Los clips de video están limitados (actualmente
<= 60s) para evitar cargas útiles de nodo sobredimensionadas (sobrecarga de base64 + límites de mensajes).
Video de pantalla de macOS (a nivel de SO)
Para video de pantalla (no de cámara), usa el complemento de macOS:
openclaw nodes screen record --node <id> --duration 10s --fps 15 # prints saved pathNotas:
- Requiere permiso de Grabación de pantalla de macOS (TCC).