Skip to content

Channels ​

A channel receives a message from another tool and routes it to an agent, then carries the reply back. Most channels are set up in the dashboard under Settings › Channels; the rest are set in agentx.json (see the configuration reference).

ChannelWhat it doesWhere to set it up
TelegramChats with a bot, in private messages or in groups when the bot is taggedSettings › Channels › Telegram, the setup wizard, or agentx connect telegram. See Connect Telegram
WhatsAppAnswers from a WhatsApp account that AgentX pairs with by QR codeSettings › Channels › WhatsApp, or agentx connect whatsapp
GitLabReacts to issues, merge requests and comments sent by a GitLab webhookSettings › Channels › GitLab. See Watch GitLab
GitHubReacts to GitHub webhook events, such as pull requestsSettings › Channels › GitHub
WebhooksStarts workflows from other services (for example Sentry, Stripe, Vercel, or your own)Settings › Webhooks, or agentx webhook add. agentx webhook sources lists the known sources
pushSends notifications to the AgentX phone app. Outbound onlychannels.push, or agentx notifications push
ntfySends push notifications to your phone through the ntfy app. Outbound onlychannels.ntfy, or agentx notifications ntfy. See Get notified
Calls (WebRTC)Voice calls with an agent in the browser, at /call on the daemonSettings › Channels › Calls (WebRTC), or channels.webrtc

Telegram ignores everyone until you allow them. A new Telegram bot drops every message unless the sender is on an allow list: channels.telegram.policy.allowFrom for all bots, or allowFrom on one bot's account. Each entry is a Telegram user ID, a chat ID, or an @username. A dropped message shows in agentx daemon logs as not in allowlist.

Slack and Discord are not supported as live channel adapters in this build. Do not paste their tokens into a stale prompt or example. A connection record alone does not make an adapter run.

Agents can attach files to answers in the phone app and the web chat. The agent saves the file in its workspace and ends its answer with one line per file, <agentx-artifact>{"filename":"charts/orders.png","mime":"image/png"}</agentx-artifact>. The line is removed from the answer. The phone app shows the file under the answer; the daemon's web chat (POST /chat) returns it in artifacts. Agents in the phone app learn this at the start of each conversation.

Keep channel credentials private. The dashboard stores only the name of the environment variable that holds a token; the token itself goes in the .env file next to agentx.json.

Check it worked ​

  1. Browser: open Settings › Channels. Each channel you set up shows live.
  2. Terminal: run agentx channel list to see each channel and the agent it is bound to.
  3. Send a test message on the channel. It appears in Activity, with the agent's reply.

If something is wrong ​

  • A channel shows off or not set up: open it in Settings › Channels and check it is enabled and bound to an agent.
  • Telegram stays silent: check the allow list above, then look for not in allowlist in agentx daemon logs.
  • A webhook event never arrives: first check that the other tool sent it (its webhook delivery log), then open /admin/health on the dashboard and Activity.
  • Still stuck: run agentx doctor and follow It's not answering.

Released under the MIT License.