[matrix]
A new basis for
open, distributed,
real-time communication
Matrix is an new open standard for interoperable Instant Messaging and VoIP, providing pragmatic HTTP APIs and open source reference implementations for creating and running your own real-time communication infrastructure.

Our hope is to make VoIP/IM as universal and interoperable as email.

learn more...

Open APIs

  • Simple pragmatic RESTful HTTP/JSON APIs
  • Open specification of the Matrix standard
  • Create and manage fully distributed (eventually consistent) conversations with no single points of control or failure
  • Send and receive extensible messages with optional end-to-end encryption
  • WebRTC VoIP/Video calling using Matrix signalling
  • Real-time synchronised history and state across all clients
  • Group conversation by default
  • Use existing 3rd party IDs (e.g. email, phone numbers, Facebook) to authenticate, identify and discover users
  • Trusted federation of identity servers, tracking public keys and 3rd party ID mappings
  • TLS by default

Reference Open Source Implementations

  • synapse - reference Matrix homeserver in Python/Twisted
  • synapse webclient - example Matrix client in AngularJS
  • synapse cmdclient - example Matrix CLI in Python
  • sydent - reference Matrix identity server in Python/Twisted)
  • Net::Async::Matrix - Matrix client SDK for Perl
  • ...contributions for other platforms more than welcome!

The Matrix Community

  • Run a homeserver and join the federation!
  • File problems on github
  • Come talk on Matrix at #matrix:matrix.org
  • ...or find us on IRC at #matrix on Freenode
  • Comment on our blog
  • Go retro and use the mailing list

About

Matrix.org's goal is to make real-time communication over IP as seamless and interoperable as email by providing the world with a new open standard which allows communication services themselves to interoperate.

For the end consumer this will mean they can choose to use their favourite app because they get the most value from it and trust the provider with their data, and still be able to communicate with friends using competing apps and services.

In practice Matrix specifies a set of pragmatic RESTful HTTP JSON APIs as an open standard, intended to be implemented on a wide range of servers, services and clients, letting developers build messaging and VoIP functionality on top of the entirely open Matrix ecosystem rather than using closed or proprietary solutions. The hope is for Matrix to act as the building blocks for a new generation of fully open and interoperable messaging and VoIP apps for the internet.

Matrix is being released as a work in progress as of Sept 4th 2014, in order to gather feedback from the opensource and telecoms community and help test and refine the APIs and reference implementations. The APIs are not yet frozen and are in some places underspecified or incomplete - similarly some functionality is not yet implemented in the reference implementations, including key security features. That said, we believe it's useful enough to experiment with - but please do not rely on it yet for any production usage or to transmit any sensitive data.

Matrix's APIs provide:

  • Creating and managing fully distributed chat rooms with no single points of control or failure
  • Eventually-consistent cryptographically secure synchronisation of room state across a global open network of federated servers and services
  • Sending and receiving extensible messages in a room with (optional) end-to-end encryption
  • Inviting, joining, leaving, kicking, banning room members
  • Managing user accounts (registration, login, logout)
  • Using 3rd Party IDs (3PIDs) such as email addresses, phone numbers, Facebook accounts to authenticate, identify and discover users on Matrix.
  • Placing 1:1 VoIP and Video calls (in development)

In Matrix, every user runs one or more Matrix clients, which connect through to a Matrix "homeserver" which stores all their personal chat history and user account information - much as a mail client connects through to an IMAP/SMTP server. Conversation history is stored on all the homeservers who participate in a conversation, for as long as the users involved wish to store it. History can always be pulled in from other participants if needed - and if all the participants decide not to keep the history, it is by definition lost forever.

Just like email, you can either run your own Matrix homeserver and control and own your own communications and history or use one hosted by someone else (e.g. matrix.org) - there is no single point of control or mandatory service provider in Matrix, unlike WhatsApp, Facebook, Hangouts, etc.

We provide a reference implementation of a Matrix server called Synapse, written in Python/Twisted. The intention is to showcase the concept of Matrix, test and demonstrate the spec, and let anyone and everyone run their own homeserver and generally help bootstrap the ecosystem.

Synapse ships with two basic demo Matrix clients: webclient (a basic group chat web client demo implemented in AngularJS) and cmdclient (a basic Python commandline utility which lets you easily see what the JSON APIs are up to).

Matrix.org's initial inspiration and goal has been to fix the problem of fragmented IP communications. But Matrix's real potential and ultimate mission is to be a new and truly open ecosystem on the Internet enabling people, services and devices to easily communicate with each other.

We'd like to invite you to take a look at the Matrix spec, try to run a homeserver, join the existing Matrix chatrooms already out there, experiment with the APIs and the demo clients. Please let us know your thoughts on the mailing list or @matrixdotorg or Github.