explaingit

42wim/matterbridge

7,473GoAudience · ops devopsComplexity · 3/5Setup · moderate

TLDR

A background service that bridges messages between 20+ chat platforms, type in Discord and your message appears in IRC, Telegram, Slack, Matrix, and more at the same time.

Mindmap

mindmap
  root((matterbridge))
    What it does
      Bridge chat platforms
      Forward messages
      Relay attachments
    Platforms
      Discord and Slack
      Telegram and Matrix
      IRC and Teams
    Setup
      Single config file
      Docker image
      Systemd service
    Audience
      Community managers
      DevOps teams
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Keep a community together by forwarding messages between Discord, IRC, and Matrix channels in real time.

USE CASE 2

Bridge a support channel to Slack while linking a separate channel to Telegram from one config file.

USE CASE 3

Run a cross-platform chat relay as a systemd daemon or Docker container with pre-built binaries.

USE CASE 4

Extend support to additional platforms via the built-in REST API and community plugins.

Tech stack

GoDocker

Getting it running

Difficulty · moderate Time to first run · 30min

Requires creating a config file with API tokens or credentials for each platform you want to connect.

In plain English

Matterbridge is a chat bridge that connects different messaging platforms so that messages sent in one chat system appear in another. It runs as a single background process and can link channels across a wide range of services, including Discord, Slack, Telegram, Matrix, IRC, Mattermost, Rocket.Chat, Microsoft Teams, XMPP, WhatsApp, Zulip, Nextcloud Talk, Twitch, Keybase, Mumble, VK, and Gitter. The core use case is keeping communities together even when members prefer different chat clients. A message typed in a Discord channel, for example, can be forwarded to the corresponding IRC channel and a Matrix room at the same time, with the sender's name shown in each destination. Matterbridge handles message edits and deletes where the target platform supports it, preserves threading when possible, relays file attachments, and can spoof display names and avatars so messages look as if they came from the original sender. Configuration is done through a single text file that defines which services to connect and which channels to bridge together. Multiple independent bridges can run from the same configuration, so a server can bridge its support channel to Slack while also bridging a different channel to Telegram. Pre-built binaries are available for Linux, macOS, and Windows, and there is a Docker image for running it as a service. Systemd unit files are also provided for running it as a daemon on Linux servers. A basic REST API is included for connecting additional platforms through third-party plugins. Community-built integrations have extended support to Minecraft server chat, Teamspeak, Counter-Strike via AMXX, and others. Despite the name, Mattermost is not required, it is simply one of the many supported protocols.

Copy-paste prompts

Prompt 1
Help me write a matterbridge config file that bridges my Discord #general channel to an IRC channel on Libera.Chat and a Matrix room simultaneously.
Prompt 2
Set up matterbridge as a systemd service on Ubuntu so it restarts automatically and bridges Telegram to Slack with spoofed display names.
Prompt 3
Write a matterbridge configuration for three platforms, Discord, Slack, and Telegram, that shows the original sender's name in each destination.
Prompt 4
Help me add a custom platform to matterbridge using its REST API to connect a bot that isn't natively supported.
Prompt 5
Debug why matterbridge is not forwarding file attachments from Discord to Matrix, walk me through the config and log output.
Open on GitHub → Explain another repo

← 42wim on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.