Bridges

An important idea in Matrix is Interoperability. This means that Matrix is open to exchanging data and messages with other platforms using an Open Standard. We refer to the connection to other platforms as bridging.

For a thorough examination of the different methods of bridging, and a discussion of the terminology involved, check out How do I bridge thee? Let me count the ways...

Currently recommened bridges are shown in the grid below.

Quick bridging concepts

Portal rooms: these control chunks of room aliases namespace. For example, #freenode_#channelname:matrix.org corresponds to #channelname on Freenode. In this way, Matrix users can transparently join IRC channels on Freenode. Portal rooms are typically managed by the remote network's side of the room.

Plumbed rooms: these rooms are "plumbed" into one or more specific remote rooms by configuring a bridge (which can be run by anyone). For instance, #matrix:matrix.org is plumbed into #matrix on Freenode, matrixdotorg/#matrix on Slack, etc. Access control for Matrix users is necessarily managed by the Matrix side of the room. This is useful for using Matrix to link together different communities.

Bridgebot-style: in this case, messages in either direction are conveyed by a bot residing on the given platform. This is a sub-optimal experience because metadata is lost. For example, all messages might be sent by the same bot, but with the message text prefixed with the name of the original sender.

Puppeting: solves the problems of Bot-based bridging by "puppeting", meaning controlling, a user on the other side of the bridge. This means that to native users, they see messages as being sent from the correct sender. Double-puppeting means this is done in both directions of the bridge. This is the most preferred way of implementing a Matrix bridge.



IRC

Matrix.org IRC Bridge

AuthorRepoLanguageMatrix RoomMaturity
Matrix.org teamhttps://github.com/matrix-org/matrix-appservice-ircJavaScriptEarly Beta

An application service gateway from Matrix.org for bridging between IRC networks and Matrix, written using matrix-appservice-node. You can get the code on github.

Supports dynamically bridging IRC channels on demand; synchronised user-lists, and other goodness.


Slack

matrix-appservice-slack

AuthorRepoLanguageMatrix RoomMaturity
leonerd, Half-Shot, illicitonion, Cadair and othershttps://github.com/matrix-org/matrix-appservice-slackJavaScriptBeta

This project bridges Slack to Matrix.

The bridge allows you to connect Matrix rooms and Slack channels together. It supports bridging via webhooks or via a dedicated slack integration (using the Events API). Currently the bridge supports sending text and files, with more advanced features like threading and sending direct messages coming in the future. matrix-appservice-slack is regularly hacked on and is accepting PRs for bug fixes and new features.

✓ Direct (1:1) Chats
✓ Group (‘Channel’) Chats
✗ History
✗ Typing notifications and read receipts
✓ Text Messages
✗ Formatted Text Content
✗ Image Content

When using Riot on riot.im, you can enable Slack integration per-room. Click the “Manage Integrations” (four squares) button at the top of the page.

Get it from github!

matrix-puppet-slack

AuthorRepoLanguageMatrix RoomMaturity
Keyvan Fatehihttps://github.com/matrix-hacks/matrix-puppet-slackJavaScriptBeta

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

Get your user_access_token from here:

https://api.slack.com/docs/oauth-test-tokens

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

✓ Direct (1:1) Chats
✓ Group (‘Channel’) Chats
✗ History
✓ Typing notifications (Slack → Matrix Only)
✗ Read receipts
✓ Text Messages
✓ Formatted Text Content
✓ Image Content
✓ Multi-team

matrix-puppet-slack is part of the matrix-puppet-bridge suite of puppetting bridges. It can be used for existing chats, rather than initiating new ones.

mx-puppet-slack

AuthorRepoLanguageMatrix RoomMaturity
Sorunomehttps://github.com/Sorunome/mx-puppet-slackTypescript#mx-puppet-bridge:sorunome.deLate Alpha

mx-puppet-slack bridges slack and matrix together via (double)puppeting. Additionally a relay mode can be enabled.

