4.2 KiB
summary, read_when
| summary | read_when | ||
|---|---|---|---|
| Camera capture (iOS node + macOS app) for agent use: photos (jpg) and short video clips (mp4) |
|
Camera capture (agent)
Clawdis supports camera capture for agent workflows:
- iOS node (paired via Gateway): capture a photo (
jpg) or short video clip (mp4, with optional audio) vianode.invoke. - Android node (paired via Gateway): capture a photo (
jpg) or short video clip (mp4, with optional audio) vianode.invoke. - macOS app (local control socket): capture a photo (
jpg) or short video clip (mp4, with optional audio) viaclawdis-mac.
All camera access is gated behind user-controlled settings.
iOS node
User setting (default on)
- iOS Settings tab → 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.snap- Params:
facing:front|back(default:front)maxWidth: number (optional; default1600on the iOS node)quality:0..1(optional; default0.9)format: currentlyjpg
- Response payload:
format: "jpg"base64: "<...>"width,height
- Params:
-
camera.clip- Params:
facing:front|back(default:front)durationMs: number (default3000, clamped to a max of60000)includeAudio: boolean (defaulttrue)format: currentlymp4
- Response payload:
format: "mp4"base64: "<...>"durationMshasAudio
- Params:
Foreground requirement
Like canvas.*, the iOS node only allows camera.* 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 prints MEDIA:<path>.
Examples:
clawdis nodes camera snap --node <id> # default: both front + back (2 MEDIA lines)
clawdis nodes camera snap --node <id> --facing front
clawdis nodes camera clip --node <id> --duration 3000
clawdis nodes camera clip --node <id> --no-audio
Notes:
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.
Android node
User setting (default on)
- Android Settings sheet → Camera → Allow Camera (
camera.enabled)- Default: on (missing key is treated as enabled).
- When off:
camera.*commands returnCAMERA_DISABLED.
Permissions
- Android requires runtime permissions:
CAMERAfor bothcamera.snapandcamera.clip.RECORD_AUDIOforcamera.clipwhenincludeAudio=true.
If permissions are missing, the app will prompt when possible; if denied, camera.* requests fail with a
*_PERMISSION_REQUIRED error.
Foreground requirement
Like canvas.*, the Android node only allows camera.* commands in the foreground. Background invocations return NODE_BACKGROUND_UNAVAILABLE.
macOS app
User setting (default off)
The macOS companion app exposes a checkbox:
- Settings → Debug → Camera → Allow Camera (agent) (
clawdis.cameraEnabled)- Default: off
- When off: camera requests return “Camera disabled by user”.
CLI helper (local control socket)
The clawdis-mac helper talks to the running menu bar app over the local control socket.
Examples:
clawdis-mac camera snap # prints MEDIA:<path>
clawdis-mac camera snap --max-width 1280
clawdis-mac camera clip --duration-ms 3000 # prints MEDIA:<path>
clawdis-mac camera clip --no-audio
Notes:
clawdis-mac camera snapdefaults tomaxWidth=1600unless overridden.
Safety + practical limits
- Camera and microphone access trigger the usual OS permission prompts (and require usage strings in Info.plist).
- Video clips are capped (currently
<= 60s) to avoid oversized bridge payloads (base64 overhead + message limits).