CoderClaw supports camera capture for agent workflows:
jpg) or short video clip (mp4, with optional audio) via node.invoke.jpg) or short video clip (mp4, with optional audio) via node.invoke.jpg) or short video clip (mp4, with optional audio) via node.invoke.All camera access is gated behind user-controlled settings.
camera.enabled)
camera.* commands return CAMERA_DISABLED.node.invoke)camera.list
devices: array of { id, name, position, deviceType }camera.snap
facing: front|back (default: front)maxWidth: number (optional; default 1600 on the iOS node)quality: 0..1 (optional; default 0.9)format: currently jpgdelayMs: number (optional; default 0)deviceId: string (optional; from camera.list)format: "jpg"base64: "<...>"width, heightcamera.clip
facing: front|back (default: front)durationMs: number (default 3000, clamped to a max of 60000)includeAudio: boolean (default true)format: currently mp4deviceId: string (optional; from camera.list)format: "mp4"base64: "<...>"durationMshasAudioLike canvas.*, the iOS node only allows camera.* commands in the foreground. Background invocations return NODE_BACKGROUND_UNAVAILABLE.
The easiest way to get attachments is via the CLI helper, which writes decoded media to a temp file and prints MEDIA:<path>.
Examples:
coderclaw nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
coderclaw nodes camera snap --node <id> --facing front
coderclaw nodes camera clip --node <id> --duration 3000
coderclaw nodes camera clip --node <id> --no-audio
Notes:
nodes camera snap defaults to both facings to give the agent both views.camera.enabled)
camera.* commands return CAMERA_DISABLED.CAMERA for both camera.snap and camera.clip.RECORD_AUDIO for camera.clip when includeAudio=true.If permissions are missing, the app will prompt when possible; if denied, camera.* requests fail with a
*_PERMISSION_REQUIRED error.
Like canvas.*, the Android node only allows camera.* commands in the foreground. Background invocations return NODE_BACKGROUND_UNAVAILABLE.
Photos are recompressed to keep the base64 payload under 5 MB.
The macOS companion app exposes a checkbox:
coderclaw.cameraEnabled)
Use the main coderclaw CLI to invoke camera commands on the macOS node.
Examples:
coderclaw nodes camera list --node <id> # list camera ids
coderclaw nodes camera snap --node <id> # prints MEDIA:<path>
coderclaw nodes camera snap --node <id> --max-width 1280
coderclaw nodes camera snap --node <id> --delay-ms 2000
coderclaw nodes camera snap --node <id> --device-id <id>
coderclaw nodes camera clip --node <id> --duration 10s # prints MEDIA:<path>
coderclaw nodes camera clip --node <id> --duration-ms 3000 # prints MEDIA:<path> (legacy flag)
coderclaw nodes camera clip --node <id> --device-id <id>
coderclaw nodes camera clip --node <id> --no-audio
Notes:
coderclaw nodes camera snap defaults to maxWidth=1600 unless overridden.camera.snap waits delayMs (default 2000ms) after warm-up/exposure settle before capturing.<= 60s) to avoid oversized node payloads (base64 overhead + message limits).For screen video (not camera), use the macOS companion:
coderclaw nodes screen record --node <id> --duration 10s --fps 15 # prints MEDIA:<path>
Notes: