Your agents, where your team already is.
Bind an agent to a Telegram bot or a Slack workspace. Message it from your phone. Approve sensitive actions with a tap. Keep it running 24/7 on a VPS — no desktop required.
A conversation from start to approval.
Illustrative Telegram thread — user message, agent processing, reply, then an inline approval for a sensitive action. No desktop needed. A phone tap is enough.
47 recipients · 1 attachment (Q3_Proposal.pdf)
A travel day, approved from a phone.
Dario runs his sales agent on Telegram. On a travel day he handled every approval and query between flights — no laptop, no dashboard.
A channel is where an agent lives as a bot.
Once an agent has a channel, it answers messages, reports back, and surfaces approval requests in that messaging app — without you ever switching to the Actionist desktop.
Telegram
Slack
@mention-name. Built on Bolt SDK with Socket Mode — no public HTTPS endpoint needed.One bot per agent, or one Slack app for all.
Telegram always gives each agent its own bot. Slack offers a choice: a dedicated bot per agent, or a shared company Slack app where users reach each agent by typing its @mention-name in any channel.
With a shared Slack app, direct messages to the bot still route automatically — no mention required. Only messages in shared channels need the @mention-name prefix; bare channel messages are silently dropped.
Three steps per platform.
Open Agents in the sidebar, select the agent, and click the Channels tab. Pick your platform and follow the wizard. The connection-target badge at the top tells you whether this agent connects from Local Desktop or Paired VPS.
@BotFather. Send /newbot, pick a display name, and choose a unique handle ending in _bot. BotFather replies with a token in the format 123456:ABC-DEF….Back in Actionist, pick a saved credential from the combobox (recommended) or paste the token into the Bot token field. If you pick a vault credential, a shield icon confirms: “Resolved from your vault at gateway connect. Never stored locally.”
@usernames in the allowlist field (placeholder: 123456789, @username). Leave the field empty to allow anyone who finds the bot to message it.getMe with the token to verify it resolves to a real bot.
On success: status changes to Connected and shows the bot’s username. On failure: Connection failed with the rejection detail from Telegram.
On every subsequent app launch, Actionist reconnects automatically (up to 8 attempts, 1.5 s apart). Bot commands /start, /help, /reset, and /stop are registered at the same time.api.slack.com/apps and create a new app. You need to:- Enable Socket Mode under Settings — this maintains a persistent outbound WebSocket so no public HTTPS endpoint is needed.
- Grant these bot scopes under OAuth and Permissions:
chat:write,im:history,channels:history,groups:history. - Copy both tokens: the Bot token (starts
xoxb-) and the App-level token (startsxapp-).
Back in Actionist, enter or pick both tokens. Both must come from the same source — either both pasted or both picked from the vault. Mixing is rejected with: “Both the bot token and the app-level token are required — paste both, or pick saved credentials for both.”
[a-z0-9_-] as you type.This is how users route messages to this agent in a shared Slack channel: they type
@mention-name do something. The mention name must be unique across every agent sharing the same Slack app — a duplicate produces a validation error on save.auth.test with the bot token to confirm it is reachable.
On success: status shows Connected to [workspace name]. On failure: Connection failed — confirm that Socket Mode is enabled and all four scopes are granted.Watch mention routing in a shared channel.
A shared Slack app routes messages by @mention-name prefix. Messages without a matching mention are silently dropped — they never reach any agent. Pick a message scenario:
@support — Actionist matches this to the agent whose mention name is support and forwards the full message text. The agent replies in the same thread.@finance matches the second agent’s mention name. The same Slack app hosts both agents; the mention prefix determines which one handles the message.@mention-name prefix — the message is a general team conversation. Actionist ignores it. Neither agent wakes up; no reply is sent. Direct messages to the bot always route without a mention; only shared-channel messages need the prefix.Manage a running agent from the chat.
Four commands are registered on every Telegram bot at connect time. Send them in the conversation from any device.
/start/help/reset/stop/reset and /stop are Telegram bot commands registered at connect time. Slack does not have equivalent slash commands.Understand the difference between /reset and /stop
Understand the difference between /reset and /stop
/reset— clears the agent’s transcript context. The chat row, agent binding, and Telegram peer link are untouched. Use it when the agent has accumulated context from a long session and is no longer behaving as expected./stop— aborts any work the agent is actively executing right now. Conversation context is preserved; your next message continues normally.
Inline approvals on Telegram and Slack
Inline approvals on Telegram and Slack
- On Telegram: the request appears with Approve and Deny buttons rendered as an inline keyboard below the message.
- On Slack: the same request uses Block Kit action buttons in the message.
47 recipients · Q3_Report.pdf
24/7 uptime requires a VPS.
Agents running on Local Desktop stop responding when your machine sleeps. Pair the agent with a Paired VPS runtime to keep bots online around the clock.
The Channels tab shows a RuntimeScopeBadge at the top — either Local Desktop or Paired VPS — so you always know which runtime owns the connection.
When an agent is homed to a Paired VPS and you open its Channels tab from the desktop app:- The tab is read-only. The wizard fields are replaced by a “Managed on Paired VPS” card.
- To edit channel settings, open Actionist on the VPS itself.
Set up cloud runtime
Tokens never touch local storage.
When you pick a vault credential instead of pasting a token, Actionist resolves it server-side at connect time. The plaintext token is never written to the agent config or local disk.
Unauthorized Telegram users are rejected before any message reaches the agent.
The Slack app maintains a persistent outbound WebSocket — there is no public HTTPS endpoint to expose or protect.
A desktop runtime cannot start bots homed to a VPS, and vice versa. The scope check runs at connect time.
Five stops from message to reply.
Tips that prevent the common issues.
Use vault credentials, not pasted tokens
Use vault credentials, not pasted tokens
Credentials vault
Lock down the Telegram allowlist before sharing the bot username
Lock down the Telegram allowlist before sharing the bot username
@usernames are accepted.Keep Slack mention names short, lowercase, and unique
Keep Slack mention names short, lowercase, and unique
[a-z0-9_-] as you type. Duplicate names across agents sharing the same Slack app produce a server-side validation error on save. Keep each name distinct: support, finance, research.Understand the difference between /reset and /stop
Understand the difference between /reset and /stop
/reset— clears the agent’s transcript context. The chat row, agent binding, and Telegram peer link are untouched. Use it when the agent has accumulated context from a long session and is no longer behaving as expected./stop— aborts any work the agent is actively executing right now. Conversation context is preserved; your next message continues normally.
Resolve TELEGRAM_CONSUMER_CONFLICT (HTTP 409)
Resolve TELEGRAM_CONSUMER_CONFLICT (HTTP 409)
For 24/7 bots, pair channels with a VPS runtime
For 24/7 bots, pair channels with a VPS runtime
Limits and defaults.
| Setting | Value |
|---|---|
| Text attachment: supported types | .txt .md .csv .json .html .xml .yaml .yml .toml .ini .cfg .log .env |
| Photo attachment: photos per message | First photo only (passed as base64 for vision) |
| Required Slack bot scopes | chat:write, im:history, channels:history, groups:history |
| Slack connection mode | Socket Mode (persistent outbound WebSocket, no public endpoint) |
Put your agents on Telegram and Slack today.
Open the Dashboard, pick an agent, and follow the three-step wizard. Five minutes to a bot your team can message from anywhere.
Bot tokens vault-bound to this agent only.
Allowlist gating · Socket Mode · Runtime-scope isolation.