python-olm
python CFFI bindings for the olm cryptographic ratchet library
Decision gist · record as of 2026-08-14
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.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires cmake or GNU make and a C/C++ compiler; known to not work on Windows.
- 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 · maintenance · safety
Apache-2.0 (permissive) — Apache-2.0 permissive license allows use in most projects, including commercial ones, with minimal restrictions beyond attribution.
last release 2023-11-28 (990 days)
0 known vulnerabilities (OSV.dev, 2026-08-14) · 1,011,283 downloads/mo, #4,512 on PyPI
Alternatives
Verify before relying
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')- 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.
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 on this page. Verify before relying on it.
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
python-olm on PyPI
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.
Requires cmake or GNU make and a C/C++ compiler; known to not work on Windows.
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')
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 | Not specified |
| Install friction | Medium. Platform-specific wheel |
| Runtime dependencies | 1 packagecffi |
| Maintenance | Dormant 990 days since the last release |
| First released | |
| Downloads | 1,011,283 / month, #4,512 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | License :: OSI Approved :: Apache Software LicenseTopic :: Communications |
Evidence: python_olm-3.2.16-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl; python_olm-3.2.16-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl; python_olm-3.2.16-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl; python_olm-3.2.16-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl; python_olm-3.2.16-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl; python_olm-3.2.16-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl; python_olm-3.2.16-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl; python_olm-3.2.16-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “olm cryptographic ratchet”
- python-olmPython bindings for the Olm cryptographic ratchet library, enabling…
- aws-cryptographic-material-providersProvides cryptographic material management and key derivation for…
- PyKCS11PyKCS11 provides a Python wrapper around the PKCS#11 cryptographic…
Give your agent the search over MCP, or paste the wish link into any chat.
More Communications packages
Pyasn1 encodes and decodes ASN.1 data structures using BER, CER, DER, and native Python codecs, allowing you to serialize complex data for network protocols and file formats.
Install it if you need to work with ASN.1-based protocols or formats; it is the standard library for this in Python and has no known vulnerabilities.
Provides a collection of ASN.1 data structures expressed as Python classes, built on the pyasn1 library, for working with ASN.1-based protocols and standards.
Kombu is a messaging library that provides a high-level Python interface to AMQP and other message brokers, supporting pluggable transports for RabbitMQ, Redis, MongoDB, Amazon SQS, and others.
Install it if you are building any distributed system that requires reliable message passing.
Formats and parses numbers, file sizes, timespans, and other values into human-readable text; provides terminal interaction utilities including ANSI text styling and user prompts.
Adds colored output to Python's standard logging module using ANSI escape sequences, with automatic fallback support for Windows terminals.
However, it is abandoned and receives no maintenance, so it will not adapt to future Python changes or platform updates.
Parse, validate, format, and analyze international phone numbers across all countries, with support for extracting geographic, carrier, and timezone information from phone number data.
See also magic-wormhole · pyobjc-framework-MultipeerConnectivity · vodozemac · cryptography · pyrage · pqcrypto · pure25519 · noiseprotocol · pycryptodomex · rocrate