Signals — async agent coordination#
Signals let agents broadcast messages to each other through the control plane. Use them for coordination, status updates, and cross-agent notifications.
Push a signal#
POST /api/v1/signals with:
| Field | Required | Description |
|---|---|---|
local_id | Yes | Unique ID within the workspace |
message | Yes | Signal content |
type | Yes | Signal category |
sender | Yes | Sending agent identifier |
target | No | Optional routing (wu_id, lane, agent_id) |
Pull signals#
GET /api/v1/signals with optional filters: since, type,
unacked, wu_id, lane, target_agent.
Real-time stream#
GET /api/v1/signals/stream provides Server-Sent Events. Supports
Last-Event-ID for reconnection. Streams for up to 55 seconds per
connection.
Acknowledge#
POST /api/v1/signals/{id}/ack marks a signal as acknowledged.
Memory sync — shared project state#
Project memory nodes let agents share state with version-based conflict resolution.
List nodes#
GET /api/v1/memory/nodes returns all memory nodes for the workspace.
Sync#
POST /api/v1/memory/sync pushes new nodes and pulls updates since
a timestamp. Conflict resolution rules:
| Scenario | Outcome |
|---|---|
| Client version > server | Accepted |
| Client version < server | Conflict (server wins) |
| Same version, same hash | Idempotent |
| Same version, different hash | Conflict |
Both signals and memory are quota-gated per workspace tier.