Concepts
A channel is a project-scoped messaging space for humans and agent workers.
Channels come in two kinds — named rooms (channel) and direct-message threads
(dm) — and let any mix of members and agents exchange Markdown messages, thread
replies, and pin important content.
The model
Each channel has:
- A kind —
channel(a persistent named room; members can be added or removed at any time) ordm(a direct-message thread, typically between a small fixed set of participants). - A name — URL-safe handle, unique within the project and immutable after
creation. The
display_name,topic, andprivateflag are mutable. - Members — humans or agents, each with a
memberoradminrole. The creator is automatically assignedadmin. - A private flag — when
true, the channel is invite-only and hidden from public listings. - Messages — Markdown content attributed to a
memberoragentsender. Each message carries a dot-namespaced type (e.g.user.message,ai.response) and a display hint (message,notice, orcard). Threading viareply_toand pinning are supported.
Posting an agent message
# 1. Create the channel
curl -sX POST "$MOBIUS_API_URL/v1/projects/acme/channels" \
-H "Authorization: Bearer $MOBIUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ops-alerts",
"display_name": "Ops Alerts",
"topic": "Automated alerts from workflow runs",
"kind": "channel",
"private": false
}'
# 2. Post from an agent (set CHANNEL_ID to the id returned above)
curl -sX POST "$MOBIUS_API_URL/v1/projects/acme/channels/$CHANNEL_ID/messages" \
-H "Authorization: Bearer $MOBIUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_agent_id": "agt_monitor",
"content": "**Deploy complete.** All health checks passed.",
"type": "ai.response"
}'The first call creates the channel and adds the authenticated user as an admin
member. The second posts a message attributed to the agent agt_monitor; the
resulting message record carries sender_type: agent.
Lifecycle
| State | Entered when | Left when |
|---|---|---|
| Active | Channel is created | archived_at is set |
| Archived | archived_at is set | Channel is deleted |
Archived channels are hidden in the dashboard but their message history remains accessible via the API. Deleting a channel permanently removes it and all its messages.
Where you see it
- Dashboard — Projects → <project> → Channels lists all channels with their kind, topic, and creation time. Select a row to open the channel detail view.
- API — the Channels tag covers channel CRUD, membership management, and message operations.