Direct (1:1) Chats Group ('Channel') Chats Plain Text
Formatted Messages
Media/files
Redactions/Deletions
Presence (Slack Matrix only)
Typing notifications (Slack Matrix only)
Replies
Edits
Reactions
Stickers
Multi-user
Multi-team
Initiate chats from matrix
History

This bridge is part of the mx-puppet-bridge suit of puppeting bridges.


RSS

feedbot

AuthorRepoLanguageMatrix RoomMaturity
Ryan Rixhttps://code.rix.si/rrix/matrix-feedbotPythonBeta

Connect to RSS and Twitter feeds via Ryan Rix's feedbot!

Check it out from Ryan's git repo


Gitter

matrix-appservice-gitter

AuthorRepoLanguageMatrix RoomMaturity
LeoNerdhttps://github.com/matrix-org/matrix-appservice-gitterJavaScriptEarly Beta

This project bridges Gitter to Matrix, via the AS API on the Matrix side, and a Gitter user on the Gitter side.

Get it from github.

✗ 1:1 Chats
✓ Group Chats
✗ Files
✗ Formatted Messages
✗ History
✗ Read Receipts
✗ Typing notifications

When using Riot on riot.im, you can enable Gitter integration per-room. Click the “Manage Integrations” (four squares) button at the top of the page.


Discord

matrix-appservice-discord

AuthorRepoLanguageMatrix RoomMaturity
Half-Shothttps://github.com/Half-Shot/matrix-appservice-discordTypeScript#discord:half-shot.ukBeta

This project bridges Discord to Matrix via the Application API.

Plain Text
Formatted Messages
Media/files
Redactions/Deletions
Presence (Discord Matrix only)
Typing notifications (Discord Matrix only)
Replies
Stickers
Puppeting ( Can configure to puppet via a script)
Group/1:1 Chats
Calls

You can self host matrix-appservice-discord in order to bridge your rooms from Discord, it is also available from t2bot.io at https://t2bot.io/discord.

mx-puppet-discord

AuthorRepoLanguageMatrix RoomMaturity
Sorunomehttps://github.com/matrix-discord/mx-puppet-discordTypescript#mx-puppet-bridge:sorunome.deLate Alpha

mx-puppet-discord discord slack and matrix together via (double)puppeting. Additionally a relay mode can be enabled.

Direct (1:1) Chats DM Group Chats Plain Text
Formatted Messages
Media/files
Redactions/Deletions
Presence (Discord Matrix only)
Typing notifications (Discord Matrix only)
Replies
Edits
Reactions
Stickers
Multi-user
Friends management
Initiate chats from matrix
History

This bridge is part of the mx-puppet-bridge suit of puppeting bridges.


RocketChat

matrix-rocketchat

AuthorRepoLanguageMatrix RoomMaturity
exulhttps://github.com/exul/matrix-rocketchatRustBeta

This is an application service that bridges Matrix to Rocket.Chat, written in Rust.

Find it on GitHub.


iMessage

matrix-appservice-imessage

AuthorRepoLanguageMatrix RoomMaturity
Keyvan Fatehihttps://github.com/matrix-hacks/matrix-puppet-imessageJavaScriptAlpha

This is a Matrix bridge for Apple iMessage. It connects your homeserver to Messages.app

Find the source on GitHub.


Facebook Messenger

matrix-appservice-facebook

AuthorRepoLanguageMatrix RoomMaturity
Keyvan Fatehihttps://github.com/matrix-hacks/matrix-puppet-facebookJavaScriptAlpha

This is a puppeted Facebook bridge for Matrix.

Get it from GitHub.

mautrix-facebook

AuthorRepoLanguageMatrix RoomMaturity
Tulirhttps://github.com/tulir/mautrix-facebookPython#facebook:maunium.netAlpha

A Matrix-Facebook Messenger puppeting bridge. Written in Python using fbchat-asyncio and mautrix-python.


Email

Matrix Email Bridge

AuthorRepoLanguageMatrix RoomMaturity
Kamax.io and Open-Xchangehttps://github.com/kamax-io/matrix-appservice-emailJavaAlpha

