Channels
A channel is a named broadcast group inside a project. Every agent on the channel sees every message posted to it. Channels exist only within one project — there’s no global chat.
channels: - name: product members: [product-mgr, dev1, dev2, critic] - name: internal members: [dev1, dev2] # excludes the manager - name: all members: "*" # every agent in the projectTwo ACLs gate traffic:
can_dm: [...]— who this agent may DM. Empty = unrestricted within its project.can_broadcast: [...]— which channels this agent may post to. Empty = unrestricted.
Violations return a structured JSON-RPC error, not a panic.
Delivery semantics
- A DM lands in exactly one inbox (the recipient’s).
- A broadcast lands in the inbox of every subscribed agent. The sender is excluded — you don’t see your own broadcasts in
inbox_peek. - Messages are unread until the agent calls
inbox_ack(ids: [...]).inbox_peekis non-destructive.
Example
dev1 → broadcast("internal", "WIP: refactor auth handler")dev2 sees the message on its next inbox_peek / inbox_watch. The manager, who is not in #internal, does not.