Skip to content

Channel Overview

Channels are how Human receives and sends messages. Each channel implements the hu_channel_t vtable.

MethodDescription
startStart listening (e.g. long-poll, WebSocket)
stopStop listening
sendSend a message to a target
nameChannel identifier
health_checkReport channel health
send_eventOptional: streaming send with stage
start_typing / stop_typingOptional: typing indicators
ChannelBuild flagDescription
CLIHU_ENABLE_CLI (default ON)Terminal chat, always available
TelegramHU_ENABLE_TELEGRAMTelegram Bot API
DiscordHU_ENABLE_DISCORDDiscord bot
SlackHU_ENABLE_SLACKSlack app (Socket mode, events)
SignalHU_ENABLE_SIGNALSignal via signal-cli
NostrHU_ENABLE_NOSTRNostr DMs (nak)
WhatsAppHU_ENABLE_WHATSAPPWhatsApp Business API
MatrixHU_ENABLE_MATRIXMatrix.org
IRCHU_ENABLE_IRCIRC
LineHU_ENABLE_LINELINE
LarkHU_ENABLE_LARKLark/Feishu
OneBotHU_ENABLE_ONEBOTOneBot protocol
DingTalkHU_ENABLE_DINGTALKDingTalk
EmailHU_ENABLE_EMAILEmail
WebHU_ENABLE_WEBWebSocket web UI
iMessageHU_ENABLE_IMESSAGEApple iMessage
MattermostHU_ENABLE_MATTERMOSTMattermost
QQHU_ENABLE_QQQQ
MaixCamHU_ENABLE_MAIXCAMMaixCam board
DispatchHU_ENABLE_DISPATCHDispatch/router

Enable all at once: -DHU_ENABLE_ALL_CHANNELS=ON

Channels use an allowlist for access control:

  • Empty allowlist — Deny all (no one can interact)
  • "*" — Allow all
  • List of IDs — Exact match only (e.g. Telegram user IDs, Discord user IDs)

Example (Telegram):

{
"channels": {
"telegram": [
{
"token": "123456:ABC...",
"allow_from": ["123456789", "987654321"]
}
]
}
}

allow_from empty or omitted = allow all. allow_from: ["*"] = allow all. allow_from: ["123"] = only user 123.

When using the gateway (human gateway), incoming webhooks are routed by path:

PathChannel
/webhook/telegramTelegram
/webhook/slackSlack
/webhook/discordDiscord
/webhook/whatsappWhatsApp
/webhook/lineLINE
/webhook/larkLark
/telegramTelegram (legacy)
/slack/eventsSlack events
/whatsappWhatsApp
/lineLINE
/larkLark
/discordDiscord

Use a tunnel (ngrok, cloudflared) to expose the gateway to the internet for webhook delivery.