πŸ”—Matrix Live

πŸ”—Dept of Status of Matrix 🌑️

πŸ”—vodozemac (website)

An implementation of Olm and Megolm in pure Rust.

dkasak announces

πŸ”—The Matrix.org Security team publishes analysis of reported vodozemac issues

Following a public disclosure discussing potential cryptographic issues in vodozemac, the Matrix.org Security team published a technical analysis addressing the claims and their impact.

πŸ”—Dept of Events and Talks πŸ—£οΈ

Yan 't' Minagawa says

πŸ”—Matrix Community Summit 2026

The Matrix Community Summit 2026 will take place 21–25 May 2026 (Pentecost weekend) at c-base in Berlin.

The Summit is a community-driven, in-person working event focused on collaboration around the Matrix ecosystem. It is not a traditional conference: the schedule is shaped by participants and centers on hands-on work, discussions, and coordination across projects.

Structure (high level):

  • Arrival and onboarding day
  • Two main working days (hacking, workshops, focused sessions)
  • One day with outreach, knowledge sharing, and community topics
  • Wrap-up and departure day (including Towel Day traditions at c-base)

There are no product booths or sales tracks. Participation is open to developers, operators, designers, community organizers, and users interested in actively contributing to Matrix.

More details and updates: https://matrix-community.events/conferences/2026-summit.html

David Mehren announces

πŸ”—Matrix-Stammtisch Dortmund

24th February, 19:00-22:00

The Matrix Meetup craze is continuing to spread across Germany! Next Tuesday, the Chaostreff Dortmund opens its doors for the first Matrix-Stammtisch Dortmund. Every four weeks, we organize an evening where you can help each other with encryption problems, try the latest client updates and features, or work on Matrix-related projects.

More info (in German) at https://www.chaostreff-dortmund.de/events/matrix-stammtisch-2026-02-24/ You can also already join our Matrix room at #matrix-dortmund:matrix.org

πŸ”—Dept of Servers 🏒

πŸ”—continuwuity (website)

Continuwuity is a community-driven Matrix homeserver in Rust.

nex (it/she) πŸ³οΈβ€βš§οΈ says

πŸ”—Continuwuity 0.5.5

Yeah so Discord did a thing and it's been great for us apparently. In terms of numbers at least, it's certainly highlighted loads of new issues with our software. If only we could do something about that... Oh wait, we have! Shouldn't be a surprise by now, most people know how we do things now, but alas, apparently I've got to "notify" people of "new releases" to "improve publicity" and "get people to update their servers". So I'm taking an incredibly short break from the confines of my code editor to tell you what's changed! Aren't you lucky.

