XMPP

XMPP

XMPP is an open chat protocols that has been around for more than 25 years and is still going strong.

XMPP was used by many Cloud providers (Google, Facebook etc.) to develop their own proprietary chat services. Unfortunately after using XMPP as a quick start to suck in their user base almost zero of them contributed back, in fact most went opposite to its philosophy and cut off XMPP support to lock their user base in.

1. Compared with Other Protocols

Although much older, XMPP has been constantly evolving and remains superior to newer federated messaging protocols like Matrix (e.g. used by Element) and Activitypub (e.g. used by Mastodon) for realtime chatting between humans.

Team Compute can make use of ANY chat protocol, but XMPP has been selected as the default instead of Matrix because:

  1. Matrix has only one stable server (e.g. Synapse) while XMPP has many stable servers (e.g. ejabberd, prosody, openfire etc.).
  2. Matrix was designed for synchronisation while XMPP has been designed for messaging.

XMPP to Matrix bridges (e.g. Matridge and Matrix-bifrost) are available for bridging between XMPP and Matrix.

2. End-to-End Encryption

XMPP mostly use one of two end-to-end encryption schemes, OMEMO and OTR.

Some good discussion of both is available here:

There has been at least one third-party audit of OMEMO, but both are better than FAKE end-to-end encryption apps (e.g. Whatsapp) that runs your message server AND gives you a closed source client.

Increasing number of XMMP client now supports the OMEMO end-to-end encryption standard:

WARNING: Just because an XMPP client supports OMEMO does not mean that the attachments (the files uploaded) are also encrypted. For example, as of 2025-07-01, Movim does NOT encrypt the uploaded files while Converse DOES. Please check the XMPP client you are using.

3. Multi-User Chat

XMPP's Multi-User Chat (MUC) is not federated, which can be a problem in certain applications.

MUC federation standard has been proposed, but have no been taken up by the XMPP community at this stage.

References

XMPP Web Clients

Web browser based XMPP clients can be used without software installation on your device:

  1. movim xmpp client (this is the default)
  2. converse.js xmpp client (has plugins).

All support end-to-end encryption using OMEMO (although might not cover all information exchanges e.g. encrypted text chat but not file sharing).

Some other interesting XMPP Web Clients (no tested yet):

  1. https://libervia.org
  2. https://moxxy.org

Below we are comparing those 2 web clients with each other and with another popular but less active web client called jsxc which is available as an option inside Data Nodes under the Nextcloud module.

