Build Status PyPI - Python Version codecov license Documentation Status #nio

nio is a multilayered Matrix client library. The underlying base layer doesn’t do any network IO on its own, but on top of that is a full-fledged batteries-included asyncio layer using aiohttp. File IO is only done if you enable end-to-end encryption (E2EE).


The full API documentation for nio can be found at


nio has most of the features you’d expect in a Matrix library, but it’s still a work in progress.

  • ✅ transparent end-to-end encryption (EE2E)

  • ✅ encrypted file uploads & downloads

  • ✅ space parents/children

  • ✅ manual and emoji verification

  • ✅ custom authentication types

  • ✅ well-integrated type system

  • ✅ knocking, kick, ban and unban

  • ✅ typing notifications

  • ✅ message redaction

  • ✅ token based login

  • ✅ user registration

  • ✅ read receipts

  • ✅ live syncing

  • m.reactions

  • m.tags

  • ❌ cross-signing support

  • ❌ server-side key backups (room key backup, “Secure Backup”)

  • ❌ user deactivation (#112)

  • ❌ threading support

  • ❌ in-room emoji verification


To install nio, simply use pip:

$ pip install matrix-nio

Note that this installs nio without end-to-end encryption support. For e2ee support, python-olm is needed which requires the libolm C library (version 3.x). On Debian and Ubuntu one can use apt-get to install package libolm-dev. On Fedora one can use dnf to install package libolm-devel. On MacOS one can use brew to install package libolm. Make sure version 3 is installed.

After libolm has been installed, the e2ee enabled version of nio can be installed using pip:

$ pip install matrix-nio[e2e]

Additionally, a docker image with the e2ee enabled version of nio is provided in the docker/ directory.


For examples of how to use nio, and how others are using it, read the docs

Api Documentation

Indices and tables