Channels

June 20, 2026 · View on GitHub

Connect The Bridge to messaging platforms. Send notifications, receive messages, and automate outbound communication.

Channel Types

TypeModeExamplesUse Case
plugintmux keepaliveiMessage, Discord, SlackClaude Code built-in channel plugins
collectorscheduled cronSignal, RSS, WebhooksPull-based message collection
botkeepalive daemonTelegram, Slack BotBidirectional messaging bot
apion-demand/scheduledEmail (Graph API), TeamsAPI-based message access
bridgebackground processWhatsApp (MCP)MCP-based external service bridge

Channel Schema

One file per channel: infra/channels/<name>.yaml, created from infra/channels/_template.yaml (the full schema lives there). Overview:

name: my-channel
display_name: "My Channel"
type: bot                    # plugin | collector | bot | api | bridge

implementation:
  skill: skill-name          # Claude skill — OR plugin: name@publisher, OR mcp: server-name

runtime:
  remote: server-hostname    # from infra/remotes/*.yaml, or "local"
  mode: on-demand            # tmux | launchd | on-demand
  service: service-slug      # from infra/remotes/{host}.yaml services list

access:
  policy: allowlist          # allowlist | pairing | disabled
  contacts: []               # named handles
  groups: []                 # named group ids

checkin:
  enabled: true              # include in /briefing?

behavior:
  auto_response: false       # auto-respond to messages?

status: active               # pending | active | paused | disabled

Operations

Inventory, health checks, deploy, start/stop live in the channel skill (skills/channel/SKILL.md). Scheduled messages and cron/launchd/systemd jobs are a separate concern owned by the /schedule skill (skills/schedule/SKILL.md).

Setup

  1. Enable channels: set channels.enabled: true in bridge-config.yaml
  2. Copy infra/channels/_template.yaml to infra/channels/{name}.yaml
  3. Configure runtime (which server runs the channel)
  4. Test: /channel health