--- id: python-olm version: "3.2.16" license: Apache-2.0 license_treatment: permissive maintenance: dormant --- # python-olm — python CFFI bindings for the olm cryptographic ratchet library License: permissive · Maintenance: dormant · Downloads: 1.0M/mo ## What it is and what it does python-olm is a CFFI-based wrapper around the Olm cryptographic library, providing Python access to the Olm and Megolm ratcheting protocols. It lets you build encrypted peer-to-peer and group messaging systems by managing cryptographic accounts, sessions, and keys. The library handles the low-level cryptography (curve25519 and ed25519 keys, ratcheting state) so you can focus on message exchange; it's used in the Matrix protocol implementation. The package works by creating Account objects that hold identity keys and generate one-time keys, OutboundSession and InboundSession objects for encrypted point-to-point channels, and OutboundGroupSession and InboundGroupSession objects for one-to-many encrypted broadcast. All objects support pickling for persistence. Installation requires a C/C++ compiler and build tools, and the package is currently dormant—no active maintenance since late 2023. Use it for: - Building end-to-end encrypted messaging applications using the Olm protocol, as implemented in Matrix clients. - Creating peer-to-peer encrypted communication channels between two accounts with forward secrecy. - Implementing group encrypted messaging where a sender broadcasts to multiple recipients using Megolm. - Storing and restoring encrypted session state via pickling for long-lived messaging applications. - Integrating Olm cryptography into Python-based chat or collaboration platforms. ## Worth the install? AI-flagged interpretation of the facts above — verify before relying. Python bindings for the Olm cryptographic ratchet library, enabling peer-to-peer and group encrypted communication using the Olm and Megolm protocols. Yes, if you need Olm/Megolm encryption and can accept dormant maintenance. The package is stable and has no known vulnerabilities, but expect no updates or support. Suitable for established projects already using Olm (e.g., Matrix clients) or for new projects willing to maintain a fork if needed. The C/C++ build requirement and lack of Windows support are real constraints. ## Install pip install python-olm uv add python-olm poetry add python-olm ## Installing python-olm Before you install: Medium install friction due to C/C++ compilation requirements (cmake or GNU make and a compiler needed). Package is dormant—last release was 990 days ago—so expect no active maintenance or bug fixes. License in practice: Apache-2.0 permissive license allows use in most projects, including commercial ones, with minimal restrictions beyond attribution. Quickstart: pip install python-olm from olm import Account, OutboundSession alice = Account() bob = Account() bob.generate_one_time_keys(1) id_key = bob.identity_keys['curve25519'] one_time = list(bob.one_time_keys['curve25519'].values())[0] alice_session = OutboundSession(alice, id_key, one_time) message = alice_session.encrypt('secret') Requires cmake or GNU make and a C/C++ compiler; known to not work on Windows. Verify before relying: - Whether the dormant maintenance status affects security patches or compatibility with current Python versions. - Exact Python version support (requires_python is unspecified in metadata). - Whether prebuilt wheels cover all target platforms or if compilation is required on some systems. ## Package facts - License: Apache-2.0 (permissive) - Python support: unspecified - Install friction: medium - Maintenance: dormant - Downloads: 1.0M/month (top 5,000 on PyPI) - Known vulnerabilities: none known ## Tags olm cryptographic ratchet, end-to-end encryption python, peer-to-peer encrypted sessions, megolm group encryption, matrix protocol encryption, cffi cryptography bindings, encrypted messaging library, end-to-end-encryption, cryptography, messaging [View on SkillFed](https://skillfed.io/packages/python-olm) · [View on PyPI](https://pypi.org/project/python-olm/)