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.

**Portal rooms**: these control chunks of room aliases namespace. For example, `#freenode_`

corresponds to *#channelname*:matrix.org*#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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Matrix.org team | https://github.com/matrix-org/matrix-appservice-irc | JavaScript | Early 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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

leonerd, Half-Shot, illicitonion, Cadair and others | https://github.com/matrix-org/matrix-appservice-slack | JavaScript | Beta |

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!

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Keyvan Fatehi | https://github.com/matrix-hacks/matrix-puppet-slack | JavaScript | Beta |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Sorunome | https://github.com/Sorunome/mx-puppet-slack | TypeScript | #mx-puppet-bridge:sorunome.de | Late 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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Ryan Rix | https://code.rix.si/rrix/matrix-feedbot | Python | Beta |

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

Check it out from Ryan's git repo

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

LeoNerd | https://github.com/matrix-org/matrix-appservice-gitter | JavaScript | Early 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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Half-Shot | https://github.com/Half-Shot/matrix-appservice-discord | TypeScript | #discord:half-shot.uk | Beta |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Sorunome | https://github.com/matrix-discord/mx-puppet-discord | TypeScript | #mx-puppet-bridge:sorunome.de | Late 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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

exul | https://github.com/exul/matrix-rocketchat | Rust | Beta |

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

Find it on GitHub.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Keyvan Fatehi | https://github.com/matrix-hacks/matrix-puppet-imessage | JavaScript | Alpha |

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

Find the source on GitHub.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Keyvan Fatehi | https://github.com/matrix-hacks/matrix-puppet-facebook | JavaScript | Alpha |

This is a puppeted Facebook bridge for Matrix.

Get it from GitHub.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Tulir | https://github.com/tulir/mautrix-facebook | Python | #facebook:maunium.net | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Kamax.io and Open-Xchange | https://github.com/kamax-io/matrix-appservice-email | Java | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Jojii | https://github.com/JojiiOfficial/Matrix-EmailBridge | Go | #jojiiMail:matrix.jojii.de | Beta |

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.

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

https://gitlab.com/takitam_matrix | https://gitlab.com/takitam_matrix/matrix-email-bridge | Python | Alpha |

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

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Gerben Droogers | https://github.com/tijder/SmsMatrix | Java | Alpha |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Tulir | https://github.com/tulir/mautrix-telegram | Python | #telegram:maunium.net | Late 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/telegramAuthor | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Tulir | https://github.com/tulir/mautrix-whatsapp | Go | #whatsapp:maunium.net | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Cadair | https://github.com/Cadair/matrix-appservice-hangouts | Python | Alpha |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Tulir | https://github.com/tulir/mautrix-hangouts | Python | #hangouts:maunium.net | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

matrix-hacks | https://github.com/matrix-hacks/matrix-puppet-hangouts | JavaScript | Beta |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

ma1uta | https://github.com/ma1uta/mxtoot | Java | #mxtoot:matrix.org | Alpha |

A Matrix<->Mastodon bot written in Java.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Half-Shot | https://github.com/matrix-org/matrix-bifrost | TypeScript | #bifrost:half-shot.uk | Beta |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

matrix-hacks | https://github.com/matrix-hacks/matrix-puppet-groupme | JavaScript | #matrix-puppet-bridge:matrix.org | Beta |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

matrix-hacks | https://github.com/matrix-hacks/matrix-puppet-skype | JavaScript | #matrix-puppet-bridge:matrix.org | Beta |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Huan Li | https://github.com/huan/matrix-appservice-wechaty | TypeScript | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Sorunome | https://github.com/Sorunome/mx-puppet-tox | TypeScript | #mx-puppet-bridge:sorunome.de | Beta |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Sorunome | https://github.com/Sorunome/mx-puppet-twitter | TypeScript | #mx-puppet-bridge:sorunome.de | Alpha |

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.

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

mymindstorm | https://github.com/mymindstorm/matrix-appservice-mumble | TypeScript | #mumble-bridge:evermiss.net | Alpha |

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

Author | Repo | Language | Matrix Room | Maturity |
---|---|---|---|---|

Half-Shot | https://github.com/Half-Shot/matrix-keybase | TypeScript | #keybase:half-shot.uk | Early Alpha |

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