Based on mautrix-signal. Pairs as a Signal linked device — the same way Signal Desktop works — so your Signal identity, groups and contacts flow into Matrix with full Signal-protocol E2EE preserved on the Signal side.
@signalbot:<your-name>.meldry.com.Signal's linked-device flow is QR-code-based, same as WhatsApp.
@signalbot:<your-name>.meldry.com.link.Successfully linked as +14155550001.Signal is ruthlessly E2EE and doesn't give linked devices direct message history. The bridge starts receiving messages from the moment you pair — there's no backfill of older history. Messages sent while your phone was offline will come through once it reconnects.
| Command | What it does |
|---|---|
link | Start the linked-device QR flow |
unlink | Unlink (also removes the device from the phone's linked-devices list) |
status | Show link health |
list-contacts | List Signal contacts |
pm <+countrynumber> | Start a DM with a Signal number |
sync-contacts | Force contact re-sync |
help | Full command list |
Signal identifies contacts by safety numbers — a fingerprint you compare in-person to confirm you're talking to the right person. The bridge exposes them:
safety <matrix-user-id> in the bridge DM to view a contact's safety number.QR code expired — run link again for a fresh one (expires every ~30 seconds).
"Primary device went away" — if your phone is factory-reset or you delete Signal on it, every linked device (including the bridge) is kicked. Set up Signal on the phone again, then re-link.
Messages delivered on phone but not on Matrix — check the bridge DM for a status report. If it shows registration lock, you've added a Signal PIN — re-run link to re-pair.
Group changes not syncing — large group admin events batch; wait 30 seconds and run sync-contacts.
Media fails to decrypt — very rarely, Signal's attachment cipher rotates and old links break. Re-send the image from the original chat.