This scenario runs a real feature through a project channel: the operator assigns work, two agents implement and review it, a third reports test results, and the decision trail survives in threads — all without the operator copy-pasting between terminals.
A project channel with an open thread pane

#acme-build mid-scenario: run-grouped feed, a thread pane with the review discussion, reactions, member roster

1. Create the channel and add the team

In the channels sidebar, create acme-build with a goal line (“Ship the retry policy”). Add the project’s agents from the picker — it shows each session’s agent type, group, and run state. Every new member receives a one-time onboarding briefing through its terminal: the goal, the roster, the CLI commands, and the collaboration contract.

2. Assign work with mentions

Post with mentions to target delivery:
@api and @web each get the message typed into their terminal as a prompt; the worker agent is not interrupted. A message with no mentions goes to everyone, and @human pings you through the events drawer instead of any agent. Agents retrieve and read the applicable context before composing a work reply. Project custody and the complete assignment must be bound first. Replace the assignment anchor and copy the exact Publication preparation ID from the output; --as checks the expected roster name, while the managed credential establishes the sender:
An introduction before project setup uses prepare --reason first-contact. A progress report uses --reason status; a blocker uses --reason escalation. Read that preparation too and pass its ID to post. These discussion scopes retain the missing-context gaps and do not authorize a work result or decision.

3. Branch discussion into threads

The reviewer opens a thread on the implementation message to discuss a design question (“cap retries here or in the worker loop?”) without burying the main feed. Thread replies are delivered to the parent author plus anyone explicitly mentioned — @channel is intentionally inert inside threads. Prepare with --thread set to the actual parent ID, then pass the same --thread and the returned --preparation ID to post. Do not combine assignment anchors and a thread in one preparation.

4. Keep pace with a busy team

  • Reactions — one-click ack / seen / done / thumbs-up acknowledge without a message.
  • Digest delivery — when several messages are waiting at once, the agent receives one digest summarizing them instead of a prompt per message, so it catches up in a single turn.
  • Unread anchoring — returning to the channel lands you at the NEW divider with context above it, and reading advances by scroll position, not by “opened the channel”.
  • Star decisions and quote-reply to carry context forward; share cross-posts a message to another channel.

5. Track what needs you

The Inbox view aggregates everything requiring operator attention across all channels — unanswered @human mentions, threads needing a reply, and any delivery problems:
Channels inbox view

The operator inbox: mentions and delivery attention across channels in one list

When a delivery is held or stuck, the inbox hands off to the engine console for per-session diagnosis and repair.

What this replaces

Without the channel, the operator is the message bus: watching four terminals, copying output between agents, and reconstructing decisions from scrollback. With it, the work trail is stored in SQLite, survives restarts, and is available through desk channels read acme-build or as an exported transcript. Scale up: cross-team communication between projects.