mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 09:01:14 +00:00
| .. | ||
| src | ||
| CHANGELOG.md | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
@e9n/pi-channels
Two-way channel extension for pi — route messages between agents and Telegram, Slack, webhooks, or custom adapters.
Features
- Telegram adapter — bidirectional via Bot API; polling, voice/audio transcription,
allowedChatIdsfiltering - Slack adapter — bidirectional via Socket Mode + Web API
- Webhook adapter — outgoing HTTP POST to any URL
- Chat bridge — incoming messages are routed to the agent as prompts; responses sent back automatically; persistent (RPC) or stateless mode
- Event API —
channel:send,channel:receive,channel:registerfor inter-extension messaging - Custom adapters — register at runtime via
channel:registerevent
Settings
Add to ~/.pi/agent/settings.json or .pi/settings.json:
{
"pi-channels": {
"adapters": {
"telegram": {
"type": "telegram",
"botToken": "env:TELEGRAM_BOT_TOKEN",
"polling": true
},
"alerts": {
"type": "webhook",
"headers": { "Authorization": "env:WEBHOOK_SECRET" }
}
},
"routes": {
"ops": { "adapter": "telegram", "recipient": "-100987654321" }
},
"bridge": {
"enabled": false
}
}
}
Use "env:VAR_NAME" to reference environment variables. Project settings override global ones.
Adapter types
| Type | Direction | Key config |
|---|---|---|
telegram |
bidirectional | botToken, polling, parseMode, allowedChatIds, transcription |
slack |
bidirectional | botToken, appToken |
webhook |
outgoing | method, headers |
Bridge settings
| Key | Default | Description |
|---|---|---|
enabled |
false |
Enable on startup (also: --chat-bridge flag or /chat-bridge on) |
sessionMode |
"persistent" |
"persistent" = RPC subprocess with conversation memory; "stateless" = isolated per message |
sessionRules |
[] |
Per-sender mode overrides: [{ "match": "telegram:-100*", "mode": "stateless" }] |
idleTimeoutMinutes |
30 |
Kill idle persistent sessions after N minutes |
maxQueuePerSender |
5 |
Max queued messages per sender |
timeoutMs |
300000 |
Per-prompt timeout (ms) |
maxConcurrent |
2 |
Max senders processed in parallel |
typingIndicators |
true |
Send typing indicators while processing |
Tool: notify
| Action | Required params | Description |
|---|---|---|
send |
adapter, text |
Send a message via an adapter name or route alias |
list |
— | Show configured adapters and routes |
test |
adapter |
Send a test ping |
Commands
| Command | Description |
|---|---|
/chat-bridge |
Show bridge status (sessions, queue, active prompts) |
/chat-bridge on |
Start the chat bridge |
/chat-bridge off |
Stop the chat bridge |
Install
pi install npm:@e9n/pi-channels
License
MIT