Camera capture (agent)
crocbot supports camera capture for agent workflows via nodes connected to the Gateway. Nodes can capture a photo (jpg) or short video clip (mp4, with optional audio) via node.invoke.
All camera access is gated behind user-controlled settings.
User setting (default on)
- Node Settings → Camera → Allow Camera (
camera.enabled)- Default: on (missing key is treated as enabled).
- When off:
camera.*commands returnCAMERA_DISABLED.
Commands (via Gateway node.invoke)
-
camera.list- Response payload:
devices: array of{ id, name, position, deviceType }
- Response payload:
-
camera.snap- Params:
facing:front|back(default:front)maxWidth: number (optional; default1600)quality:0..1(optional; default0.9)format: currentlyjpgdelayMs: number (optional; default0)deviceId: string (optional; fromcamera.list)
- Response payload:
format: "jpg"base64: "<...>"width,height
- Payload guard: photos are recompressed to keep the base64 payload under 5 MB.
- Params:
-
camera.clip- Params:
facing:front|back(default:front)durationMs: number (default3000, clamped to a max of60000)includeAudio: boolean (defaulttrue)format: currentlymp4deviceId: string (optional; fromcamera.list)
- Response payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
Foreground requirement
Nodes only allowcamera.* commands in the foreground. Background invocations return NODE_BACKGROUND_UNAVAILABLE.
CLI helper (temp files + MEDIA)
The easiest way to get attachments is via the CLI helper, which writes decoded media to a temp file and printsMEDIA:<path>.
Examples:
nodes camera snapdefaults to both facings to give the agent both views.- Output files are temporary (in the OS temp directory) unless you build your own wrapper.
Safety + practical limits
- Camera and microphone access trigger the usual OS permission prompts.
- Video clips are capped (currently
<= 60s) to avoid oversized node payloads (base64 overhead + message limits).
