WhatsApp, Signal & friends

There is no WhatsApp, Signal, Slack, iMessage or Discord code in this app, and there will not be. Those networks either forbid a third-party client on your personal account or provide no way to build one.

What the app has is Matrix, and Matrix has bridges.

A bridge is a program that runs next to a Matrix homeserver, signs in to the other network as you, and turns each chat there into a Matrix chat. Connect this app to that homeserver (Protocols → Matrix) and those chats appear in your list like any other Matrix chat.

Actions such as polls, edits, redactions, pins, typing and mentions work on the Matrix side when the homeserver permits them. Whether an action also appears on the remote network depends on that bridge's implementation and settings, and on the remote network's API. Check the bridge's own feature list before relying on remote delivery.

What you can bridge

The mautrix bridges cover most of what people ask for:

NetworkBridgeHow it signs in
WhatsAppmautrix-whatsappLinks as a device, like WhatsApp Web
Signalmautrix-signalLinks as a device
iMessagemautrix-imessageRuns on a Mac that stays on
Messenger, Instagrammautrix-metaYour Facebook or Instagram login
Google Messages (SMS/RCS)mautrix-gmessagesPairs with your Android phone
Slackmautrix-slackYour Slack login
Discordmautrix-discordYour Discord login
X, LinkedIn, Bluesky, Google Chat, Google Voice, Zulip, IRCone bridge eachVaries

What you need

A Matrix homeserver you control, with the bridge installed next to it: a small server, a VPS or a box at home, and an afternoon. Your own homeserver walks through one with Messenger, Instagram, Slack and Discord, and the mautrix documentation at docs.mau.fi covers every other bridge.

If you would rather not run a homeserver, Beeper's bridge manager runs the same bridges against a hosted one.

What to know before you rely on it

The bridge sees everything. It decrypts what it relays, on the machine where it runs. The Matrix leg between the bridge and this app can be encrypted; the bridge itself holds plaintext. Put it somewhere you trust as much as you trust your phone.

The bridge is you, on the other network. WhatsApp and Signal treat it as a linked device and are fine with that. Discord forbids unofficial clients, and Meta sometimes locks accounts that look automated. That is between you and those networks; this app cannot change it.

It is only as reachable as your server. If the bridge is down, messages wait on the other network until it comes back.

Edit this page on GitHub