Introducing Komai: a fine Matrix chat app you can get to love 🦁

Introducing Komai: a fine Matrix chat app you can get to love 🦁

May 6, 2026 by Slavi Pantaleev 7 min read

Komai logo

At etke.cc, we host Matrix servers for a living. Almost a decade ago, we were dissatisfied with Matrix self-hosting and launched the matrix-docker-ansible-deploy Ansible playbook (which our etke.cc SaaS is based on). Thanks to that, over time we believe we solved Matrix self-hosting for thousands of users.

All that time, we’ve also been spending a lot of hours staring at Matrix clients β€” and at things we wished were different.

Today we’re introducing Komai β€” a desktop-first, native Matrix chat app we’ve been building to scratch that itch. We can’t be sure we’ll solve Matrix on the desktop, but it’s a humble attempt at it.

Komai main view

Komai’s main view β€” communities sidebar, room list, and timeline side by side.

πŸ€” Why another Matrix client?ΒΆ

We just weren’t happy with what was out there.

Not a swipe at anyone β€” building a Matrix client is genuinely hard. The protocol surface is enormous (rooms, spaces, threads, receipts, presence, push rules, homeserver quirks…). End-to-end encryption is its own implementation and UX pain on top: multi-device, key backup, verification, cross-signing, recovery.

Stack all of that into one app and UX problems are inevitable. It’s more papercuts than anyone can bear.

Komai is an attempt to make things a little better.

🐱 Why we started with nheko¢

We didn’t want to write a Matrix client from scratch, even with the proliferation of brand-new Matrix clients in 2026.

We started with nheko β€” a native Qt/QML Matrix client. A solid foundation: native performance (QML has its quirks, but still), mostly sensible defaults, a focused codebase (though with plenty of legacy code in it). And most importantly, not Electron.

The original plan was modest: avoid doing too much. Apply some UX patches on top of upstream, send some back, ship a slightly nicer build of nheko.

That plan continued for about 100 patches and we still craved more. So much for “avoid doing too much”.

🀝 Why not just contribute to nheko?¢

Short answer: too many ideas, too little patience for a slow process.

We wanted to be able to change things in major and sometimes controversial ways. We wanted to be the masters of our own destiny.

We did contribute upstream where it made sense. For example, to mtxclient (the Matrix client library nheko was using):

All of which is moot now anyway β€” soon after, we stopped using mtxclient. More on that in a moment.

🚒 The Ship of Theseus moment¢

After ~100 patches, tracking upstream while carrying that pile started to outweigh the benefit.

Replace enough planks and you’re sailing a different ship. We had a choice: keep reconciling diverging goals, or stop pretending and ship a client of our own.

We chose independence and picked up a chainsaw.

πŸ”§ Tearing out the encryption coreΒΆ

The most consequential change wasn’t a UX patch. It was an engine swap.

Nheko’s Matrix layer was built on mtxclient, libolm and LMDB, all deeply intertwined.

