Channel Overview
Channels are how Human receives and sends messages. Each channel implements the hu_channel_t vtable.
Channel vtable interface
Section titled “Channel vtable interface”| Method | Description |
|---|---|
start | Start listening (e.g. long-poll, WebSocket) |
stop | Stop listening |
send | Send a message to a target |
name | Channel identifier |
health_check | Report channel health |
send_event | Optional: streaming send with stage |
start_typing / stop_typing | Optional: typing indicators |
Available channels
Section titled “Available channels”| Channel | Build flag | Description |
|---|---|---|
| CLI | HU_ENABLE_CLI (default ON) | Terminal chat, always available |
| Telegram | HU_ENABLE_TELEGRAM | Telegram Bot API |
| Discord | HU_ENABLE_DISCORD | Discord bot |
| Slack | HU_ENABLE_SLACK | Slack app (Socket mode, events) |
| Signal | HU_ENABLE_SIGNAL | Signal via signal-cli |
| Nostr | HU_ENABLE_NOSTR | Nostr DMs (nak) |
HU_ENABLE_WHATSAPP | WhatsApp Business API | |
| Matrix | HU_ENABLE_MATRIX | Matrix.org |
| IRC | HU_ENABLE_IRC | IRC |
| Line | HU_ENABLE_LINE | LINE |
| Lark | HU_ENABLE_LARK | Lark/Feishu |
| OneBot | HU_ENABLE_ONEBOT | OneBot protocol |
| DingTalk | HU_ENABLE_DINGTALK | DingTalk |
HU_ENABLE_EMAIL | ||
| Web | HU_ENABLE_WEB | WebSocket web UI |
| iMessage | HU_ENABLE_IMESSAGE | Apple iMessage |
| Mattermost | HU_ENABLE_MATTERMOST | Mattermost |
HU_ENABLE_QQ | ||
| MaixCam | HU_ENABLE_MAIXCAM | MaixCam board |
| Dispatch | HU_ENABLE_DISPATCH | Dispatch/router |
Enable all at once: -DHU_ENABLE_ALL_CHANNELS=ON
Allowlist model
Section titled “Allowlist model”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.
Gateway webhooks
Section titled “Gateway webhooks”When using the gateway (human gateway), incoming webhooks are routed by path:
| Path | Channel |
|---|---|
/webhook/telegram | Telegram |
/webhook/slack | Slack |
/webhook/discord | Discord |
/webhook/whatsapp | |
/webhook/line | LINE |
/webhook/lark | Lark |
/telegram | Telegram (legacy) |
/slack/events | Slack events |
/whatsapp | |
/line | LINE |
/lark | Lark |
/discord | Discord |
Use a tunnel (ngrok, cloudflared) to expose the gateway to the internet for webhook delivery.