Convert Figma logo to code with AI

42wim logomatterbridge

bridge between mattermost, IRC, gitter, xmpp, slack, discord, telegram, rocketchat, twitch, ssh-chat, zulip, whatsapp, keybase, matrix, microsoft teams, nextcloud, mumble, vk and more with REST API (mattermost not required!)

6,551
617
6,551
293

Top Related Projects

Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..

Dockerized GitLab

The communications platform that puts data protection first.

A glossy Matrix collaboration client for the web.

Quick Overview

Matterbridge is an open-source bridge between various chat platforms. It allows users to connect multiple messaging services, enabling cross-platform communication. Matterbridge supports a wide range of chat protocols and services, making it a versatile tool for integrating different communication channels.

Pros

  • Supports a large number of chat platforms and protocols
  • Highly configurable with a flexible TOML-based configuration
  • Active development and community support
  • Can be run as a standalone binary or in a Docker container

Cons

  • Setup can be complex, especially for multiple bridges
  • Some features may require additional configuration or plugins
  • Performance may degrade with a large number of connected bridges
  • Limited built-in web interface for management

Getting Started

  1. Download the latest release from the GitHub repository.
  2. Create a configuration file named matterbridge.toml in the same directory as the binary.
  3. Configure the bridges you want to use in the TOML file. Here's a basic example connecting IRC and Mattermost:
[irc]
    [irc.freenode]
    Server="irc.freenode.net:6667"
    Nick="matterbot"

[mattermost]
    [mattermost.myserver]
    Server="https://mattermost.example.com"
    Team="myteam"
    Login="matterbot@example.com"
    Password="password"

[[gateway]]
name="mygateway"
enable=true
    [[gateway.inout]]
    account="irc.freenode"
    channel="#mychannel"

    [[gateway.inout]]
    account="mattermost.myserver"
    channel="mychannel"
  1. Run the Matterbridge binary:
./matterbridge -conf matterbridge.toml

For more detailed instructions and advanced configurations, refer to the project's documentation on GitHub.

Competitor Comparisons

Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..

Pros of Mattermost

  • Full-featured, self-hosted team collaboration platform
  • Extensive customization and integration options
  • Active development with regular updates and enterprise support

Cons of Mattermost

  • More complex setup and maintenance
  • Higher resource requirements for hosting
  • Steeper learning curve for administrators

Code Comparison

Matterbridge (Go):

func (b *Bbridge) handleMatter() {
    for message := range b.msteam.Messages() {
        // Process and relay messages
    }
}

Mattermost (Go):

func (a *App) CreatePostAsUser(post *model.Post, currentSessionId string) (*model.Post, *model.AppError) {
    // Create and process posts
}

Matterbridge is focused on bridging different chat platforms, with simpler message handling code. Mattermost has more complex functionality for managing posts within its own platform.

Matterbridge is a lightweight solution for connecting multiple chat services, while Mattermost is a comprehensive team collaboration platform. Matterbridge is easier to set up and requires fewer resources, but Mattermost offers more features and customization options. Choose Matterbridge for simple cross-platform chat bridging, and Mattermost for a full-fledged team communication solution with advanced features and integrations.

Dockerized GitLab

Pros of docker-gitlab

  • Provides a complete GitLab solution in a Docker container, offering easier deployment and management
  • Includes built-in backup and restore functionality for GitLab data
  • Offers extensive configuration options through environment variables

Cons of docker-gitlab

  • Larger resource footprint due to running a full GitLab instance
  • More complex setup and maintenance compared to simpler chat bridge solutions
  • Limited to GitLab-specific functionality, not designed for cross-platform communication

Code Comparison

Matterbridge (config.toml):

[mattermost]
    [mattermost.team1]
    Server="https://mattermost.example.com"
    Team="team1"
    Login="matterbridge@example.com"
    Password="password"
    PrefixMessagesWithNick=true

docker-gitlab (docker-compose.yml):