These Matrix libraries are behind where the Matrix ecosystem is heading. libolm has been deprecated for a while, and there’s a long-standing nheko issue discussing a possible move to matrix-rust-sdk (Nheko-Reborn/nheko#1786). nheko maintainers are right to hesitate: it’s a huge amount of work for a small team, and the existing crypto stack is wired deep into the codebase.

Two things made it tractable for us anyway:

  • AI-assisted development carrying us through. More on this below.
  • Trusting matrix-rust-sdk to be mature enough and worth the move β€” better encryption (vodozemac), sliding sync, modern MSC support, and active development.

So over a few days of work, Codex ripped out mtxclient and libolm and dropped in matrix-rust-sdk.

We’re surprised the switch worked as well as it did. Nevertheless, it still hurt. The change brought a wave of regressions we spent a long time climbing back out of and delayed our launch by weeks.

The good news: Komai now sits on the same Rust runtime the wider Matrix ecosystem is converging on.

πŸ¦€ Rust, and more RustΒΆ

The matrix-rust-sdk transplant wasn’t a one-off β€” it set Komai’s direction: more Rust, less legacy C++, especially for anything protocol- or text-shaped.

Other pieces have quietly moved across the line too: URL detection in messages (linkify), BlurHash encoding and decoding (blurhash), code-block syntax highlighting (syntect), YAML parsing for settings and themes, and Matrix server discovery via Continuwuity’s resolvematrix crate (vendored and patched up).

Each move chips away at the C++ surface we maintain and gives us cleaner, better-tested foundations in return.

πŸ“¦ And then we kept adding featuresΒΆ

Once the lights came back on after the matrix-rust-sdk migration, we kept iterating.

A few things we’re opinionated about β€” Komai’s quiet design philosophy:

  • πŸ–₯️ Desktop-first UX β€” optimized for large screens, not a stretched phone UI
  • πŸ‘“ Readable and easy to use β€” comfortable text sizes, large hit targets (see Fitts’s law), great color contrast
  • 🎨 Yours to shape β€” themeable and config-management-friendly via plain-YAML files
  • ⚑ Native performance as a design constraint, not an afterthought
  • πŸŽ“ Educate, don’t over-abstract β€” like Arch Linux, expose Matrix’s real concepts rather than paper over them
  • 🧠 For both grandma and power users β€” neither dumbed down nor buried in complexity

A few of the things that came out of that:

  • πŸ“‘ Browser-style room tabs β€” open multiple conversations side by side, pin the ones you keep coming back to. A power-user feature still rare among Matrix clients; the idea was sparked by a presentation from the Robrix team.

    Komai room tabs

    2 rooms open as tabs. All can be reordered, closed, and reopened and auto-restore on 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 (seeded from servers.joinmatrix.org). Decentralization should start at sign-up. We’re glad to see FluffyChat recently moved in a similar direction, though more conservatively.

    Komai registration page

    The Register page surfaces a curated set of public servers β€” not just matrix.org.

  • 🧭 A polished room directory with first-class Matrix Rooms Search support (enabled by default via matrixrooms.info), language and room-size filters.

    Komai room directory

    The room directory, backed by Matrix Rooms Search β€” with language and room-size filters.

  • 🎨 10+ built-in themes, all maintained to meet WCAG AA contrast β€” Dark Matrix, Catppuccin, Dracula, Nord, Tokyo Night, Rose Pine, and more. πŸ—‚οΈ User themes are also supported.

    Komai Dark Matrix theme

    The Dark Matrix theme β€” one of 10+ built-in WCAG AA-contrast themes.

  • πŸŽ™οΈ Voice transcription β€” long-press Space to dictate into the composer (an interaction pattern inspired by Claude). A more respectful (and skimmable, searchable) way to send a message by voice than dropping a voice clip on someone (which Komai also supports). Works with OpenAI cloud or any OpenAI-compatible local server.

  • πŸ€– Automation hooks β€” drive Komai from CLI, D-Bus, or an AI agent over the Model Context Protocol.

  • πŸ‘₯ Multi-account via dedicated application profiles β€” fully separate identities and state, in one application (each profile in its own window).

  • 🌐 30+ fully translated languages β€” inherited nheko translations, plus AI-assisted gap filling across the board.

To learn more, see the ✨ features overview.

πŸ€– Built openly with AIΒΆ

Komai is heavily πŸ€– AI-assisted, and we don’t hide it.

C++/QML/Rust isn’t our team’s strong suit, so professional engineers and AI coding agents (Claude Code, Codex) are working together to hopefully build a Matrix app you can love.

Our bet: AI in capable hands can deliver above-average results.

πŸ“ Where Komai is todayΒΆ

Komai is good enough to ship and gather some feedback. Not finished, not flawless, but:

  • a daily-driver Matrix client we use ourselves
  • on a modern, actively-developed Matrix stack (matrix-rust-sdk)
  • with a feature set that holds its own against any other native Matrix client
  • fully Free Software (GPL-3.0-or-later), no CLA, no contributor gatekeeping

Some features are still missing, others still unpolished. Try it. We’ll keep iterating from there.

πŸ“₯ Try itΒΆ

Komai is Linux-only (x86_64) for now, though building on Windows or Mac may be possible (still untested).

It ships as AppImage, Flatpak, and Snap on GitHub Releases, and as a komai package on the Arch Linux AUR.

See the πŸ“₯ Installation guide for details.

πŸ’¬ Get involvedΒΆ

πŸ™ ThanksΒΆ

Komai owes a lot to nheko (the codebase ancestry) and to the matrix-rust-sdk team (the encryption core we now ride on) β€” among many others; the full list lives in the Acknowledgements section of the Komai README.

Don't have a Matrix server yet?

We specialize in setup, hosting and maintenance of Matrix and various Matrix & non-Matrix add-ons.
Hosting is on affordable VPS servers provided by us (via Hetzner Cloud) in the EU, US and Asia, or on your own infrastructure anywhere in the world.

Let's build your Matrix haven together!

Order Now