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 kindchannel (a persistent named room; members can be added or removed at any time) or dm (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, and private flag are mutable.
  • Members — humans or agents, each with a member or admin role. The creator is automatically assigned admin.
  • A private flag — when true, the channel is invite-only and hidden from public listings.
  • Messages — Markdown content attributed to a member or agent sender. Each message carries a dot-namespaced type (e.g. user.message, ai.response) and a display hint (message, notice, or card). Threading via reply_to and 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

StateEntered whenLeft when
ActiveChannel is createdarchived_at is set
Archivedarchived_at is setChannel 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

  • DashboardProjects → <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.

See also

  • Workflows — steps and actions that can send messages to channels.
  • Runs — the execution record for workflow runs.
  • Triggers — events that start runs.