Skip to content

Channels overview

What this is for. Channels are how people outside this machine message an EYAS agent: Telegram, Slack, email, and the rest of the catalogue. Each instance has its own secrets and a bound agent. This is not Connections (Odoo, GitHub, MCP inventory) and not Hands (a local device that offers OS/CLI tools). MCP and A2A are integrations of a different shape and live on their own pages.

Route: /communication → tabs Channels · Inbound Queue · Pairing. Subtitle: Connect messaging channels and bind them to your primary agent.

  • You want to talk to your primary agent from Telegram (or another catalogue type) without opening the web UI.
  • You run two bots of the same type (work + personal) and need a second instance.
  • Inbound messages are stuck and you need the durable queue (retry a dead row).
  • A Telegram DM is waiting on a pairing code.
  1. Open Communication (/communication) on the Channels tab.
  2. Expand a catalogue card, or Add instance for another account of the same type.
  3. Paste the secrets, pick Agent for inbound messages, press Save & connect.
  4. Choose Autonomous (unattended, still gated by the autonomy ladder) or Managed (security gate on every tool call).
  5. For Telegram DMs: message the bot, then approve the code on Pairing. Watch Inbound Queue if deliveries fail.

You can run several accounts of the same type (e.g. two Telegram bots), each with its own credentials and agent. Use Add instance or per-card Add … instance.

These are the messaging types EYAS lists. MCP / A2A are not chat channels.

Type What you connect Pairing Extra
Telegram BotFather HTTP API token Yes — unknown DMs First-class; see Telegram
Discord Application bot token No Needs discord.js at runtime
Slack Bot token (xoxb-) + app-level token (xapp-) No Socket Mode — no public webhook
Email (SMTP/IMAP) SMTP (required) + optional IMAP No Any mailbox
Gmail (API) OAuth client id/secret, refresh token, mailbox No Gmail API
Microsoft 365 (Graph) Tenant, client id/secret, mailbox UPN No Graph app credentials
WhatsApp Business Phone number id, access token, verify token, app secret No Webhook /api/v1/webhooks/whatsapp
Signal Bot E.164 number + signal-cli HTTP bridge URL No EYAS does not embed Signal
Google Chat Project/app id, optional send token and default space No Webhook /api/v1/channels/googlechat/webhook
Microsoft Teams App id, app password, optional tenant No Webhook /api/v1/channels/teams/webhook

Each card expands How to set this up with numbered steps before the credential form. Webhook types also list Webhook paths to expose.

Create instance

Field Meaning
Channel type Template from the catalogue
Display name e.g. Work Signal, Personal Telegram
Create & connect Create instance and start connect flow
Delete instance Remove instance + its credentials (confirm)

Instance status

Status Meaning
Connected Live connection
Disconnected Not connected
Credentials set Secrets stored, may need Connect
Not configured Missing secrets
Error Last error
Health Conflict / Auth error / Degraded Operational health

Mode

Mode Meaning
Autonomous Runs unattended; graduated-autonomy ladder still gates actions
Managed Security gate governs every tool call

Click toggles between modes (tooltips explain each).

Credentials & agent binding

Field Meaning
Secret fields Channel-specific (see the card / Telegram chapter)
Leave blank to keep current value Placeholder when editing
set badge Secret already stored
Agent for inbound messages Which agent answers; default primary assistant
— none (messages stored, no auto-reply) — Store only
Bound agent Currently bound agent
Save & connect Persist secrets and connect
Test / Connect / Disconnect / Reconnect / Configure Lifecycle actions

Inbound Queue tab

Durable at-least-once queue of inbound channel messages. Failed deliveries back off and dead-letter; dead rows can be re-queued.

Column Meaning
Source Channel instance
Sender Sender id / name
Message Body
Attempts Delivery tries
Received Age (Ns/Nm/Nh ago)

Statuses: pending, delivered, dead, skipped. Retry a dead row from the row action.

Pairing tab

Unknown senders get a pairing code and wait here. Approving grants the channel access to its bound agent; pairings survive restarts. Telegram is the catalogue type with supportsPairing.

Control Meaning
Pairing badge On the channel card when pairing is required
Approve / Reject Decision for a pending request
Columns Source, Sender, Code, Requested

Empty: No pending pairing requests.