Summary
XMPP is a federated messaging protocol. An account has an address such as name@example.org; independently operated servers exchange messages for their users. OMEMO, specified in XEP-0384, adds end-to-end encryption between devices. Federation and encryption are separate properties: using XMPP alone does not establish an encrypted conversation.
How it works
The XMPP core standard defines addressing and server communication. OMEMO establishes a Double Ratchet session for each recipient device, then encrypts message key material for those devices. It supports asynchronous messaging and multiple devices, with forward secrecy and recovery after key compromise under its stated assumptions.
Usable clients include Conversations, Dino, Gajim, which documents integrated OMEMO support, and Monal, whose supported-extension manifest lists OMEMO. Support for the name does not establish support for every revision of the specification. Check encryption with the particular clients and devices your contacts use.
Trust model / threat model
OMEMO protects message content from servers when the intended devices' identity keys are correctly authenticated. Verify those keys through a trusted channel, and review new devices. Its specification explicitly excludes protection against metadata and traffic analysis.
Your server stores your contact roster under the XMPP instant-messaging standard. Routing still exposes account addresses and message traffic to participating servers. A self-hosted server changes the operator you trust; it does not remove the other participants' servers or their view of the exchange.
Readiness
Usable, with client-dependent setup. Released clients implement OMEMO, while XEP-0384 itself remains marked Experimental. The protocol's standards status and the availability of working applications are different measures.
Limits
Encryption defaults and supported extensions vary by client. Confirm that OMEMO is active instead of treating TLS to a server as end-to-end encryption. XEP-0384 also qualifies its forward-secrecy guarantee: the session key is protected only once both parties complete the key exchange. Device verification and compatibility remain part of the operational burden. This is server-mediated chat, not an off-grid transport; compare Matrix and Delta Chat, or use the messenger comparison.
Primary sources
- RFC 6120: XMPP core and federation.
- RFC 6121: rosters and messaging.
- XEP-0384: OMEMO, guarantees and threat model.
- Conversations and Dino.
- Gajim's integrated OMEMO implementation.
- Monal's supported XMPP extensions.
Page history
- Updated
- 2026-10-25
- Origin
- Written for ungovernable.tech.
- Improve this page
- Suggest an edit — issues and pull requests are welcome.