Native Matrix client built on matrix-rust-sdk with a Silica UI.
FEATURES
- Sliding sync, end-to-end encryption, cross-signing, device verification (both directions), key backup and recovery
- Rooms, spaces (nested), direct chats, room directory search
- Send, edit, delete, reply, pagination in encrypted rooms
- Pictures, files, sharing (also as share target from Gallery / file manager)
- Voice and video calls (classic 1:1 VoIP; MatrixRTC-only clients cannot be called)
- Notifications, offline send queue, encrypted local stores
- OAuth (MAS) login, device-code login, password login
- English and German UI
WHY IS THE PACKAGE SO BIG?
The app ships the complete Matrix stack statically: matrix-rust-sdk, E2EE (vodozemac), sliding sync, rustls, its own HTTP runtime and a bundled SQLite. None of that exists as a system library on Sailfish OS, and Qt 5.6 is too old for the C++ alternatives - which is exactly why the protocol core is written in Rust. Installed size ~48 MB (Element X, same SDK: ~100 MB), RPM ~16 MB.
NO BACKGROUND DAEMON
Messages arrive while the app is running (the cover is enough). Like other daemonless messengers on this platform, a closed app does not receive.
ARCHITECTURES
aarch64 (Sailfish OS 5.0+), armv7hl (Sailfish OS 4.6+).
Written with Claude Code (Anthropic), icons included; the protocol core is upstream matrix-rust-sdk.
Source, issues, releases: https://github.com/JimKnopfIoT/harbour-xmatic
| Attachment | Size | Date |
|---|---|---|
| 15.12 MB | 18/08/2026 - 11:27 | |
| 15.63 MB | 18/08/2026 - 11:27 |
- Password sign-in no longer flickers into an empty room list: the sign-in reset the local store a second time, under the client it went on to use. The reset now belongs to whoever builds the client. - A missing store key is a locked session, never a re-login. The key in the device's secrets storage is released only through the system's own approval dialog, which the app never allowed to appear — so after a reboot the encrypted session read as "no session", the login page came up and the sign-in cleared the store: a new device and a recovery-key round for every affected user. The app now asks with the system dialog (once per boot), logs the storage's reason, never replaces a key while encrypted data exists, and shows a "Locked" page with a retry when the key is not at hand.
Recent comments