conversejs_web jsxc_web movim_web url note
RFC-7395 RFC 7395 - An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket
XEP-0004 XEP-0004 XEP-0004 XEP-0004: Data Forms
XEP-0012 XEP-0012: Last Activity
XEP-0030 XEP-0030 XEP-0030 XEP-0030: Service Discovery
XEP-0045 XEP-0045 XEP-0045 XEP-0045: Multi-User Chat
XEP-0048 XEP-0048 XEP-0048 XEP-0048: Bookmarks
XEP-0049 XEP-0049: Private XML Storage
XEP-0050 XEP-0050 XEP-0050: Ad-Hoc Commands
XEP-0054 XEP-0054 XEP-0054 XEP-0054: vcard-temp
XEP-0059 XEP-0059 XEP-0059: Result Set Management
XEP-0060 XEP-0060 XEP-0060 XEP-0060: Publish-Subscribe
XEP-0066 XEP-0066: Out of Band Data
XEP-0070 XEP-0070: Verifying HTTP Requests via XMPP
XEP-0071 XEP-0071: XHTML-IM
XEP-0077 XEP-0077 XEP-0077 XEP-0077: In-Band Registration
XEP-0080 XEP-0080: User Location
XEP-0084 XEP-0084: User Avatar
XEP-0085 XEP-0085 XEP-0085 XEP-0085: Chat State Notifications
XEP-0092 XEP-0092 XEP-0092: Software Version
XEP-0100 XEP-0100: Gateway Interaction
XEP-0106 XEP-0106: JID Escaping
XEP-0107 XEP-0107: User Mood
XEP-0108 XEP-0108: User Activity
XEP-0115 XEP-0115 XEP-0115 XEP-0115: Entity Capabilities
XEP-0118 XEP-0118: User Tune
XEP-0124 XEP-0124 XEP-0124 XEP-0124: Bidirectional-streams Over Synchronous HTTP (BOSH)
XEP-0144 XEP-0144: Roster Item Exchange
XEP-0147 XEP-0147: XMPP URI Scheme Query Components
XEP-0153 XEP-0153 XEP-0153: vCard-Based Avatars
XEP-0156 XEP-0156: Discovering Alternative XMPP Connection Methods
XEP-0157 XEP-0157: Contact Addresses for XMPP Services
XEP-0163 XEP-0163 XEP-0163: Personal Eventing Protocol
XEP-0166 XEP-0166: Jingle
XEP-0167 XEP-0167: Jingle RTP Sessions
XEP-0172 XEP-0172: User Nickname
XEP-0184 XEP-0184 XEP-0184 XEP-0184: Message Delivery Receipts
XEP-0198 XEP-0198: Stream Management
XEP-0199 XEP-0199 XEP-0199: XMPP Ping
XEP-0203 XEP-0203 XEP-0203: Delayed Delivery
XEP-0206 XEP-0206 XEP-0206 XEP-0206: XMPP Over BOSH
XEP-0224 XEP-0224: Attention
XEP-0231 XEP-0231: Bits of Binary
XEP-0234 XEP-0234: Jingle File Transfer
XEP-0245 XEP-0245 XEP-0245 XEP-0245: The /me Command
XEP-0249 XEP-0249 XEP-0249: Direct MUC Invitations
XEP-0256 XEP-0256: Last Activity in Presence
XEP-0277 XEP-0277: Microblogging over XMPP
XEP-0280 XEP-0280 XEP-0280 XEP-0280: Message Carbons
XEP-0292 XEP-0292: vCard4 Over XMPP
XEP-0297 XEP-0297 XEP-0297: Stanza Forwarding
XEP-0308 https://xmpp.org/extensions/xep-0308.html
XEP-0313 XEP-0313 XEP-0313 https://xmpp.org/extensions/xep-0313.html
XEP-0316 https://xmpp.org/extensions/xep-0316.html
XEP-0317 https://xmpp.org/extensions/xep-0317.html
XEP-0330 https://xmpp.org/extensions/xep-0330.html
XEP-0333 XEP-0333 https://xmpp.org/extensions/xep-0333.html
XEP-0334 https://xmpp.org/extensions/xep-0334.html
XEP-0352 https://xmpp.org/extensions/xep-0352.html
XEP-0357 https://xmpp.org/extensions/xep-0357.html
XEP-0359 https://xmpp.org/extensions/xep-0359.html
XEP-0363 XEP-0363 XEP-0363 https://xmpp.org/extensions/xep-0363.html
XEP-0372 https://xmpp.org/extensions/xep-0372.html
XEP-0382 https://xmpp.org/extensions/xep-0382.html
XEP-0384 XEP-0384 https://xmpp.org/extensions/xep-0384.html
XEP-0385 https://xmpp.org/extensions/xep-0385.html
XEP-0392 https://xmpp.org/extensions/xep-0392.html
XEP-0393 https://xmpp.org/extensions/xep-0393.html
XEP-0422 https://xmpp.org/extensions/xep-0422.html
XEP-0424 https://xmpp.org/extensions/xep-0424.html
XEP-0425 https://xmpp.org/extensions/xep-0425.html
XEP-0437 https://xmpp.org/extensions/xep-0437.html
XEP-0444 https://xmpp.org/extensions/xep-0444.html
XEP-0453 https://xmpp.org/extensions/xep-0453.html
XEP-0454 https://xmpp.org/extensions/xep-0454.html
XEP-0461 https://xmpp.org/extensions/xep-0461.html

The above XMPP feature table is for reference only and will be out of date almost immediately after it is published.

Movim

Demos

Get access to both above at 138813.au

Releases

Minimum supported release is 0.31
https://github.com/movim/movim/releases

XMPP iOS Clients

Reviews of some iOS clients:

1. Monal IM

Monal is recommended for iOS.

Source Code

2. Siskin

Source Code

Documentation

3. ChatSecure

Note ChatSecure has NOT been updated for a while, but as of 2025-07-01 it is still available on Apple App Store.

Source Code

XMPP Android Clients

There is currently no perfect XMMP client for Android.

  • Conversations can search by messages while aTalk cannot.
  • aTalk uses ZRTP to secure RTP streams while Conversations does not.

1. Conversations

Conversations is recommended for Android.

Source Code

https://github.com/iNPUTmice/Conversations

Download

2. aTalk

Source Code

Download

XMPP macOS Clients

1. Monal IM

Monal is recommended for macOS.

Source Code

3. Beagle IM

Source Code

1. Gajim

XMPP Windows Clients

1. Pidgin

2. Gajim

3. PSI

4. Miranda

https://miranda-ng.org/

XMPP Linux Clients

1. Dino

2. Gajim

3. go-sendxmpp

XMPP Gateways

1.Slidge

Instructions

Old links of same software by nicoco:

2. ActivityPub

3. Matrix

4. Mattermost

5. Libpurple

Libpurple supports A LOT of protocols and is available in some of the bridges above.

Plugins (for proxy look under Type = Protocol)

6. Others

  1. GitHub - SpectrumIM/spectrum2: Spectrum 2 IM transports (multiple protocols)
  2. GitHub - louiz/biboumi: IRC gateway for XMPP (IRC)
  3. narayana/zhabogram: Jabber transport to Telegram network - Stockmind (Tea Edition) (telegram)
  4. GitHub - codingteam/emulsion: XMPP ↔ Telegram bridge (telegram)
  5. GitHub - Shura0/mastaj: mastodon <-> XMPP gate (mastodon)

XMPP Server

Team Compute supports most open sourced XMPP servers, including those listed below.

ejabberd

XMPP Extensions

Prosody

XMPP Extensions

Openfire

XMPP Extensions

XMPP Blacklist