@@ -204,7 +207,50 @@ All messages are JSON over WebSocket.
### Capability Registration
Node registers `browser_control` in capabilities during registration:
## Camera Control
**Optional capability** — phase-1 Linux support uses `ffmpeg` + V4L2 (`/dev/video*`). The node only advertises `camera_control` in its `tools` list when `enable_camera_control` is true *and* a usable camera backend/device is present at runtime.
### Actions
-`list_cameras` — enumerate detected camera devices and probe metadata
-`get_camera_status` — current camera backend readiness and discovered devices
-`capture_frame` — grab a single still frame from a selected/default device
-`capture_video` — record a short video clip from a selected/default device
### Gateway → Node: Camera Control
```json
{
"type":"camera_control",
"id":"camera-a1b2c3d4",
"action":"capture_frame",
"params":{
"device":"/dev/video0",
"format":"png",
"width":1280,
"height":720
}
}
```
### Node → Gateway: Camera Control Result
```json
{
"type":"camera_control_result",
"id":"camera-a1b2c3d4",
"action":"capture_frame",
"success":true,
"device":"/dev/video0",
"format":"png",
"path":"/tmp/hermes-camera-1714392000.png",
"size_bytes":123456,
"data_base64":"..."
}
```
Node registers optional tools in its `tools` list during registration and exposes structured readiness metadata under `capabilities`. Existing siblings include `browser_control`, `computer_control`, `desktop_observe`, `audio_control`, and `camera_control`.
```json
{
...
...
@@ -230,7 +276,8 @@ Node registers `browser_control` in capabilities during registration:
@@ -204,7 +207,50 @@ All messages are JSON over WebSocket.
### Capability Registration
Node registers `browser_control` in capabilities during registration:
## Camera Control
**Optional capability** — phase-1 Linux support uses `ffmpeg` + V4L2 (`/dev/video*`). The node only advertises `camera_control` in its `tools` list when `enable_camera_control` is true *and* a usable camera backend/device is present at runtime.
### Actions
-`list_cameras` — enumerate detected camera devices and probe metadata
-`get_camera_status` — current camera backend readiness and discovered devices
-`capture_frame` — grab a single still frame from a selected/default device
-`capture_video` — record a short video clip from a selected/default device
### Gateway → Node: Camera Control
```json
{
"type":"camera_control",
"id":"camera-a1b2c3d4",
"action":"capture_frame",
"params":{
"device":"/dev/video0",
"format":"png",
"width":1280,
"height":720
}
}
```
### Node → Gateway: Camera Control Result
```json
{
"type":"camera_control_result",
"id":"camera-a1b2c3d4",
"action":"capture_frame",
"success":true,
"device":"/dev/video0",
"format":"png",
"path":"/tmp/hermes-camera-1714392000.png",
"size_bytes":123456,
"data_base64":"..."
}
```
Node registers optional tools in its `tools` list during registration and exposes structured readiness metadata under `capabilities`. Existing siblings include `browser_control`, `computer_control`, `desktop_observe`, `audio_control`, and `camera_control`.
```json
{
...
...
@@ -230,7 +276,8 @@ Node registers `browser_control` in capabilities during registration: