Welcome to Matrix

An open network for secure, decentralized communication.

Learn More

Welcome to Matrix

An open network for secure, decentralized communication.

Try Matrix Now

Get Chatting

Imagine a world where it is as simple to message or video call anyone in the world as it is to send them an email

Imagine a world where you can communicate without being forced to install the same app

Imagine a world where you can choose who hosts your communication

Imagine a world where you control your Internet-of-Things device data

Imagine a world where your data is secured by end-to-end encryption

Imagine a world where there’s a simple standard HTTP API for sharing realtime data on the web

This is Matrix.

Matrix Needs Your Support!

UPDATE: The situation has changed and our need is more urgent even than before.

Matrix needs you! We are facing a funding crisis. If you use or build atop Matrix, or if you believe in our ideals of decentralisation, encryption, and open communication as a basic human right please support us via Patreon or Liberapay (or send some cryptocurrency: BTC 1LxowEgsquZ3UPZ68wHf8v2MDZw82dVmAE, ETH 0xA5f9a4f9E024F6D727f7afdA9257e22329A97485) – we need your help to keep the core team able to work on the project full time!

Support us on Patreon for great rewards including access to the supporters-only podcast, and even a voice at our weekly meetings. Find out more at our Patreon page.

Patreon Donations Total:

of per month

And finally if you are a company who is invested in Matrix (perhaps you’re itching for Dendrite), please get in touch ASAP to sponsor core development work from the team.

Matrix.org provides open source reference implementations of Matrix servers, clients and services under the Apache License

Matrix.org provides open source reference implementations of Matrix servers, clients and services under the Apache License

Try Matrix Now

Matrix is an open fabric for communication that anyone can participate in.
A good intro to Matrix is by joining a decentralised chat room like Matrix HQ:

The Matrix Ecosystem

Number of rooms seen from matrix.org

Number of unique users (bridged & unbridged)

Number of DAU on matrix.org

Sent Messages Over Matrix

Encryption and Privacy in Matrix

Privacy is particularly critical for a decentralized network like Matrix, where user data is replicated over all the servers participating in a room and so must be protected. Matrix provides state of the art end-to-end encryption in beta using the Olm and Megolm cryptographic ratchets, and ensuring that only explicitly authorized devices can participate in a conversation.

  • Based on the Double Ratchet Algorithm popularised by Signal
  • Provides 1:1 encrypted channels between pairs of devices via the Olm double ratchet
  • Supports group chats with hundreds of devices via the new Megolm shared ratchet, with either perfect forward secrecy or the ability to decrypt conversation history on new devices.
  • Supports multiple devices, tracking verification trust per-device to help spot interception.
  • Independent implementation released under the Apache License

Currently any apps built on matrix-js-sdk, matrix-ios-sdk or matrix-android-sdk support encryption, which is in beta as of March 2017.  The libolm library itself is considered stable however.

For more information about Matrix’s encryption, you can check out our main-track talk at FOSDEM 2017.

Thank you to our incredible sponsors!

UpCloud Cloud Hosting

Matrix.org is generously hosted by our friends at UpCloud.

Host your homeserver with UpCloud too and get $25 credit to get started!

Private Internet Access™ VPN Service

Private Internet Access™ VPN Service encrypts your connection and provides you with an anonymous IP to protect your privacy. 

 

INBlockchain

INBlockchain is a full-service firm focusing on consulting, incubating and facilitating crowdsales for promising blockchain startups

Enormous thanks also go out to all of our individual supporters on Patreon and Liberapay - their generosity helps keep us up and running. Check out our full supporters page for more details!

Thank you to our incredible sponsors!

Enormous thanks also go out to all of our individual supporters on Patreon and Liberapay – their generosity helps keep us up and running. Check out our full supporters page for more details!

Thank you to our incredible sponsors!

Enormous thanks also go out to all of our individual supporters on Patreon and Liberapay – their generosity helps keep us up and running. Check out our full supporters page for more details!

Matrix is the missing communication layer of the VR Web.

The open web has gone VR, thanks to WebVR letting web apps support VR hardware – which is finally becoming mainstream.  But there has been no standard way to communicate within VR – let alone link different apps and worlds together into a coherent shared VR experience.

Matrix solves this by providing an open universal communication layer perfect for VR calling, messaging and collaboration, powering immersive experiences for conferencing, tourism, entertainment, telepresence, e-learning, etc.  And in future, we envisage decentralised storage and synchronisation of world state and assets: letting applications and users alike upload themselves into the true virtual metaverse of Matrix.

