Group Chat
Durable team conversation with attributed messages, participant status, mentions, task context, and cancellable fan-out.
Group chat is the conversational surface for a team. A message sent to a team starts a bounded fan-out tree: mentioned members, or the applicable roster, run concurrently and can mention other members in later replies. Messages and system notices are persisted so the conversation can be reopened and replayed.
Panel Experience
Team chat uses the normal chat timeline rather than a separate three-column window:
- Agent replies use attributed bubbles with a stable color derived from
agent_id; consecutive replies from the same agent are visually grouped. - The participant cluster at the top left opens the roster and shows live member activity. It replaces the former permanent left roster rail.
- The team task drawer keeps coordination tasks available from the conversation. The shared workspace remains the normal right-side workspace.
- The sidebar lists teams returned by
agents.teams, including member previews and the latest conversation snippet.
A blank-named team receives a generated name on its first teams.chat.send.
Mentions and Fan-Out
Typing @ opens roster completion. Matching is case-insensitive by member name or id, and selection inserts the canonical @<agent_id>; @all addresses the roster. Unknown ids are not routed.
The broadcaster limits recursive conversation with operator-configured [team_broadcast] controls for chain depth, per-round width, total activations, transcript budget, and member-run timeout. The run_id returned by teams.chat.send identifies the entire fan-out tree. teams.chat.cancel first prevents new descendants and then cancels active member runs.
Live State and History
The Panel subscribes to the team.<id>.* topic family:
| Topic | Purpose |
|---|---|
team.<id>.message | Final attributed member replies |
team.<id>.system | System notices rendered separately from agent bubbles |
team.<id>.activity | Member working, done, or error state |
team.<id>.fanout | Fan-out started and settled state |
team.<id>.task.<verb> | Task updates for the task strip and drawer |
teams.chat.history returns only conversation rows from the shared team message store and labels them as user, agent, or system. Directed inbox traffic is excluded, so notifications and escalation hints do not appear as chat bubbles.
Team Chat RPCs
| Method | Purpose |
|---|---|
teams.chat.send | Send a user message and start a team fan-out tree |
teams.chat.cancel | Cancel the fan-out tree named by its run_id |
teams.chat.history | Replay the durable conversation |
teams.chat.thread | Load the durable task and artifact work thread |
agents.teams | List an agent's teams for the sidebar |
teams.usage | Read aggregate team model usage |
There is no teams.run RPC. Team execution is driven by teams.chat.send, coordination tasks, and the team tools.
Separate Persona Group Chat
The group_chat.start, group_chat.continue, group_chat.mention, group_chat.end, group_chat.list, and group_chat.history RPCs belong to the separate persona-roundtable system under src/group_chat/. They do not back the Panel's team conversation, which uses teams.chat.*.
See Also
- Teams — task lifecycle, review, templates, and member tool surfaces
- Agent Runtime — individual agent execution