Add to calendar

Matrix Chat

Matrix Chat

An open standard for decentralised persistent communication

An overview


Wolfgang Silbermayr

Source code:

License of the presentation: CC-BY-SA 4.0

CC-BY-SA 4.0

Presenter Notes


  • Screenshots
  • Availability
  • Description
  • Structural overview
  • Video and Voice Chat
  • Clients
  • Servers
  • Federation
  • Encryption
  • Bots
  • Bridges
  • APIs
  • Outlook

Presenter Notes

Screenshots Web-Client

Riot Web Client

Presenter Notes

Screenshots Android-Client

Riot Android Client

Presenter Notes

Availability (Riot)

Presenter Notes

Availability (other clients)

We focus on Riot, because is the most used and most feature-complete client.

Presenter Notes


"Matrix is an open standard for decentralised communication, providing simple HTTP APIs and open source reference implementations for securely distributing and persisting JSON over an open federation of servers." (from the Matrix website)

Presenter Notes

Structural overview


Presenter Notes

Video and Voice Chat

Voice (and video) over Matrix uses the WebRTC 1.0 standard to transfer call media (i.e. the actual voice and video traffic). Matrix is used to signal the establishment and termination of the call by sending call events, like any other event. Currently calls are only supported in rooms with exactly two participants - however, one of those participants may be a conferencing bridge. We’re looking at better ways to do group calling. (from the Matrix website FAQ)

Presenter Notes


Many clients are available, but Riot is currently the most advanced.

See for the complete list.

The encryption is supported by Riot only. The WeeChat plugin has a preliminary implementation which is no longer compatible with the final specification.

Presenter Notes


The reference implementation, and the software running on the instance is Synapse, written in Python.

There are several other server projects. One of the most promising is an implementation in Rust, called Ruma.

Presenter Notes


See the interactive example on How does it work?.

TLS is used by default.

Presenter Notes


Matrix end-to-end encryption is called Megolm.

"The Megolm ratchet is intended for encrypted messaging applications where there may be a large number of recipients of each message, thus precluding the use of peer-to-peer encryption systems such as Olm.

It also allows a recipient to decrypt received messages multiple times. For instance, in client/server applications, a copy of the ciphertext can be stored on the (untrusted) server, while the client need only store the session keys."

Encryption is implemented in Riot since November 2016, so still very new. Several user-visible problems have occurred in real-world usage, and are being tackled down at the moment.

Presenter Notes


Bots appear normal users, but are running on the server. They can be added to a room from the client interface.

The instance has a few bots installed:

  • Github
  • Giphy
  • Guggy
  • RSS
  • Travis CI

Presenter Notes


Unlike bots, bridges are not real users. They need to be supported by the server instance.

The instance has a few bridges installed:

  • IRC
  • Gitter
  • Slack

Presenter Notes


The API documentation can be found on

  • Client-Server API: Interaction between clients and servers (matrix chat programs, bots)
  • Server-Server API: Federation between servers
  • Application Service API: Privileged server plugins (used for bridges)
  • Identity Service API: Mapping of third party IDs to Matrix IDs
  • Push Gateway API: Push notifications for Matrix events

Presenter Notes


Presenter Notes