What is this for?

Matrix for Messaging Apps:

Matrix provides a common language for interoperable communication. Existing messaging apps and solutions gain enormously by linking into Matrix – letting their users reach out with core messaging and VoIP functionality to every other user in the global Matrix ecosystem. Matrix provides the best platform for your app to showcase its differentiating features to the widest possible audience – tempting the rest of the world to install, as your users themselves become your ambassadors. Users should use your app because they want to. Not because they are trapped. Give your users the gift of freedom; they will reward you for it. Building a bridge has never been easier: see how we built the MatrixSlack bridge in under 100 lines of code: https://github.com/matrix-org/matrix-appservice-bridge/blob/master/HOWTO.md

Thinking about adding messaging to your app? *Don’t reinvent the wheel*. Matrix gives you simple HTTP APIs and SDKs (iOS, Android, Web) to add Matrix-enabled chatrooms and direct chats directly into existing apps, complete with end-to-end encryption, emoji, file transfer, etc… whilst exposing the app to a vast ecosystem of potential users, and letting you build directly on all the bridges, bots, services and clients out there in Matrix.

Matrix for IoT:

If fragmentation in Messaging and VoIP services is bad, fragmentation in the Internet of Things is even worse. Vendors ranging from Garmin and Fitbit through to Amazon and Apple have launched IoT services, each locked to that particular vendor’s platform. As a user, your data is trapped in each different silo, and you are limited to using the subset of IoT services which connect to those silos.

Matrix provides a way forward, much as it does for human communication scenarios. By building bridges to as many IoT silos as possible, data can be securely published on the Matrix network – liberating it be under the user’s control. IoT developers can then build solutions directly on Matrix rather than integrating separately with vendors, or even publish or consume Matrix data directly from devices.

Matrix.org has shown proof of concepts for several IoT use cases: visualizing OBD2 data across different car vendors (FOSDEM 2015); streaming video from different drone vendors (WebRTC World 2015), etc. We welcome the community to see how Matrix can work for them!

Matrix for VoIP and WebRTC:

Why is there still no standard, ubiquitous, interoperable way to place a phone call on the internet? Previous open standards have failed to get widespread consumer uptake, leaving proprietary walled gardens like Skype, Viber and WhatsApp to dominate. The situation only gets worse with the advent of WebRTC, giving every website in the world the ability to exchange high quality voice and video calls – but no way to actually route the calls. To “call someone on WebRTC” means to send them an email with a URL you expect them to follow – *email* has become the standard signalling layer for VoIP on the internet.

We believe there is still room for a standard protocol for interoperable VoIP on the internet – one that is simple and familiar to today’s web developers, and well matched to WebRTC. Matrix is that missing signalling layer for WebRTC. If you are building VoIP into your app, or want to expose your existing VoIP app to a wider audience, building on Matrix’s SDKs and bridges should be a no-brainer.

Matrix for Bots:

By writing a bot for Matrix you are unleashing it on the widest possible ecosystem imaginable. Matrix’s simple HTTP APIs, SDKs, or existing bot frameworks (go-neb or py-neb) mean you can implement against a single open standard interface… and instantly expose the bot to every messaging platform (IRC, Slack, Gitter, XMPP etc.) connected to Matrix, letting you concentrate on the important bit: the bot itself.

Because Matrix is constantly evolving, with new bridges, networks and apps being added all the time by the wider Matrix developer community, the sky really is the limit in terms of your bot’s audience. And with new bot frameworks popping up all the time you can easily stand on the shoulders of giants without being locked into any single proprietary communication service.

Try Matrix Now

Get Chatting

Matrix is used by…

Matrix is used by…

Show me the code!

Matrix is a set of openly standardised HTTP APIs specified at https://matrix.org/docs/spec for the real-time synchronisation and persistence of arbitrary JSON over a federation of servers.

Matrix also describes the open federation of servers and services on the internet which speak these APIs.

Matrix.org provides reference implementations of servers and client SDKs at https://github.com/matrix-org, and a directory of clients, bots, bridges, services and servers which implement the Matrix standard at https://matrix.org/blog/try-matrix-now.  There’s also a Swagger API playground at https://matrix.org/docs/api.

What do you get?

Decentralised cryptographically signed conversation history (timeline and key-value stores) replicated over all the servers who participate in a room.

m

“Account data” for users per room

Matrix has a very active open-source developer community working on implementing clients, servers, bots, bridges, services and extending the Matrix spec itself. Come join us on #matrix:matrix.org – we don’t bite!

