When a pylon job finishes, Pylon sends the agent’s output to a channel. Channels also handle the approval flow — whenDocumentation Index
Fetch the complete documentation index at: https://docs.pylon.to/llms.txt
Use this file to discover all available pages before exploring further.
approval: true, Pylon sends a notification with Investigate and Ignore buttons before the agent runs, and waits for a human to respond.
You configure a channel under the channel key in pylon.yaml. If you omit the channel block, Pylon falls back to the global defaults in ~/.pylon/config.yaml under defaults.channel.
Channel fields
| Field | Required | Description |
|---|---|---|
type | No | Channel backend: telegram, slack, stdout, or webhook. Falls back to global default. |
approval | No | When true, Pylon sends an approval notification before the agent runs. |
topic | No | Thread or group subject line, rendered as a template. |
message | No | Notification body, rendered as a template. Shown above approval buttons when approval: true. |
telegram | No | Telegram-specific config. Required when type: telegram. |
slack | No | Slack-specific config. Required when type: slack. |
Approval flow
Whenapproval: true, Pylon sends a notification with Investigate and Ignore buttons before starting the agent:
- Investigate — Pylon runs the agent and posts the result back to the channel.
- Ignore — Pylon discards the job with no agent run.
The approval flow is only supported for
webhook triggers. When type: cron, approval: true is ignored and the agent runs immediately.Telegram
Telegram support requires a bot token and a chat ID. Pylon uses the Telegram Bot API to send messages and render approval buttons.Telegram fields
| Field | Required | Description |
|---|---|---|
bot_token | Yes | Your Telegram bot token from BotFather. Supports ${ENV_VAR}. |
chat_id | Yes | The chat or group ID where Pylon sends messages. |
allowed_users | No | List of Telegram user IDs permitted to press approval buttons. If omitted, any member of the chat can approve. |
Slack
Slack support uses Socket Mode, which means Pylon maintains a persistent WebSocket connection to Slack — no public inbound URL required.Slack fields
| Field | Required | Description |
|---|---|---|
bot_token | Yes | Your Slack bot token (starts with xoxb-). Supports ${ENV_VAR}. |
app_token | Yes | Your Slack app-level token for Socket Mode (starts with xapp-). Supports ${ENV_VAR}. |
channel_id | Yes | The Slack channel ID (e.g. C1234567890). Not the channel name. |
allowed_users | No | List of Slack user IDs permitted to press approval buttons. If omitted, any workspace member can approve. |
stdout
Thestdout channel prints agent output directly to the Pylon process console. Useful for local development and testing.
Webhook
Thewebhook channel posts a JSON payload to any HTTP endpoint after the agent finishes.
Webhook channel configuration (endpoint URL, headers, etc.) is managed through the global config. Per-pylon webhook channel customization is not yet supported.
Per-pylon channel overrides
The channel configured inpylon.yaml takes priority over the global default. You can mix and match — use Telegram as the global default and override specific pylons to post to Slack:
Coming soon
The following channels are planned but not yet available:- Discord
- iMessage