puppet style slack bridge for matrix
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.



This is an unofficial matrix slack bridge that works by means of user puppetting.

Get your user_access_token from here:


The bridge uses that access token to connect as a client using the slack RTM API.

This technique does not require admin on the slack team; instead, the bridge is simply a custom slack client.

The bridge supports multiple teams at once, see the config.sample.json


clone this repo

cd into the directory

run npm install


Copy config.sample.json to config.json and update it to match your setup. Add as many teams as you like by adding them to the array.

register the app service

Generate an slack-registration.yaml file with node index.js -r -u "http://your-bridge-server:8090"

Note: The 'registration' setting in the config.json needs to set to the path of this file. By default, it already is.

Copy this slack-registration.yaml file to your home server. Make sure that from the perspective of the homeserver, the url is correctly pointing to your bridge server. e.g. url: 'http://your-bridge-server.example.org:8090' and is reachable.

Edit your homeserver.yaml file and update the app_service_config_files with the path to the slack-registration.yaml file.

Launch the bridge with node index.js.

Restart your HS.

Features and Roadmap

  • Multi-team
  • Channel messages
  • Direct messages
  • Recieving
  • Initiating
  • Matrix -> Slack
    • Text content
    • Image content
    • Audio/Video content
    • Typing notifs
    • User Profiles
  • Slack -> Matrix
    • Text content
    • Image/Audio/Video content as protected link to slack
    • Image/Audio/Video content as upload & embed to matrix
    • Typing notifs
    • User Profiles
    • Presence
  • Third Party Lookup
  • Rooms
  • Users
  • Puppet a user's real Slack account.
  • Rooms react to Slack updates