Mandelbrot
Mandelbrot is a GNOME-native Matrix messaging client, forked from Fractal to move faster on the modern Matrix feature set. It is built in Rust on GTK 4, Libadwaita, and the matrix-rust-sdk.
Why a fork?β
Fractal is an excellent, actively maintained client, but some features are outside its current scope. Mandelbrot keeps full compatibility with everything Fractal does β E2EE with cross-signing and verification, rich messaging, moderation, multi-account β and adds the modern Matrix feature set on top.
Features beyond Fractalβ
- Native voice & video calls (experimental) β MatrixRTC built in natively (no
embedded browser): join calls from the room header, GNOME-native call view with
participant grid and auto-hiding controls, a return-to-call bar, and incoming-call
notifications using the freedesktop portal v2
call.incomingcategory (great on Phosh, landing in GNOME Shell). Calls are end-to-end encrypted with automatic key rotation, and crash-safe membership cleanup via MSC4140 delayed events. Requires a homeserver with a LiveKit focus (e.g. matrix.org). The implementation's conformance suite β ported from matrix-js-sdk β runs in CI, plus a live interop test harness. - Simplified sliding sync (MSC4186) β instant room list on supported homeservers (Synapse β₯ 1.114), with automatic fallback to classic sync elsewhere.
- QR code login (MSC4108) β "Sign in with QR code" on the login screen, and "Link New Deviceβ¦" in Account Settings β Sessions (OAuth 2.0 homeservers).
- Threads (MSC3440) β a "N replies in thread" button opens an adaptive thread panel with its own composer, thread-scoped replies/edits/reactions, and per-thread drafts.
- Polls (MSC3381) β create disclosed or undisclosed polls from the composer menu, vote, watch live results, and end polls from the context menu.
- Voice messages (MSC3245) β record with the composer's microphone button (live level meter), send as Ogg Opus with waveform metadata.
Full feature documentation: docs/FEATURES.md.
Installationβ
flatpak remote-add --user --if-not-exists tuna-os https://tunaos.org/flatpak/tuna-os.flatpakrepo
flatpak install --user tuna-os org.tunaos.mandelbrot
Mandelbrot runs on the GNOME 50 runtime, so you also need the
Flathub remote (or another source for
org.gnome.Platform//50).
Added the tuna-os remote before it moved to tunaos.org? --if-not-exists keeps
your old one and the install will say nothing matches. Fix it with
flatpak remote-modify --user tuna-os --url=oci+https://tunaos.org/flatpak.
Reporting issuesβ
Please report issues with core messaging that also reproduce in Fractal to the Fractal issue tracker, and Mandelbrot-specific issues (calls, sliding sync, QR loginβ¦) to the Mandelbrot repo.
Sourceβ
- Repository: github.com/tuna-os/mandelbrot
- Roadmap & architecture notes:
MANDELBROT.md - License: GPL-3.0-or-later (same as Fractal)