Channels¶
This page explains how Pynchy connects to messaging platforms. Channels are how you talk to your assistant — whether through WhatsApp, Slack, or a terminal UI.
Channels are pluggable. The built-in options cover common platforms, but you can add more (Telegram, Discord, etc.) via plugins.
Multi-Channel Sync¶
All channels see the same messages. Send a message from WhatsApp, and the response shows up in Slack and the TUI too. This means you can:
- Start a conversation on your phone (WhatsApp) and continue at your desk (TUI or Slack)
- Monitor agent activity from any connected platform
- Use whichever channel is most convenient at the moment
Under the hood, all outbound messages route through a unified broadcast bus. Each channel maps its platform-specific identifiers (WhatsApp phone numbers, Slack channel IDs) to a canonical group ID, so the agent sees one conversation regardless of which channels are connected.
Built-in: WhatsApp¶
The primary channel for most users. Uses the neonize library (whatsmeow Python bindings).
Setup:
uv sync --extra whatsapp # Install WhatsApp dependencies
uv run pynchy-whatsapp-auth # Scan QR code to link your phone
Features:
- Group and self-chat support
- Typing indicators and read receipts
- Streaming responses (updates in-place as the agent types)
- Media messages (images, documents)
Notes:
- WhatsApp linked devices expire after ~30 days of inactivity — re-run auth if disconnected
- The admin channel is typically your WhatsApp self-chat (private messages to yourself)
Built-in: Slack¶
Connects via Slack's Socket Mode using the Bolt library. Maps Slack channels and DMs to Pynchy groups.
Setup:
- Create a Slack app with Socket Mode enabled
- Add bot token and app token to
config.toml:
- Install dependencies:
Features:
- Channel and DM support
- Slack Assistant API panel integration
- Streaming message updates (edits messages in-place)
- Markdown formatting
Built-in: TUI¶
A terminal UI client built with Textual. Connects to Pynchy's HTTP/SSE server — no external service needed.
Usage:
The TUI is always available — no configuration or extra dependencies required.
Enabling and Disabling Channels¶
Channels activate automatically when their dependencies are installed and configured. To disable a specific channel:
If a channel's dependencies aren't installed or its config section is missing, it's silently skipped at startup.
Default Channel¶
The default channel determines which platform creates the admin channel on first run:
Want to customize this? Write your own channel plugin — see the Plugin Authoring Guide. Have an idea but don't want to build it? Open a feature request.