Welcome to Matrix
An open network for secure, decentralized communication.
Support Matrix Today
Your support helps Matrix to build the decentralised communciations network of the future! If you use or build atop Matrix, or if you share our ideals of decentralisation, encryption, and open communication as a basic human right, you can support us via Patreon or Liberapay or Paypal (or send us some cryptocurrency: BTC 1LxowEgsquZ3UPZ68wHf8v2MDZw82dVmAE, ETH 0xA5f9a4f9E024F6D727f7afdA9257e22329A97485).
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.
And finally if you are a company who is invested in Matrix (perhaps you’re itching for Dendrite), get in touch if you’d like 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
You can also pick a client from https://matrix.to/#/#matrix:matrix.org…
Or enter #matrix:matrix.org via a bridge:
The Matrix Ecosystem
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
- Independently assessed by NCC Group – read our blog post and the public report here!
- 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!
Status
A Mobile OS, Built for Ethereum.
With Status your mobile device becomes a light client node on the Ethereum Network, enabling you to access Ethereum’s entire ecosystem from anywhere.
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.
OmiseGO
OmiseGO is a public Ethereum-based financial technology for use in mainstream digital wallets.
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!
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.
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.
“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?
The clients are all participating in the same Matrix room, which is synchronised across the three participating servers.
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" }
The server then signs the JSON including the signatures of the parent objects to calculate a tamper-resistent signature for the history.
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...
- 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
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" } ], }, }] }
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.
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.
This effectively merges the split in history and asserts the integrity of the room (or at least her view of it).
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.
- If you like command line clients, you can try out the Weechat Matrix plugin
- If you like glossy web clients, try Riot (also available for iOS and Android)
- Synapse – reference Matrix homeserver in Python/Twisted
- Alternatively, write your own client using one of our SDKs:
- matrix-react-sdk – example Matrix client and SDK in React JS
- matrix-ios-sdk – example Matrix client and SDK for iOS
- matrix-android-sdk – example Matrix client and SDK for Android
- matrix-js-sdk – basic client SDK in core JavaScript
The Matrix Community
- Run a homeserver and join the federation!
- File problems on Github
- Contribute code to our projects!
- Come talk on Matrix at #matrix:matrix.org
- …or find us on IRC at #matrix on Freenode
- Comment on the blog
- Be nice – please respect the Code of Conduct
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!