OMEMO is an extension to the Extensible Messaging and Presence Protocol (XMPP, "Jabber") for multi-client end-to-end encryption developed by Andreas Straub. According to Straub, OMEMO uses the Double Ratchet Algorithm "to provide multi-end to multi-end encryption, allowing messages to be synchronized securely across multiple clients, even if some of them are offline". The name "OMEMO" is a recursive acronym for "OMEMO Multi-End Message and Object Encryption". It is an open standard based on the Double Ratchet Algorithm and the Personal Eventing Protocol (PEP, XEP-0163). OMEMO offers future and forward secrecy and deniability with message synchronization and offline delivery.
The protocol was developed and first implemented by Andreas Straub as a Google Summer of Code project in 2015. The project's goal was to implement a double-ratchet-based multi-end to multi-end encryption scheme into an Android XMPP-based instant messaging client called Conversations. It was introduced in Conversations and submitted to the XMPP Standards Foundation (XSF) as a proposed XMPP Extension Protocol (XEP) in the autumn of 2015 and got accepted as XEP-0384 in December 2016.
In June 2016, the non-profit computer security consultancy firm Radically Open Security published an analysis of the OMEMO protocol.
- ChatSecure (iOS)
- Conversations (Android)
- Cryptocat - No open XMPP client, works only with Cryptocat server (Linux, OS X, Windows)
- Dino (Linux, OS X)
- Gajim via plugin (BSD, Linux, Windows)
- Psi via plugin (Linux, Windows)
- Psi+ via plugin (Linux, Windows)
- libpurple clients such as Pidgin or Finch via experimental plugin 
- Adium via an Xtra based on the libpurple plugin
- Profanity via plugin (BSD, Linux, macOS, Windows)
- Zom (Android, iOS)
- Smack supports OMEMO using the two modules smack-omemo and smack-omemo-signal
- XMPPFramework (macOS, iOS, tvOS)  supports OMEMO via the OMEMOModule extension  when used in conjunction with the SignalProtocol-ObjC library .
- "[Standards] NEW: XEP-0384 (OMEMO Encryption)". 2016-12-07. Retrieved 2016-12-23.
- Daniel Gultsch. "OMEMO Multi-End Message and Object Encryption". Retrieved 2015-11-23.
- "ChatSecure iOS v3.2.3 - XMPP Push". 2016-07-25. Retrieved 2016-09-07.
- "ChatSecure v4.0 - OMEMO and Signal Protocol". 2017-01-17. Retrieved 2017-02-07.
- Bahtiar Gadimov (2015-12-26). "Initial OMEMO commit". dev.gajim.org. Retrieved 2017-09-08.
- OMEMO: Cryptographic Analysis Report. June 2016
- "ChatSecure v4.0 - OMEMO and Signal Protocol". chatsecure.org. Retrieved 2017-01-17.
- "Cryptocat - Security". crypto.cat. Retrieved 2016-05-24.
- "Dino - Modern Jabber/XMPP Client using GTK+/Vala". dino.im. Retrieved 2017-11-06.
- Bahtiar Gadimov; et al. "Omemogajimplugin · Wiki · gajim / gajim-plugins · GitLab". Retrieved 2016-12-04.
- Vyacheslav Karpukhin. "OMEMO for Psi · GitHub". Retrieved 2018-03-04.
- Vyacheslav Karpukhin. "Psi+ snapshots". Retrieved 2018-03-04.
- Richard Bayerle. "lurch - OMEMO for libpurple". Retrieved 2017-02-12.
- Olivier Mehani. "Lurch4Adium - OMEMO Xtra for Adium". Retrieved 2017-06-08.
- René Calles. "profanity-omemo-plugin: A Python plugin to use (axolotl / Signal Protocol) encryption for the profanity XMPP messenger". Retrieved 2017-01-10.
- "Zom mobile messenger".
- Schaub, Paul. "Ignite Realtime Blog: Smack v4.2 Introduces OME... | Ignite Realtime". community.igniterealtime.org. Retrieved 2017-07-11.