Olm and Matrix: where Fenzly's encryption engine comes from
Since the beginning of this series we’ve described Fenzly’s encryption as Double Ratchet end-to-end encryption, the same protocol family as Signal. That sentence has two halves, and we’ve only ever explained the first. This post is about the second: the concrete engine that runs inside Fenzly is called Olm, and it was born in a project called Matrix. Both deserve a proper introduction, because when you trust an app with your family’s location, you’re really trusting this machinery.
Matrix, briefly
Matrix is an open standard for real-time communication, started in 2014 by Matthew Hodgson and Amandine Le Pape. The idea behind it is older than messaging apps and better than most of them: communication should work like email. Nobody owns email; anyone can run a server; servers talk to each other. Matrix applies that to instant messaging — an open, decentralised network where no single company sits in the middle, stewarded today by a non-profit foundation, with Element as its best-known app.
A network like that has a problem centralised apps don’t: you can’t just trust “the server”, because anyone can run one. So Matrix needed end-to-end encryption where the server is assumed untrustworthy from day one. If that assumption sounds familiar, it’s the blind server premise, arrived at from the opposite direction.
Olm: the Double Ratchet, reimplemented in the open
The Double Ratchet — the “fresh lock for every message” mechanism we described at the start of the series — was invented by the team behind the Signal app, and published as an open specification. Publishing it was the point: cryptography earns trust by being examined, not by being secret.
Olm is the Matrix project’s implementation of that algorithm family, released in 2016 under the permissive Apache licence, precisely so that projects outside Matrix could adopt it, study it, and ship it. And studied it was: in 2016, the security firm NCC Group publicly audited the library, with the findings published in full — issues found, issues fixed, report readable by anyone. That’s the culture Olm grew up in.
From C to Rust: vodozemac
Software ages, and cryptographic software ages fastest where it’s least visible: memory handling, side channels, primitives that were fine a decade ago. In 2021 the Matrix team rewrote the engine from scratch in Rust, a language designed to eliminate whole classes of memory bugs. The rewrite is called vodozemac.
In 2022, vodozemac went through an independent security audit by Least Authority — co-funded, notably, by the agency digitising Germany’s healthcare system, which was betting on this exact machinery. In 2024, the Matrix project formally deprecated the old C library and made vodozemac the recommended engine.
Fenzly runs vodozemac — the audited Rust successor, not the deprecated original — through a thin integration layer we maintain ourselves.
How it compares to Signal
The honest comparison is short: it’s the same core algorithm, from the same published specification, with two different histories around it.
The Signal app implements the Double Ratchet inside one centralised service, with its own key-agreement layer and its own group machinery. Olm implements the same ratchet for an open, federated world, under a licence that lets anyone use it. Both provide the properties that matter: end-to-end encryption, forward secrecy (yesterday’s messages stay sealed even if today’s key leaks), and self-healing after a compromise.
Where they genuinely differ is around the edges: key agreement details, and above all group messaging. Matrix adds a separate mechanism (Megolm) to make huge rooms efficient, at some cost in per-member guarantees. Fenzly deliberately uses only the pairwise core: your circle is a handful of people, not a thousand-member room, so every message is sealed individually for each member, keeping the strongest guarantees for everyone. Why that choice scales fine for families — and wouldn’t for a stadium — is a post of its own.
Who trusts this machinery
Olm is not an obscure library; it may be the most widely deployed Double Ratchet implementation outside Signal itself. The French civil service runs on Tchap, a Matrix-based platform with hundreds of thousands of monthly users. The German armed forces built BwMessenger on Matrix, later extended to other German authorities. And Germany’s healthcare agency chose Matrix as the standard for secure messaging across its national health system — potentially 150,000 organisations handling the most sensitive data there is.
None of that proves the code is perfect. It proves something more useful: serious institutions, with serious threat models and their own auditors, keep arriving at the same machinery.
What this means for Fenzly, honestly
Why did we choose this engine? Three reasons, stated plainly. The algorithm family is the right one — the published, studied Double Ratchet. The implementation is the well-maintained, independently audited one, in a memory-safe language. And the licence fits our project: Fenzly’s client is closed source, so we needed an engine whose licence permits that — Olm’s permissive licence exists exactly for this, where some alternatives don’t allow it.
And the honest boundaries, as always. “Audited” refers to the cryptographic library at its core — not to Fenzly as a whole; nobody has audited our app, and we won’t borrow the library’s credentials. An audit is an examination at a point in time, not a halo: researchers keep probing this code, which is exactly how open cryptography is supposed to work, and a reason for confidence rather than alarm. Finally, using Olm does not make Fenzly part of the Matrix network — there’s no federation, no Matrix servers involved; we use the engine, on our own blind infrastructure.
The lock on your family’s location was forged in the open, examined in public, and is relied on by armies, governments and hospitals. We think that’s the only kind of lock worth using.
Next: sharing your location isn’t a yes/no switch in Fenzly — the different sharing modes a circle can use, and how to pick the right one for each.