Continuwuity 0.5.5 is another bugfix release that aims to smooth over some of the rough edges encountered by the huge wave of new deployments. We haven't fixed every issue ever known, but there's a fair selection. Here's an excerpt from our release notes (which you should really read this week, even if you don't usually):

  • πŸ“¨ Fixed incoming invites not appearing or appearing in a broken form.
  • ⚑ Deployments using LDAP are allowed to have persistent admins again (the server doesn't forget anymore).
  • πŸ“ž Element Call now works on Element X.
  • πŸ‘€ Fixed a bug where the server may accidentally leak an appservice's access token to a remote server in an error message.

We also added some new things this time! You may enjoy:

  • 🌐 You can now customise the user agent sent when generating server-side URL previews (which may allow you to get around user agent filters).
  • 🀝 The error messages for joining remote rooms have been vastly improved, and the relevant logs are also much more informative.
  • πŸ–₯️ Setting up a new Continuwuity server is now easier than ever. We removed the annoying first-user dance and instead replaced it with a "first-run experience", which allows you to get started with Continuwuity much easier. This also means it's now even harder to run an insecure server, even temporarily.

But that's all the lure I'm going to dangle here. Like I said, you'll have to read the release notes for the full experience!

Big things are happening. Be there or be square. You can be square while being there too. Actually you can be any shape you want to be, just be there or I'll cast FOMO on you. And by "there" I mean #continuwuity:continuwuity.org. And #announcements:continuwuity.org. Actually, just take a look through #space:continuwuity.org. There's lots of places to be. You can be square in all of them.

πŸ”—Homeserver Deployment πŸ“₯️

πŸ”—Element Server Suite (website)

Element Server Suite (ESS) is a backend hosting solution for Matrix-based communications that supports self-hosted and fully managed deployments.

Patrick Maier says

πŸ”—Element’s multi-tenancy solution secures β€˜Good’ rating in gematik commissioned pentest

We're delighted to announce that our Synapse Pro solution for multi-tenancy Matrix hosting has been deemed 'Good' in a dedicated penetration test commissioned by gematik. The pentest shows we now provide a production-ready solution for TI-Messenger Pro hosting, as well as for other Matrix service providers that want to operate thousands of individual Matrix backends efficiently and economically. Synapse Pro for Small Hosts reduces hardware and personnel costs for hosting whole fleets of small Synapse deployments by up to 90% compared to individual Synapse instances. It comes as part of ESS Pro, ESS Pro for TI-Messenger, and also provides a standalone deployment for those who want to use it with their own Matrix stack. As usual, it provides a great out-of-the-box experience and can easily be used with CD tooling (like ArgoCD) for fleet management and automation.

Learn more about the pentest in our dedicated blog post and about Synapse Pro here.

sirloynes adds

There's also some related media coverage on this for 'Matrix in the News'.

πŸ”—Dept of Clients πŸ“±

πŸ”—Nheko (website)

Desktop client for Matrix using Qt and C++20.

Nico announces

I finally got around to fixing room version 12 support in Nheko, I hope (with a lot of help from nep). Please try out the nightlies and test if you can now properly be the creator of a v12 room and that editing power levels isn't broken in funky ways. It was quite a significant refactor and we want to make sure nothing broke because of this!

Apart from that other people have been working on way cooler quality of life changes than me like ensuring the tray icon doesn't gaslight you about window visibility, allowing more options on how the Enter key works or fixing the scroll interaction with combo boxes in the settings.

I know it has been a bit quite from our side, but we are still here! We are just playing hide and seek or so!

πŸ”—Element X iOS (website)

A total rewrite of Element iOS using the Matrix Rust SDK underneath and targeting devices running iOS 17+.

Mauro reports

This week the iOS crew shipped a tight, focused sequel β€” features, tests, and infra tightening the plot.

πŸ”—Features β€” media hits

  • Playback speed button + variable voice-message playback β€” fine-grained audio controls for voice messages and playback UI (faster playback, smoother UX).
    (PRs: #5124, #5121)

πŸ”—Tests & CI β€” the long, quiet montage

  • Large migration of tests to Swift Testing: Unit + Compound + UI test workstreams modernized.
  • CI: moving away from Ruby/Fastlane to Swift-based tooling β€” fewer layers, stronger types.
    (PRs: #5119, #5110, #5105, #5109, #5117)

πŸ”—Session & privacy β€” the alliance

  • Session verification unified with Android; UI tests refreshed.
  • DM default history visibility set to .invited β€” privacy-first default.
    (PRs: #5116, #5120, #5114)

πŸ”—Infra & tooling β€” tightening the strings

  • Tracing config updated with size/age limits; Sentry dSYM lane fixed; Gemfile updated for Ruby 4.0; SDK & dependency bumps.
    (PRs: #5108, #5112, #5101, #5081, #5089)

πŸ”—Element X Android (website)

Android Matrix messenger application using the Matrix Rust SDK and Jetpack Compose.

Jorge says

This week has been a quiet one in the team, mainly focused on improving the UX of the app and fixing bugs. We've started investigating performance improvements for the data syncs, and the planning for adding live location sharing.

We hope there are more exciting news to share next week!

πŸ”—Dept of SDKs and Frameworks 🧰

πŸ”—pygomx (website)

A golang matrix high level client library with c-bindings for python

saces announces

I want a library that hides all the matrix 2.0 from me and let me build my business logic in python and do quick&dirty (matrix)helper scripts. I did not found any I wanted to use, so I built my own, but with β€” no I'm not BenderπŸ€– β€” a simple text based c-api and multi client support:

pygomx is a monorepos to keep the right versions together and consists of three parts:

πŸ”—libmxclient - golang matrix client library
  • High level client library with a simple c-api: it basically passes (json)strings back and forth.
  • All the Matrix 2.0 magic is hidden in the lib.
  • Should work on any platform golang is enable to build for.
πŸ”—pygomx-module - python binding package
  • This package contains only the python bindings module binary
  • Should work on any platform you have a decent python and c-compiler for.
πŸ”—smal - simple matrix application library
import sys
from _pygomx import lib, ffi
import click
import json


@click.command()
@click.argument("domain", metavar="string")
def discoverhs(domain):
    """Attempts to discover the homeserver from the given string"""
    mxid = domain.encode(encoding="utf-8")

    r = lib.cli_discoverhs(mxid)
    result = ffi.string(r).decode("utf-8")
    lib.FreeCString(r)
    if result.startswith("ERR:"):
        print(result)
        sys.exit(1)
    result_dict = json.loads(result)
    print(result_dict["m.homeserver"]["base_url"])
  • Minimal bot example:
from smal.bot import SMALBot
DEFAULT_PREFIX = "!"

class MinimalBot(SMALBot):
    def on_sys(self, ntf):
        print("Got a system notification: ", ntf)
    def on_event(self, evt):
        print("Got a matrix event: ", evt)
    def on_message(self, msg):
        print("Got a room massage: ", msg)

def main():
    # create and initialize the bot
    bot = MinimalBot(DEFAULT_PREFIX)
    # start syncing forever (listen for incommmig messages/events)
    bot.run()

if __name__ == "__main__":
    main()

The project is at an early stage, things are still subject to change, but the basics are done and working.
Let's see where it evolves.

Help would be welcome for python packaging, especially for building anywheels.

Any other kind of help will be welcome too, of course ;)

That's all for now, see you.

πŸ”—matrix-rust-sdk (website)

Your all-in-one toolkit for creating Matrix clients with Rust, from simple bots to full-featured apps, with bindings to Swift, Kotlin, WebAssembly, Go and more, sponsored by Element.

Ivan πŸ¦€ announces

SalutΒ ! It's been a while since our last report. Time flies and we are pretty busy. I'll try to keep it short!

πŸ”—Event Cache

  • #6190 A pretty subtle bug has been fixed where a batch token could have been ditched in rare situations (when the sync only returns events that have been inserted inside the Event Cache via the Send Queue). The impact of this bug was missing events, so, rather important.
  • #6157 An undecrypted event in a ThreadSummary could be decrypted later, but the ThreadSummary wasn't aware of that: showing a UTD whilst it wasn't. Now it's no longer the case!
  • #6085 The pinned events are now persisted in the storage.

πŸ”—Latest Event

  • #6171 LatestEventValue::RemoteInvite is computed once per room, avoiding a bug where receiving some events in an invite room could have refreshed the LatestEventValue's timestamp, thus moving the room to the top of the Room List.
  • #6143 Not all m.room.member events are equal. We have restricted when m.room.member represents a LatestEvent candidate.
  • #6096 An edit of an event was reflected in the LatestEventValue, but not an edit of an edit. Well, the approach to handle edit aggregation has been revisited.

πŸ”—Logs

  • #6162 When the logs have accumulated and were too large, they could have been rejected by the rageshake servers. We've replaced RollingFileAppended by a custom SizeAndDateRollingWriter.
  • #6140 A new tool to help analyse the logs produced by matrix_sdk_ffi: cargo xtask log overview. It displays the logs in a tree of targets and log levels.

πŸ”—Stores

  • #6160 Not all environments need a cross-process lock, such as Android where an app usually runs in a single process (a contrario of iOS where notifications live in a different process than the main app). To improve performances, we've created CrossProcessLockConfig to configure the number of process and to act accordingly.
  • #6130 Creating a notification client from a regular client wasn't correctly separating the data, some were wrongly shared. This has been fixed by moving BaseClient::room_info_notable_update_sender into BaseStateStore. It breaks a couple of API, but they are simpler now.

πŸ”—Sync

  • #6148 "", null, or simply unset, this problem with JSON and the Matrix specification seems endless. Fix a deserialisation failure when the avatar_url is null.
  • #6136 Exclude service members from room names when using Sliding Sync to get notifications.
  • #6126 A user was unaware they've been invited in a room they have previously left. The SDK knew, but the update wasn't broadcasted correctly. This is now fixed!

πŸ”—FFI

  • #6122 The NotificationItem now includes the raw JSON of the underlying event.
  • #6116 Do not override the package_name and the cdylib_name value for Kotlin bindings.
  • #6112 and #6115 UniFFI checksums have been removed.
  • #6101 Add a dist profile with optimised binary size. The matrix-sdk-ffi library size is now 50-70MB smaller per architecture, resulting in very significant file size reduction for universal APKs, which have 4Β architectures!

πŸ”—libQuotient (website)

A Qt6 library to write cross-platform clients for Matrix

kitsune reports

πŸ”—libQuotient 0.9.6.1

After a couple of hiccups, a new maintenance release of libQuotient is out, mostly with backports of what is already there in dev branch (yet unreleased). The release notes are in the usual place. Most importantly, and as the release notes mention, the libQuotient development leads (namely, Tobias Fella and @kitsune:matrix.org) met in person at the Matrix hackathon before FOSDEM and agreed on making 0.10 beta soon after the E2EE backend based on matrix-rust-sdk-crypto gets merged, which is likely to happen in the coming week or two. Gird your loins, surely it's going to be fabulous!

πŸ”—Dept of Ops πŸ› 

πŸ”—Matrix Connectivity Tester (website)

A web interface to debug and troubleshoot Matrix connectivity issues.

MTRNord (they/them) reports

Hi everyone! For a while now I was working on a redesign based on the UK-Gov rebranded design for connectivity tester.

This release contains also some other features you might be interested in:

πŸ”—Frontend

  • Better accessibility
  • SSR (client side tests for the Client-Server API are still run in the browser)
  • A start in adding documentation on all the things you may be interested in when debugging with the connectivity tester. Be aware that this is a work in progress and they are not fully done yet.
  • The UI now offers guidance of possible ways to fix the encountered problems
  • Statistics page was fully revamped to look be more readable
  • The results page tries to be more focused on what people actually need as a TLDR while still allowing more detailed information to be accessed quickly.

You can find it at the usual places https://connectivity-tester.mtrnord.blog or https://federationtester.mtrnord.blog

πŸ”—Backend

  • Fixing the spurious failure emails happening which seemingly are unreproducible
  • Using OAuth 2.0 instead of magic emails for alerts (yes it has a migration path and yes that's optional for now. This will require UI changes first to be usable)
  • Improved API docs at https://connectivity-tester.mtrnord.blog/api-docs
  • Improved logging capabilities
  • Improved email layout

πŸ”—Other changes

As part of the redesign I did set up a Weblate instance at https://weblate.mtrnord.blog/projects/matrix-connectivity-tester/ which people can use to contribute translations for the UI and soon also the documentation pages. This hopefully will result in a more user friendly UI in the long run.

πŸ”—Where can I find out more?

The backend can be found at https://github.com/MTRNord/rust-federation-tester The frontend can be found at https://github.com/MTRNord/matrix-connection-tester-ui And a mailing list can be found at https://lists.midnightthoughts.space/mailman3/lists/matrix-connectivity-tester.lists.midnightthoughts.space/ if you prefer to not use GitHub.

At this time we do not offer a Matrix room due to the efforts it would take to moderate it.

As usual please open issues if you find issues for the UI or backend or write an email to the mailinglist if you do not like to use GitHub.

πŸ”—Dept of Bots πŸ€–

πŸ”—matrix-jukebox

bgt lover reports

Yesterday, I merged the contribution by Onestacked which adds compatibility with element call to our encryption code by adding the key derivation function element call uses because of the livekit JS sdk.

So, finally, we can have a bot which joins a matrix rtc session, currently an element call, and plays...pink noise? yup, as a proof of concept and we'll have a proper jukebox interface soon, whatever form that might have, but it's still incredible this works at all!

For issues, complaints, suggestions or contributions, feel free to visit our git repository and open issues or pull requests there.

Happy hacking!

Slavi [etke.cc] says

All this talk of Continuwuity motivates me to also post something.

Users were asking if baibot works on Continuwuity. Apparently, there was an issue with Continuwuity v0.5.4, which got resolved in Continuwuity v0.5.5. It turned out that baibot is working as expected. To test this, we had to add Continuwuity support to our baibot development environment. We even went as far as making Continuwuity the default homeserver implementation for the development environment, as that's a simpler & faster setup.

πŸ”—Dept of Interesting Projects πŸ›°οΈ

πŸ”—Godot Matrix RTC

cyclikal says

tl:dr Try out a new Godot Plugin that makes in-room multiplayer gaming / collaboration via widgets (by using MatrixRTC) easy!

Interested? Visit the repo at cyclikal94/godot-matrix-rtc, install via the Godot Asset Library and if you want some help, you can chat about MatrixRTC over in #webrtc:matrix.org.


This week I finished godot-matrix-rtc, a Godot plugin and sample project that makes it easier to get started using MatrixRTC in games and widgets created using Godot.

Simply install the plugin and you'll have everything you need to make the next Flappy Bird (but in Matrix!).

Following the FOSDEM'26 MatrixRTC x Godot - A Battle Royale talk, I initially started this project as a UI update to @toger5's Godot-MatrixRTC-Keyboard-Kart project, aka FloorIt Ipsum.

The aim was to make it cleanly adapt to different widget sizes and orientations, however this evolved into a separate reusable plugin bringing the Join/Leave UI and Logic into the Godot project.

A screenshot from a Matrix based game. It displays a race track seen from above, with Lorem Ipsum text on the track.

πŸ”—Details

The plugin adds a GodotMatrixRTC node to Godot which can be used to send/receive data from the RTC session, allowing multiplayer gameplay through a widget added to your room.

Once enabled, the plugin will set up a specific Export Preset and an EditorExportPlugin automatically includes the pre-requisite Element Call SDK dist so all you need to do is export your project, then deploy somewhere. No cloning or yarn build:sdk required!

Setup in 30 seconds... Let's go! 🏁

Now all you have to do is build a game... but so far as multiplayer goes, it's as simple as:

  1. Sending relevant local player game data with godot_matrix_rtc.update_own_data(data: Dictionary)
  2. Actioning remote player game data received via a Signal godot_matrix_rtc.connect("data_change", on_data_update)
  3. Handling players leaving and joining via a Signal godot_matrix_rtc.connect("member_change", on_rtc_member_update)

Once you have exported, simply deploy, then configure a widget in your room like so:

/addwidget https://example.com/GodotMatrixRTC.html?widgetId=$matrix_widget_id&perParticipantE2EE=true&userId=$matrix_user_id&deviceId=$org.matrix.msc3819.matrix_device_id&baseUrl=$org.matrix.msc4039.matrix_base_url&roomId=$matrix_room_id

πŸ”—Want to play now?

Simply add FloorIt Ipsum to your room to test your typing skills and prove your prowess as the faster typer on the track!

/addwidget https://godot-matrix-rtc-letter-cars-widget.netlify.app/webapptest?widgetId=$matrix_widget_id&perParticipantE2EE=true&userId=$matrix_user_id&deviceId=$org.matrix.msc3819.matrix_device_id&baseUrl=$org.matrix.msc4039.matrix_base_url&roomId=$matrix_room_id

πŸ”—Matrix Status Monitor for GNOME (v5)

MiklΓ³s Zsitva announces

The Matrix Status Monitor for GNOME Shell has reached v5, providing a faster way to navigate your Matrix rooms directly from the system panel.

What’s new:

  • Security at a glance: Integrated E2EE status icons for rooms.
  • Choose your client: Added explicit support for Element and Fractal. The extension uses native URI schemes to switch focus to your preferred app seamlessly.
  • Self-host friendly: Easily configurable for custom homeservers and tokens.
  • Metadata-only: Maintains privacy by only fetching room status and unread counts.

Source Code: https://github.com/nurefexc/matrix-status Install: https://extensions.gnome.org/extension/9328/matrix-status-monitor/

πŸ”—MSC Redirector (msc.re)

evol says

If you've been following Matrix for a while, you've probably noticed people mentioning Matrix's spec proposals (MSCs) by number, e.g. MSC4297. All MSCs are pull requests in the official repository. Often, I wanted to check what a MSC was about, but if it wasn't directly linked, I had to go to the repository and look for the MSC in there. I found that to be tedious, so I went and built https://msc.re!

It's very simple: typing a number after the slash (e.g. https://msc.re/4297) will redirect you to the right MSC. Typing nothing (https://msc.re) will take you to the home page of the repository. That's it!

The code is tiny and open source, check it out: https://github.com/evoL/msc-redirect. Join #msc-re:evolved.systems if you'd like to chat!

πŸ”—Matrix in the News πŸ“°

πŸ”—Matrix Federation Stats

Aine [etke.cc] reports

collected by MatrixRooms.info - an MRS instance by etke.cc

As of today, 15444 Matrix federateable servers have been discovered by matrixrooms.info, 3808 (24.7%) of them are publishing their rooms directory over federation. The published directories contain 18616 rooms.

The most popular server software among the online servers is:

  • synapse: 12670 (82.0%)
  • continuwuity: 784 (5.1%)
  • conduit: 565 (3.7%)
  • dendrite: 370 (2.4%)

Stats timeline is available on πŸ“Š MatrixRooms.info/stats

🧩 Integrations with apps and servers | πŸ‘‰ How to add your server | πŸ™… How to remove your server

πŸ”—Dept of Ping πŸ“

Here we reveal, rank, and applaud the homeservers with the lowest ping, as measured by pingbot, a maubot that you can host on your own server.

πŸ”—#ping:maunium.net

Join #ping:maunium.net to experience the fun live, and to find out how to add YOUR server to the game.

RankHostnameMedian MS
1usbpc.xyz172
2envs.net233.5
3vibb.me245.5
4nerdhouse.io294
5vibb.cc304
6gilice.hu334
7mustelid.chat404.5
8matrix.m.frn.dev.br415
9tenviki.dev418
10doofkopf.de472.5

πŸ”—That's all I know

See you next week, and be sure to stop by #twim:matrix.org with your updates!

To learn more about how to prepare an entry for TWIM check out the TWIM guide.

The Foundation needs you

The Matrix.org Foundation is a non-profit and only relies on donations to operate. Its core mission is to maintain the Matrix Specification, but it does much more than that.

It maintains the matrix.org homeserver and hosts several bridges for free. It fights for our collective rights to digital privacy and dignity.

Support us