gitlab:
  image: sameersbn/gitlab:latest
  environment:
    - GITLAB_HOST=gitlab.example.com
    - GITLAB_PORT=443
    - GITLAB_SSH_PORT=22
    - GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alphanumeric-string

While Matterbridge focuses on bridging multiple chat platforms, docker-gitlab provides a containerized GitLab instance. Matterbridge's configuration is simpler, centered around connecting different chat services. docker-gitlab's setup involves more complex Docker configurations and environment variables to customize the GitLab instance.

The communications platform that puts data protection first.

Pros of Rocket.Chat

  • Full-featured chat platform with a wide range of built-in functionality
  • Scalable solution suitable for large organizations
  • Active development with frequent updates and new features

Cons of Rocket.Chat

  • More complex setup and maintenance compared to Matterbridge
  • Higher resource requirements for hosting and running the platform
  • Steeper learning curve for administrators and users

Code Comparison

Rocket.Chat (JavaScript):

Meteor.startup(() => {
  RocketChat.settings.add('Site_Url', '', {
    type: 'string',
    group: 'General',
    public: true
  });
});

Matterbridge (Go):

func (b *Matterbridge) Connect() error {
    for _, gateway := range b.Gateways {
        err := gateway.Connect()
        if err != nil {
            return err
        }
    }
    return nil
}

Summary

Rocket.Chat is a comprehensive chat platform with extensive features, while Matterbridge focuses on bridging different chat protocols. Rocket.Chat offers a more complete solution but requires more resources and setup, whereas Matterbridge is lighter and easier to configure for specific bridging needs. The code examples highlight the different approaches: Rocket.Chat uses Meteor for settings, while Matterbridge employs Go for connecting gateways.

A glossy Matrix collaboration client for the web.

Pros of Element Web

  • Provides a full-featured web client for Matrix, offering a rich user interface and extensive functionality
  • Supports end-to-end encryption, enhancing privacy and security for users
  • Actively maintained with frequent updates and a large community of contributors

Cons of Element Web

  • Limited to Matrix protocol, lacking support for other chat platforms
  • Requires more resources to run and maintain compared to lightweight bridges
  • Steeper learning curve for users unfamiliar with Matrix ecosystem

Code Comparison

Element Web (React component):

export default class MessageComposer extends React.Component {
    onInputStateChanged = (inputState) => {
        // Handle input state changes
    };

    render() {
        return (
            <SendMessageComposer
                ref={this.composerRef}
                room={this.props.room}
                onInputStateChanged={this.onInputStateChanged}
            />
        );
    }
}

Matterbridge (Go function):

func (b *Mattermost) handleMatter() {
    for message := range b.mch {
        // Process incoming messages
        b.handleMatterMessage(message)
    }
}

The code snippets highlight the different approaches: Element Web uses React for its UI components, while Matterbridge focuses on message handling in Go.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

matterbridge

Matterbridge Logo
A simple chat bridge
Letting people be where they want to be.
Bridges between a growing number of protocols. Click below to demo or join the development chat.

Discord | Gitter | IRC | Keybase | Matrix | Mattermost | MSTeams | Rocket.Chat | Slack | Telegram | Twitch | WhatsApp | XMPP | Zulip | And more...


Download stable Maintainability Test Coverage


Note: Mattermost isn't required to run matterbridge.

Table of Contents

Features

Natively supported

3rd party via matterbridge api

Past 3rd party projects

API

The API is basic at the moment. More info and examples on the wiki.

Used by the projects below. Feel free to make a PR to add your project to this list.

Chat with us

Questions or want to test on your favorite platform? Join below:

Screenshots

See https://github.com/42wim/matterbridge/wiki

Installing / upgrading

Binaries

  • Latest stable release v1.26.0
  • Development releases (follows master) can be downloaded here selecting the latest green build and then artifacts.