An application service gateway for bridging between Email and Matrix, written using Spring Boot (Java) using matrix-java-sdk. You can get the code on github.

Features:

  • Matrix to Email forwarding
  • Email to Matrix forwarding
  • Email <-> Matrix <-> Email forwarding, if several bridge users are present within a room
  • Fully configuration notification templates, per event
  • Subscription portal where E-mail users can manage their notifications

EmailBridge for matrix

A matrix-bridge written in GOlang to let you read and write your emails in matrix. You can have multiple emailaccounts in different private rooms.

Features

  • Receiving and sending emails
  • Use markdown for writing emails
  • Viewing HTML messages
  • And many more. Visit EmailBridge

Matrix-email Bridge from taki tam

AuthorRepoLanguageMatrix RoomMaturity
https://gitlab.com/takitam_matrixhttps://gitlab.com/takitam_matrix/matrix-email-bridgePythonAlpha

This repo contains (almost) transparent matrix gateway. Following features are implemented:

  • Sending and receiving emails, both plaintext and HTML.
    Bridge will dynamically create rooms and invite matrix users/mail puppets when new message appears, see 'Usage' section.
  • Turning matrix room into something like mailing list.
  • Sending and receiving attachments (looks ugly, see end of file).

Architecture overview

+-----------+                                        +-----------+
|           |             +---------------+          |           |
|           >===AS=API====>               >===SMTP===>           |
| Matrix HS |             |  Matrix-email |          |   Email   |
|           <===Client/===<     Bridge    <===LMTP===<   Server  |
|           |   AS API    |               |          |           |
|           |             +-------A-------+          |           |
|           |                     |                  |           |
+-----------+                     |                  +-----------+
                             +----V----+
                             |Bridge DB|
                             |  (SQL)  |
                             +---------+

SMS

SmsMatrix

AuthorRepoLanguageMatrix RoomMaturity
Gerben Droogershttps://github.com/tijder/SmsMatrixJavaAlpha

A simple Android SMS (text message) <--> Matrix bridge. With this bridge you can get all your text messages on Matrix and reply to them.

Get it and report issues at github, or install from F-Droid.


Telegram

mautrix-telegram

AuthorRepoLanguageMatrix RoomMaturity
Tulirhttps://github.com/tulir/mautrix-telegramPython#telegram:maunium.netLate Beta

A Matrix-Telegram hybrid puppeting/relaybot bridge. Written in Python using Telethon and mautrix-python.

✓ Send message content (text, formatting, files, etc..)
✓ Redact/delete messages
✓ Provide typing notifications and read receipts
✓ Read receipts (where applicable - Telegram does not support this in group chats)
✓ Images/Audio/Video/files

...and much more. Read the current feature list at https://github.com/tulir/mautrix-telegram.

mautrix-telegram can be self hosted, and is also available at t2bot.io: https://t2bot.io/telegram

WhatsApp

mautrix-whatsapp

AuthorRepoLanguageMatrix RoomMaturity
Tulirhttps://github.com/tulir/mautrix-whatsappGo#whatsapp:maunium.netAlpha

A Matrix-WhatsApp puppeting bridge. Written in Go using the Rhymen/go-whatsapp implementation of the sigalor/whatsapp-web-reveng project.

✓ 1:1 Chats
✓ Group Chats
✓ Redactions/Deletions
✓ Presence
✓ Read Receipts
✓ Typing notifications
✓ Plain text
✓ Formatted messages
✓ Media/files
✓ Replies


Google Hangouts

matrix-appservice-hangouts

AuthorRepoLanguageMatrix RoomMaturity
Cadairhttps://github.com/Cadair/matrix-appservice-hangoutsPythonAlpha

A prototype Matrix<->Hangouts appservice written in Python 3.6 using asyncio.

This is a matrix appservice with the objective of being a fully featured puppeting multi-user hangouts bridge.

This bridge is implemented in Python 3.6+ using asyncio and the hangups library. This library contains an asyncio implementation of parts of the matrix client-server API and the application service API.

mautrix-hangouts