How does it work?

Here are three Matrix homeservers, each with one client connected.

The clients are all participating in the same Matrix room, which is synchronised across the three participating servers.
Alice sends a JSON message to a room on her homeserver.
curl -XPOST
 -d '{"msgtype":"m.text", "body":"hello"}'
 "https://matrix.alice.com/_matrix/client
 /v2/rooms/ROOM_ID/send/m.room.message
 ?access_token=ACCESS_TOKEN"

{
 "event_id": "$YUwRidLecu:alice.com"
}
Alice's homeserver adds the JSON to its graph of history, linking it to the most recent unlinked object(s) in the graph.

The server then signs the JSON including the signatures of the parent objects to calculate a tamper-resistent signature for the history.
The server then sends the signed JSON over HTTPS to any other servers which are participating in the room.

curl –XPOST –H 'Authorization: X-Matrix origin=alice.com,...' –d '{
 "ts": 1413414391521,
 "origin": "alice.com",
 "destination": "bob.com",
 "pdus": [{
 "event_id": "$YUwRidLecu:alice.com",
 "content": {
 "body": "hello world",
 "msgtype": "m.text"
 },
 ...
 "pdu_type": "m.room.message",
 "signatures": {
 "matrix.org": {
 "ed25519:auto": "jZXTwAH/7EZ..."
 }
 },
 "sender": "@alice:alice.com"
 }]
}' https://matrix.bob.com:8448/_matrix/federation/v1/send/916d...
 
The destination servers perform a series of checks on the message:
  • Validate the message signature to protect against tampering with history
  • Validate the HTTP request's auth signature to protect against identity spoofing
  • Validate whether Alice's historical permissions allow her to send this particular message
If these checks pass, the JSON is added to the destination servers' graphs.
Destination clients receive Alice's message with a long-lived GET request. (Clients are free to implement more efficient transports than polling as desired).
curl "https://matrix.bob.com/_matrix/client
 /v2/sync?access_token=ACCESS_TOKEN"

{
 "next_batch": "s72595_4483_1934",
 "rooms": [{ 
 "room_id": "!KrLWMLDnZAyTapqLWW:alice.com",
 "events": {
 "batch": [
 {
 "event_id": "$YUwRidLecu:alice.com",
 "type": "m.room.message",
 "content": {
 "body": "I am a fish",
 "msgtype": "m.text",
 },
 "origin_server_ts": 1417731086797,
 "sender": "@alice:alice.com" 
 }
 ],
 },
 }]
}
 
Bob sends a response to Alice's message, and his server adds his message into his copy of the room's history, linking it to the most recent unlinked object in the graph - Alice's last message.
Meanwhile, Charlie also responds to Alice's message - racing with Bob's message.

Alice, Bob and Charlie's homeservers all have different views of the message history at this point - but Matrix is designed to handle this inconsistency.
Bob's homeserver relays his message through to Alice and Charlie's servers, who accept it.

At this point Alice and Bob are in sync, but Charlie's room history has split - both messages 2 and 3 follow on from message 1. This is not a problem; Charlie's client will be told about Bob's message and can handle it however it chooses.
Charlie's homeserver relays his message through as well, at which point all 3 servers have a consistent view of history again (including the race between Bob and Charlie). All three clients have seen all three messages, and the room history is now back in sync across the participating servers.
Later on, Alice sends another message - her homeserver adds it to her history, and links it to the most recent unlinked objects in the graph: Bob and Charlie's messages.

This effectively merges the split in history and asserts the integrity of the room (or at least her view of it).
Alice's message is then relayed to the other participating servers, which accept it and update their own history with the same rules, ensuring eventual consistency and integrity of the distributed room history.
Next

Open Standard

  • 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

Open Source Implementations

There are many different clients, servers and application services – for a full list please see the Try Matrix Now page.

The Matrix Community

What is Matrix.org?

Matrix.org is a non-profit initiative, currently being incorporated as a dedicated non-profit Matrix.org Foundation in the UK. It acts as a neutral guardian of the Matrix spec, nurturing and growing Matrix for the benefit of the whole ecosystem. The board of Matrix.org Foundation will be made up of key participants in the Matrix community as well as independent advisors from the wider internet and telco industries.

Matrix.org is generously hosted by our friends at UpCloud.
Host your homeserver with UpCloud too and get $25 credit to get started!

Matrix.org is generously hosted by our friends at UpCloud.
Host your homeserver with UpCloud too and get $25 credit to get started!