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.