Heypi normalizes Slack, Telegram, and Discord events into a shared processing pipeline. After a provider-specific allow check and trigger check, all three platforms follow the same behavior for streaming, progress messages, busy threads, approvals, and delivery. This page covers that shared behavior.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hunvreus/heypi/llms.txt
Use this file to discover all available pages before exploring further.
Access and Triggers
Theallow config filters events after the provider delivers them to heypi. Provider setup (tokens, scopes, webhooks) decides which events arrive at all.
Default allow behavior
Default allow behavior
- Omitting
allowaccepts all delivered events. - Omitting team/channel/user lists accepts all events for that dimension.
dmsdefaults totrue; setdms: falseto drop direct messages.- In top-level groups and channels,
triggerdefaults to"mention"— the agent only responds when mentioned. - Set
trigger: "message"to run the agent for every allowed group/channel message. - Accepted DMs always run the agent regardless of
trigger. - Thread/topic replies default to message-triggered follow-ups.
- Set
threadTrigger: "mention"to require a mention in thread or topic replies.
allow.users controls who may talk to the bot. approval.approvers controls who may approve tool calls. These are separate lists with separate semantics.Streaming
Streaming is opt-in and configured per adapter:true for sensible defaults, or pass an options object to fine-tune:
Progress Messages
While the agent is working, heypi shows aWorking... progress message. This can be disabled:
- Slack
- Telegram & Discord
Posts the progress message while streaming. Top-level channel messages also get the configured reaction. Confirmed tool calls stop draft streaming before the approval card is sent.
Busy Threads
When a new message arrives while a turn is already active in the same thread, heypi uses thechat.busy policy to decide what to do:
steer
Default. Inject the new message into the active Pi session so it can influence the ongoing response.
followUp
Queue the message to be handled after the current turn completes.
reject
Ask the user to send it again later.
steer and followUp, heypi:
- Stores the inbound message.
- Publicly acknowledges it in the thread.
- Keeps the original progress marker as a temporary anchor.
- Deletes the progress marker at turn completion.
- Posts the final answer at the bottom of the thread.
System Messages
Bot outcome messages are fully configurable with top-levelmessages. Provider labels, card headings, and button text are fixed.
Approvals and Text Commands
Slack, Telegram, and Discord render provider-native approval buttons. Approve/deny actions edit the original approval card in place and remove the buttons. Stale approval buttons also update in place with an unavailable or already-resolved notice. Text commands work in every adapter, including webhook:Permissions
| Action | Who can perform it |
|---|---|
approve | Configured approval.approvers, or any user if none are configured |
deny | Configured approvers, or the original requester |
cancel | Run initiator, or configured approvers |
approvals | Configured approvers; or current-thread users when no approvers are configured |
Approval Cards
Approval cards show themessage (user-facing reason), optional structured details, and the requester’s name. details are label/value pairs; format: "code" renders as a code block where the provider supports it. Details are capped to stay within provider card limits.