To install or upgrade just download the latest binary. On *nix platforms you may need to make the binary executable - you can do this by running chmod a+x on the binary (example: chmod a+x matterbridge-1.24.1-linux-64bit). After downloading (and making the binary executable, if necessary), follow the instructions on the howto for a step by step walkthrough for creating your configuration.

Packages

Building

Most people just want to use binaries, you can find those here

If you really want to build from source, follow these instructions: Go 1.18+ is required. Make sure you have Go properly installed.

Building the binary with all the bridges enabled needs about 3GB RAM to compile. You can reduce this memory requirement to 0,5GB RAM by adding the nomsteams tag if you don't need/use the Microsoft Teams bridge.

Matterbridge can be build without gcc/c-compiler: If you're running on windows first run set CGO_ENABLED=0 on other platforms you prepend CGO_ENABLED=0 to the go build command. (eg CGO_ENABLED=0 go install github.com/42wim/matterbridge)

To install the latest stable run:

go install github.com/42wim/matterbridge

To install the latest dev run:

go install github.com/42wim/matterbridge@master

To install the latest stable run without msteams or zulip bridge:

go install -tags nomsteams,nozulip github.com/42wim/matterbridge

You should now have matterbridge binary in the ~/go/bin directory:

$ ls ~/go/bin/
matterbridge

Building with whatsapp (beta) multidevice support

Because the library we use for Whatsapp multidevice support includes a GPL3 library we can not provide you binaries. (as this would require the Matterbridge to change it license to GPL)

Matterbridge can be build without gcc/c-compiler: If you're running on windows first run set CGO_ENABLED=0 on other platforms you prepend CGO_ENABLED=0 to the go build command. (eg CGO_ENABLED=0 go install github.com/42wim/matterbridge)

So this means you have to build it yourself using the instructions below:

go install -tags whatsappmulti github.com/42wim/matterbridge@master

If you're low on memory and don't need msteams:

go install -tags nomsteams,whatsappmulti github.com/42wim/matterbridge@master

You should now have matterbridge binary in the ~/go/bin directory:

$ ls ~/go/bin/
matterbridge

Configuration

Basic configuration

See howto for a step by step walkthrough for creating your configuration.

Settings

All possible settings for each bridge.

Advanced configuration

Examples

Bridge mattermost (off-topic) - irc (#testing)

[irc]
    [irc.libera]
    Server="irc.libera.chat:6667"
    Nick="yourbotname"

[mattermost]
    [mattermost.work]
    Server="yourmattermostserver.tld"
    Team="yourteam"
    Login="yourlogin"
    Password="yourpass"
    PrefixMessagesWithNick=true
    RemoteNickFormat="[{PROTOCOL}] <{NICK}> "

[[gateway]]
name="mygateway"
enable=true
    [[gateway.inout]]
    account="irc.libera"
    channel="#testing"

    [[gateway.inout]]
    account="mattermost.work"
    channel="off-topic"

Bridge slack (#general) - discord (general)

[slack]
[slack.test]
Token="yourslacktoken"
PrefixMessagesWithNick=true

[discord]
[discord.test]
Token="yourdiscordtoken"
Server="yourdiscordservername"

[general]
RemoteNickFormat="[{PROTOCOL}/{BRIDGE}] <{NICK}> "

[[gateway]]
    name = "mygateway"
    enable=true

    [[gateway.inout]]
    account = "discord.test"
    channel="general"

    [[gateway.inout]]
    account ="slack.test"
    channel = "general"

Running

See howto for a step by step walkthrough for creating your configuration.

Usage of ./matterbridge:
  -conf string
        config file (default "matterbridge.toml")
  -debug
        enable debug
  -gops
        enable gops agent
  -version
        show version

Docker

Please take a look at the Docker Wiki page for more information.

Systemd

Please take a look at the Service Files page for more information.

Changelog

See changelog.md

FAQ

See FAQ

Related projects

Articles / Tutorials

Thanks

This project is supported by:

Matterbridge wouldn't exist without these libraries: