Based on mautrix-slack. Supports modern Slack workspaces (both free and paid plans). Channels become Matrix rooms, your full workspace becomes a Matrix space, and DMs / threads / reactions all sync bi-directionally.
@slackbot:<your-name>.meldry.com.There are two ways to authenticate; pick one.
This uses your personal Slack user token — the same credential the Slack desktop/web app uses.
https://app.slack.com.localConfig_v2. Inside it, locate the token field for your workspace — it starts with xoxc-....d cookie in Cookies → https://app.slack.com — starts with xoxd-....@slackbot:<your-name>.meldry.com:
login-token xoxc-... xoxd-...
Successfully logged in as @yourname on My Workspace.Repeat for additional workspaces — each login-token call adds one workspace.
https://<your-name>.meldry.com/slack/install.login in the bridge bot DM — they're redirected to Slack's OAuth consent screen.Logged in via OAuth.OAuth gives cleaner per-user auth and survives Slack password changes; token auth can break when your Slack session expires.
@user on Matrix maps to <@UXXX> on Slack and vice versa.By default, after login, all channels you're a member of get bridged. If you don't want that — say, only bridge one or two rooms — pass --no-auto-join in your login command and then run:
join !matrix-room-id #slack-channel-name
| Command | What it does |
|---|---|
login | OAuth login flow |
login-token xoxc-... xoxd-... | Personal-token login |
logout | Unlink the current workspace |
workspaces | List all linked workspaces |
join <matrix-room> <slack-channel> | Manually bridge a specific channel |
sync | Force a full resync |
help | Full command list |
"Invalid tokens" — Your xoxc or xoxd credentials have expired. Log in to Slack in your browser again and copy fresh values.
Missing channels after login — Slack's token-auth only sees channels you're explicitly a member of. Join the channel in Slack first, then run sync.
Emoji not translating — Custom workspace emoji need to be uploaded to Matrix separately. The bridge handles standard emoji automatically.
Slow backfill — Workspaces with thousands of channels take several minutes to import. The sync command is chunked; progress shows in the bridge DM.
"Workspace is paywalled" — Slack free plans limit message history to 90 days. The bridge can only backfill what Slack's API returns.
To remove a single workspace: logout in the bridge bot DM will prompt you for which workspace. To remove the bridge entirely and free up a bridge slot, disable it from Dashboard → Server → Bridges.