
6 May 2026
by Slavi Pantaliv
read 7 minutes
At etke.cc, we host matrix servers for a living. About a decade ago, we were dissatisfied with Matrix self-hosting and launched the matrix-docker-ansible-deploy Ansible playbook (on which our etke.cc SaaS is based). Thanks for that, over time We believe we have found the solution for Matrix Self-Hosting for thousands of users.
All that time, we’ve also been spending many hours staring at Matrix clients – and the things we wish were different.
Today we are introducing komai – A desktop-first, native Matrix chat app we’re building to scratch that itch. We’re not sure we’ll solve the matrix on desktop, but it’s a modest attempt.

🤔Why another Matrix client?¸
We were not happy with what was there.
No attacking anyone – want to create matrix client really hard. The protocol surface is huge (rooms, locations, threads, receipts, attendance, push rules, homeserver quirks…). End-to-end encryption has its own implementation and UX pain on top: multi-device, key backup, verification, cross-signing, recovery.
Aggregate them all into one app and UX problems are inevitable. It’s more paperwork than any person can handle.
komai is an effort make things a little better.
🐱 Why did we start with nheko¹
Despite the proliferation of brand new Matrix clients in 2026, we didn’t want to write a Matrix client from scratch.
We started with nheko – a native Qt/QML metrics client. A solid foundation: native performance (QML has its own specifics, but still), mostly sensible defaults, a focused codebase (albeit with a lot of legacy code in it). And most importantly, not electrons.
The original plan was modest: avoid doing too much. Apply some UX patches on top of upstream, push some back, ship a nice little build of Neko.
That plan continued about 100 patches And we still want more. So much for “avoid doing too much”.
🤝 Why not contribute to NAHECO?
Short answer: Lots of ideas, very little patience for a slow process.
We wanted to be able to change things in major and sometimes controversial ways. We wanted to be masters of our own destiny.
We contributed upstream where it made sense. For example, for mtxclient (was using the matrix client library nheko):
These are all controversial now anyway – soon after, we stopped using mtxclient. More on that in a moment.
🚢The Ship of Theseus Moment¸
After ~100 patches, tracking up and moving that stack started to outweigh the benefits.
Change enough planks and you’re running a different ship. We had a choice: keep reconciling different goals, or stop pretending and send a client of our own.
We chose freedom and picked up a chain.
🔧 Breaking the Encryption Core¸
The most consequential change wasn’t a UX patch. It was an engine swap.
Neko’s metrics layer was built on mtxclient, libolm, and LMDB, all deeply interconnected.
These Matrix libraries are behind where the Matrix ecosystem is headed. Libolm has been deprecated for some time, and there is a long-running nheco issue discussing a possible move to the matrix-rust-sdk (nheco-reborn/nheco#1786). nheko escorts are right to hesitate: this is a Huge The amount of work for a small team, and the existing crypto stack added deeply to the codebase.
Two things streamlined it for us anyway:
- AI-assisted development is driving us forward. More information on this is given below.
- trust on
matrix-rust-sdkMature enough and worth the step up – better encryption (Vodozemac), sliding sync, modern MSC support and active development.
so In a few days of work, Codex removed mtxclient and libolm and dropped in matrix-rust-sdk.
We’re surprised the Switch worked as well as it did. Nevertheless, it still hurts. brought about change We spent a lot of time riding out a wave of regression And Our launch was delayed by several weeks.
Good news: Komai is now on the same Rust runtime that the broader Matrix ecosystem is building on.
🦀 Rust, and more rust¸
The matrix-rust-sdk transplant was not a one-off – it set the direction for Komai: More Rust, Less Legacy C++Especially for any protocol- or text-size.
Other pieces have also quietly moved across the line: URL detection in messages (LinkFi), blurhash encoding and decoding (BlurHash), code-block syntax highlighting (Sintect), YAML parsing for settings and themes, and metrics server discovery via Continuity’s ResolveMetrics crate (vendor and patched up).
Each move destroys the C++ surface we’ve maintained and in turn leaves us with a cleaner, better-tested foundation.
📦And then we kept adding features.
Once the lights came back on after the matrix-rust-sdk migration, we repeated this.
Some things we think about – Komai’s cool design philosophy:
- 🖥️ Desktop-first UX – Optimized for larger screens, not for extended phone UI
- 👓 Readable and easy to use – Comfortable text size, large hit targets (see Fitts’ rule), great color contrast
- 🎨 to shape your – Theme-worthy and configuration-management-friendly via plain-YAML files
- ✓ original display As a design constraint, not an afterthought
- 🎓 Educate, don’t exaggerate —Like Arch Linux, expose the real concepts of metrics rather than paper them
- 🧠 For both grandmothers and power users – Neither be fooled nor buried in complexity
Some of the things that came to light:
-
📑 Browser-Style Room Tab – Open multiple conversations at once, pin the ones you visit frequently. A power-user feature is still rare among Matrix customers; The idea was inspired by a presentation from the Robricks team.

2 rooms are open as tabs. All can be rearranged, closed, and reopened and auto-restored upon restart.
-
🌐 A curated registration page – Instead of funneling new users to the Matrix.org homeserver by default, the register page features a curated set of public servers (obtained from servers.joinmatrix.org). Decentralization should start from sign-up. We’re glad to see that FluffyChat has recently moved in a similar direction, albeit in a more conservative manner.

The register page offers a curated set of public servers – not just matrix.org.
-
🧭 A sophisticated room directory First-class Matrix room search support (enabled by default via matrixrooms.info), with language and room size filters.

Room directory, supported by matrix room search – with language and room size filters.
-
🎨 10+ built-in themesAll are maintained to meet WCAG AA contrast – Dark Matrix, Catpuchin, Dracula, Nord, Tokyo Night, Rose Pine, and more. 🗂️ User themes are also supported.

Dark Matrix Theme – One of 10+ built-in WCAG AA-contrast themes.
-
🎙️ voice transcription – long press space Instructing the composer (an interaction pattern inspired by the cloud). A more respectable (and skimmable, searchable) way to send a voice message than leaving a voice clip on someone (which Komai also supports). OpenAI works in the cloud or with any OpenAI-compliant local server.
-
🤖 automation hook – Drive Comai from CLI, D-Bus, or AI Agent over the Model Context protocol.
-
👥 multiple account Through dedicated application profiles – completely separate identity and status in one application (each profile in its own window).
-
🌐 30+ fully translated languages – Inherited Naheko translation, as well as AI-assisted gap filling across the board.
To learn more, see the Features Overview.
🤖Openly built with AI¸
Komai is highly AI-assisted, and we don’t hide it.
C++/QML/Rust is not a good fit for our team, so professional engineers and AI coding agents (Cloud Code, Codex) are working together to create a Matrix app you will love.
Our Bet: In capable hands, AI can deliver above average results.
Where is Komai today?
it is komai Good enough to send and gather some feedback. Not finished, not flawless, but:
- A daily-driver metrics client we use ourselves
- On the modern, actively developed Matrix stack (matrix-rust-sdk)
- With a feature set that holds its own against any other native Matrix client
- Completely free software (GPL-3.0 or later), no CLA, no contributor gatekeeping
Some features are still missing, others are still unreleased. try it. We’ll keep iterating from there.
📥 Try it¸
it is komai linux only (x86_64) for now, although building on Windows or Mac may be possible (still not tested).
It ships as AppImage, Flatpak, and Snap on GitHub releases, and as a Komai package on the Arch Linux AUR.
See 📥 Installation Guide for details.
💬 Join¸
🙏 thank you
Komai’s credits go to nheko (codebase lineage) and the matrix-rust-sdk team (the encryption core we now run on) – among many others; The full list is present in the Acknowledgments section of the Komai README.
<a href