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 teamJavaScriptEarly 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.


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


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.


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.


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

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


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.

✓ 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 (WhatsApp → Matrix only)
✓ Read Receipts (WhatsApp → Matrix only)
✓ Typing notifications (WhatsApp → Matrix only)
✓ 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#purple-bridge: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.