AuthorRepoLanguageMatrix RoomMaturity
Tulirhttps://github.com/tulir/mautrix-hangoutsPython#hangouts:maunium.netAlpha

A Matrix-Hangouts puppeting bridge. Written in Python using hangups and mautrix-python.

matrix-puppet-hangouts

AuthorRepoLanguageMatrix RoomMaturity
matrix-hackshttps://github.com/matrix-hacks/matrix-puppet-hangoutsJavaScriptBeta

matrix-puppet-hangouts can be self-hosted, full setup instructions are available on the repo.


Mastodon

MXToot

AuthorRepoLanguageMatrix RoomMaturity
ma1utahttps://github.com/ma1uta/mxtootJava#mxtoot:matrix.orgAlpha

A Matrix<->Mastodon bot written in Java.


libpurple

matrix-bifrost

AuthorRepoLanguageMatrix RoomMaturity
Half-Shothttps://github.com/matrix-org/matrix-bifrostTypeScript#bifrost:half-shot.ukBeta

General purpose puppeting bridges using libpurple and other backends.

This bridge is in very active development currently and intended mainly for experimentation and evaluation purposes.


GroupMe

matrix-puppet-groupme

AuthorRepoLanguageMatrix RoomMaturity
matrix-hackshttps://github.com/matrix-hacks/matrix-puppet-groupmeJavaScript#matrix-puppet-bridge:matrix.orgBeta

This is a Matrix bridge for GroupMe

You will need to acquire your Access Token from GroupMe.

Get your access token by going to https://dev.groupme.com/ and clicking the "Access Token" link in the top right.


Skype

matrix-puppet-skype

AuthorRepoLanguageMatrix RoomMaturity
matrix-hackshttps://github.com/matrix-hacks/matrix-puppet-skypeJavaScript#matrix-puppet-bridge:matrix.orgBeta

This is a Matrix bridge for Skype. It uses skype-http under the hood.


WeChat

matrix-appservice-wechaty

AuthorRepoLanguageMatrix RoomMaturity
Huan Lihttps://github.com/huan/matrix-appservice-wechatyTypeScriptAlpha

matrix-appservice-wechaty is a new project to bridge Matrix with WeChat.


Tox

mx-puppet-tox

AuthorRepoLanguageMatrix RoomMaturity
Sorunomehttps://github.com/Sorunome/mx-puppet-toxTypescript#mx-puppet-bridge:sorunome.deBeta

mx-puppet-tox bridges tox and matrix together via (double)puppeting. It basically acts as a tox client for matrix.

Direct (1:1) Chats
Group Chats
Plain Text
Formatted Messages (unsuported by tox)
Media/files
Presence (Tox Matrix only)
Typing notifications (Tox Matrix only)
Multi-user

This bridge is part of the mx-puppet-bridge suit of puppeting bridges.


Twitter

mx-puppet-twitter

AuthorRepoLanguageMatrix RoomMaturity
Sorunomehttps://github.com/Sorunome/mx-puppet-twitterTypescript#mx-puppet-bridge:sorunome.deAlpha

mx-puppet-twitter bridges twitter and matrix together via (double)puppeting.

Direct (1:1) Chats
Tweets
Plain Text
Formatted Messages
Media/files

This bridge is part of the mx-puppet-bridge suit of puppeting bridges.


Mumble

matrix-appservice-mumble

AuthorRepoLanguageMatrix RoomMaturity
mymindstormhttps://github.com/mymindstorm/matrix-appservice-mumbleTypeScript#mumble-bridge:evermiss.netAlpha

A simple Matrix to Mumble (Murmur) bridge using gRPC. Currently, it bridges one channel in Matrix to a server in Murmur.

Direct Chats
Presence (using messages)
Formatted Text Content
Image Content
Calls


Keybase

Matrix Keybase

AuthorRepoLanguageMatrix RoomMaturity
Half-Shothttps://github.com/Half-Shot/matrix-keybaseTypeScript#keybase:half-shot.ukEarly Alpha

A bridge that connects a user's Keybase account to their Matrix account.