{"id":13783511,"url":"https://github.com/matrix-hacks/matrix-puppet-slack","last_synced_at":"2026-01-16T19:23:11.405Z","repository":{"id":15479968,"uuid":"78233270","full_name":"matrix-hacks/matrix-puppet-slack","owner":"matrix-hacks","description":"puppet style slack bridge for matrix","archived":false,"fork":false,"pushed_at":"2022-06-11T19:19:43.000Z","size":151,"stargazers_count":48,"open_issues_count":36,"forks_count":17,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-05-06T21:34:16.559Z","etag":null,"topics":["bridge","matrix","slack"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matrix-hacks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-01-06T19:37:02.000Z","updated_at":"2025-02-22T11:49:21.000Z","dependencies_parsed_at":"2022-08-18T05:15:29.066Z","dependency_job_id":null,"html_url":"https://github.com/matrix-hacks/matrix-puppet-slack","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-hacks%2Fmatrix-puppet-slack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-hacks%2Fmatrix-puppet-slack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-hacks%2Fmatrix-puppet-slack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matrix-hacks%2Fmatrix-puppet-slack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matrix-hacks","download_url":"https://codeload.github.com/matrix-hacks/matrix-puppet-slack/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253620997,"owners_count":21937457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bridge","matrix","slack"],"created_at":"2024-08-03T19:00:23.442Z","updated_at":"2026-01-16T19:23:11.378Z","avatar_url":"https://github.com/matrix-hacks.png","language":"JavaScript","funding_links":[],"categories":["Bridges"],"sub_categories":["Slack"],"readme":"# matrix-puppet-slack [![#matrix-puppet-bridge:matrix.org](https://img.shields.io/matrix/matrix-puppet-bridge:matrix.org.svg?label=%23matrix-puppet-bridge%3Amatrix.org\u0026logo=matrix\u0026server_fqdn=matrix.org)](https://matrix.to/#/#matrix-puppet-bridge:matrix.org)\n\nThis is an unofficial matrix slack bridge that works by means of [user puppetting](https://github.com/AndrewJDR/matrix-puppet-bridge).\n\nGet your `user_access_token` from here:\n\nhttps://api.slack.com/docs/oauth-test-tokens\n\nThe bridge uses that access token to connect as a client using the slack RTM API.\n\nThis technique does not require admin on the slack team; instead, the bridge is simply a custom slack client.\n\nThe bridge supports multiple teams at once, see the config.sample.json\n\n## installation\n\nclone this repo\n\ncd into the directory\n\nrun `npm install`\n\n## configure\n\nCopy `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.\n\nIf you are running another bridge that uses the default `slack` prefix, change the prefix now.  **You cannot change this value after the bridge has created rooms and ghost users.**\n\n## register the app service\n\nGenerate an `slack-registration.yaml` file with `node index.js -r -u \"http://your-bridge-server:8090\"`\n\nNote: The 'registration' setting in the config.json needs to set to the path of this file. By default, it already is.\n\nCopy 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.\n\nEdit your homeserver.yaml file and update the `app_service_config_files` with the path to the `slack-registration.yaml` file.\n\nLaunch the bridge with ```node index.js```.\n\nRestart your HS.\n\n## docker\n\nBuild the docker image with `docker build -t matrix-puppet-slack .`.\n\nCopy `config.sample.json` to `config.json` and update it to match your setup.\nYou can work in any directory you want as you have the docker image now.\nSet the `registrationPath` in the `config.json` to `/data/slack-registration.yaml`.\n\nGenerate the `slack-registration.yaml` file in the data volume with ``docker run --rm -it -v `pwd`/data:/data -v `pwd`/config.json:/usr/src/app/config.json matrix-puppet-slack node index.js -r -u \"http://your-bridge-server:8090\"``.\n\nAs discribed in [register the app service](#register-the-app-service)\ncopy the registration file to your homeserver and add it to your homeserver.yaml file.\n\nLaunch the bridge with ``docker run -v `pwd`/data:/data -v `pwd`/config.json:/usr/src/app/config.json matrix-puppet-slack`` or via docker-compose.\n\n## Discussion, Help and Support\n\nJoin us in the [![Matrix Puppet Bridge](https://user-images.githubusercontent.com/13843293/52007839-4b2f6580-24c7-11e9-9a6c-14d8fc0d0737.png)](https://matrix.to/#/#matrix-puppet-bridge:matrix.org) room\n\n## Features and Roadmap\n\n - [x] Multi-team\n - [x] Channel messages\n - [x] Direct messages\n  - [x] Recieving\n  - [ ] Initiating (https://github.com/matrix-hacks/matrix-puppet-slack/issues/50)\n - Matrix -\u003e Slack\n   - [x] Text content\n   - [x] Formatted Text content\n   - [x] Image content (m.image msgtype events)\n   - [x] Generic file uploads (m.file msgtype events)\n   - [ ] Audio (m.audio msgtype events) (https://github.com/matrix-hacks/matrix-puppet-slack/issues/66)\n   - [ ] Video content (m.video msgtype events) (https://github.com/matrix-hacks/matrix-puppet-slack/issues/67)\n   - [ ] Typing notifications\n   - [ ] Editing messages\n   - [ ] Redacting/deleting messages (https://github.com/matrix-hacks/matrix-puppet-slack/issues/52)\n   - [ ] User Profiles\n   - [ ] /me emotes (https://github.com/matrix-hacks/matrix-puppet-slack/issues/17)\n   - [x] @-mentions\n   - [x] @room, as @channel\n - Slack -\u003e Matrix\n   - [x] Text content\n   - [x] Formatted Text content\n   - [x] Image/Audio/Video content as protected link to slack\n   - [x] Image/Audio/Video content as upload \u0026 embed to matrix\n   - [x] Image/Audio/Video content message text\n   - [x] Typing notifications\n   - [ ] Emoji reactions (https://github.com/matrix-hacks/matrix-puppet-slack/issues/60)\n   - [x] Thread replies, as ordinary messages\n   - [ ] Thread replies, as Matrix replies (https://github.com/matrix-hacks/matrix-puppet-slack/issues/58)\n   - [x] Editing messages\n   - [ ] Redacting/deleting messages\n   - [ ] User Profiles\n   - [ ] /me emotes (https://github.com/matrix-hacks/matrix-puppet-slack/issues/17)\n   - [ ] Presence\n   - [x] @-mentions\n   - [ ] @channel/@here, as @room (Slack users' Matrix ghost users must have permission to @room notify in the Slack channel's Matrix ghost room; converting is not enough)\n - [x] Third Party Lookup\n  - [x] Rooms\n  - [x] Users\n - [x] Puppet a user's real Slack account.\n - [ ] Rooms react to Slack updates\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-hacks%2Fmatrix-puppet-slack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatrix-hacks%2Fmatrix-puppet-slack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatrix-hacks%2Fmatrix-puppet-slack/lists"}