Adapters

Each adapter is a standalone daemon that speaks the channel protocol. They run as separate containers in the compose stack. All Go adapters share chanlib/ for HTTP + auth primitives.

AdapterLanguagePlatformJID prefix
teledGoTelegram Bot APItelegram:
discdGoDiscord Gatewaydiscord:
mastdGoMastodonmastodon:
bskydGoBlueskybluesky:
reditdGoRedditreddit:
emaidGoEmail (IMAP/SMTP)email:
whapdTypeScriptWhatsAppwhatsapp:

teled โ€” Telegram

Auth: TELEGRAM_BOT_TOKEN env var. Uses Telegram Bot API long polling (getUpdates with offset tracking).

JID format: telegram:<chat_id>. Groups use negative chat IDs (e.g. telegram:-100123456789). Private chats use positive user IDs.

Notable behaviors:

discd โ€” Discord

Auth: DISCORD_BOT_TOKEN env var. Uses Discord Gateway websocket connection with automatic reconnect and session resume.

JID format: discord:<channel_id>. DMs use the DM channel ID, not the user ID.

Notable behaviors:

mastd โ€” Mastodon

Auth: MASTODON_ACCESS_TOKEN and MASTODON_SERVER (e.g. https://mastodon.social). Uses the Mastodon streaming API websocket for real-time notifications.

JID format: mastodon:<account_id>@<server>.

Notable behaviors:

bskyd โ€” Bluesky

Auth: BSKY_HANDLE and BSKY_APP_PASSWORD. Connects to the AT Protocol firehose and filters for mentions of the configured account.

JID format: bluesky:<did>. DIDs are stable identifiers even if the handle changes.

Notable behaviors:

reditd โ€” Reddit

Auth: OAuth2 script-type app credentials (REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_USERNAME, REDDIT_PASSWORD). Polls inbox and optionally monitors subreddits.

JID format: reddit:<username> for DMs, reddit:r/<subreddit> for subreddit monitoring.

Notable behaviors:

emaid โ€” Email

Auth: EMAIL_IMAP_HOST, EMAIL_IMAP_PORT, EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_USERNAME, EMAIL_PASSWORD. IMAP uses TLS; SMTP uses STARTTLS.

JID format: email:<from_address>.

Notable behaviors:

whapd โ€” WhatsApp

Language: TypeScript. Uses the Baileys multidevice library.

Auth: Phone-number pairing. On first run, start with --pair <phone_number>; the library generates a pairing code to enter in the WhatsApp mobile app. Session credentials are persisted to disk and reused on subsequent starts.

JID format: whatsapp:<phone_number>@s.whatsapp.net for individuals, whatsapp:<group_id>@g.us for WhatsApp groups.

Notable behaviors: