Alpha Lightning is in alpha (0.7.4). It works for everyday chat, but there's been no security audit, the packages aren't code-signed, and calls don't work yet.Alpha 0.7.4no security audit, no code signing, no calls yet. What's still missing →
Lightning
A native Matrix client for Linux and Windows
v0.7.4 · Qt 6 · matrix-rust-sdk 0.18

Everything other Matrix
clients fake.

GIF search, voice messages, threads that work properly, and several accounts signed in at the same time. It's written in Qt 6 on top of the official Rust Matrix SDK, so it behaves like a desktop app instead of a website in a window.

Download for Linux or Windows Read the source
GPL-3.0-or-later Linux + Windows x86-64 No telemetry or analytics
A real desktop app
Qt 6 and QML, with a four-pane layout and the same scrolling feel everywhere.
Encryption that works
Olm and Megolm, cross-signing, emoji and QR verification, and key backup.
Eleven themes
All checked for WCAG-AA contrast, led by the Storm theme. Set one per account.
Nothing home-rolled
Lightning writes none of its own cryptography. The SDK handles all of it.
Why Lightning

Things most Matrix clients don't do

All four of these work today. Lightning is still young, so some of it is rough around the edges.

01

GIF search that's
actually built in

GIPHY and KLIPY sit side by side, with trending, search, categories, recents, safe search and an autoplay setting. GIFs send as normal Matrix media and get encrypted like any other attachment. Star one, in the picker or in a chat, and it goes to your Saved list.

The provider only ever sees what you typed in the search box. Not your Matrix ID, not the room, not your messages.

02

Voice messages you
can see as you talk

Hit record, watch the level move while you speak, then send it to a room or straight into a thread. They go as mono Opus (MSC3245) through the SDK, so encryption is handled the same way as any other upload.

Threads take text, images, files and voice notes, encrypted rooms included.

03

Several accounts,
signed in at once

Switch between accounts on different homeservers without logging in again. Each one gets its own SDK and its own encryption store, and only the one you're looking at syncs.

Logging in happens in two steps, so a device the server has just created can't end up attached to another device's keys.

04

Updates that check
themselves first

A signed manifest (Ed25519) sets the exact filename, size and SHA-256 of an update. Lightning checks the signature over the raw bytes before it reads any of the fields, and if that check fails the update stops there. There's no "install anyway" button.

A manifest can name a file to download. It can't name a command to run.

ThreadsPollsSpaces & subspacesRead receiptsPinned messagesSAS & QR verificationKey backupEleven WCAG-AA themesQuick switcherLink previewsServer push rulesOIDC sign-in
Screenshots

What it looks like

These come from Lightning's demo mode, which uses made-up *.example accounts and local test media. No real conversations.

Rooms and GIFs. The timeline, with the GIF picker open above the composer.
Threads. Their own panel next to the room, with summary cards in the timeline.
Emoji. Categories, search and a preview, here in an encrypted DM.
Polls. Make one and vote in the timeline, with counts updating live.

Eleven themes, and a twelfth that follows your desktop

Set per account, so a work login and a personal one do not have to look the same. Every one is checked for WCAG-AA contrast on every surface.

Lightning Light
Lightning Dark
Graphite
Midnight
Nordic
Purple Dusk
Warm
Moss Light
Indigo Night
Deep Teal
Storm
Features

What's in it today

Accounts, rooms and Spaces

  • Browser sign-in (OAuth 2.0 / OIDC) on homeservers that support it. Lightning checks the server as you type and only offers the methods it really has.
  • Spaces, including subspaces inside them, indented in the rail and browsable from a Space's front page.
  • Finding and joining rooms through the public directory, room addresses, matrix: links and matrix.to links. You can knock, and take a knock back. If a join is refused, you get told why.
  • Moderation tools that leave odd power levels alone. Someone set to 42 shows up as "Custom (42)" and stays at 42.
  • Presence is only fetched for people you can see. If it's unknown, Lightning shows nothing instead of guessing "offline".
  • A quick switcher on Ctrl-K, for jumping around and running commands, plus Ctrl-F to search the timeline.

Messaging and timelines

  • Live timelines with replies, edits, reactions, deletions, mentions and typing indicators.
  • Read receipts as small avatars down the right edge. Click them to see who read a message and when.
  • Pinned messages in their own tab. If a pin has been deleted or can't be loaded, it tells you, rather than dumping you somewhere random in the room.
  • Search across a room's whole history where it isn't encrypted. A server can't search encrypted messages, so in those rooms Lightning searches what's loaded and tells you that's what it did.
  • Forwarding re-uploads the file instead of copying the link, so a key from one room never turns up in another.
  • Drafts survive switching rooms. In encrypted rooms they stay in memory only, and if Lightning isn't sure whether a room is encrypted it assumes it is.

Threads

  • Real Matrix threads from the SDK, with replies and their own read receipts.
  • A Threads list per room, a side panel, follow and unfollow, and paging back through older ones.
  • Summary cards in the timeline showing who's taking part.
  • Text, images, files and voice notes in threads, encrypted rooms included.

Media

  • Video and audio play in the timeline, with posters, durations and waveforms. One volume setting covers every player.
  • Media and Files tabs in room info, with thumbnails loaded as you scroll.
  • Link previews fetched by Lightning itself, with separate settings for encrypted rooms, and an image viewer you can save from.

Encryption and account security

  • Sending and receiving in encrypted rooms through the Rust SDK. Keys are handled for you, messages that arrive before their key decrypt in place later, and you can retry by hand.
  • Emoji verification, started from either side, and QR verification. Both happen in a dialog in the middle of the screen, so the emoji you're comparing aren't buried at the bottom of a long page.
  • Nagging you can switch off. "Stop reminding me" hides the unverified-session badges. It doesn't pretend the session is verified.
  • Secure Backup restore, importing encrypted room keys, signing out individual devices, and a diagnostics export with identifiers hashed and no file paths or tokens in it.

Desktop experience

  • The Storm look across every menu, with keycap shortcuts, a quick-reaction strip, rebuilt pickers and identity cards in the account switcher.
  • Full-window settings you can search, Manrope, JetBrains Mono and Space Grotesk bundled in, and letter avatars when there's no picture.
  • Proper desktop notifications, with privacy options and the sender's avatar. Per-room settings are saved to your account's push rules, so a room you mute here stays muted in your other clients.
  • Pickers you can resize, which stay the size you left them, layouts that hold up from narrow to wide, and keyboard navigation everywhere.

Architecture

The interface, the app's state and the Matrix work are kept apart.

Qt 6 / QML — presentation, interaction, theming
C++ — application state, Qt-facing models, account/room/thread isolation
Rust bridge — FFI between C++ and the SDK
matrix-rust-sdk — sync, timelines, threads, media, Olm/Megolm E2EE, verification, key backup, receipts

QML only draws the interface. It never touches the protocol, your credentials, encryption or storage. The mock backends used in development aren't compiled into releases.

Download

Version 0.7.4

Released 2026-08-19 · every release comes with a SHA256SUMS file

Releases (GitHub)

Linux

best supported
.deb Debian / Ubuntu / Mint / Pop!_OS Download
sudo apt install ./lightning_0.7.4_amd64.deb
.rpm Fedora / RHEL / openSUSE Download
sudo dnf install ./lightning-0.7.4-1.x86_64.rpm
AppImage Any distribution, nothing installed Download
chmod +x Lightning-0.7.4-x86_64.AppImage && ./Lightning-0.7.4-x86_64.AppImage
.flatpak Flatpak (KDE Platform 6.9 runtime) Download
flatpak install --user ./lightning_0.7.4_amd64.flatpak
.snap Snap, strict confinement, local file Download
sudo snap install --dangerous ./lightning_0.7.4_amd64.snap
Verify your download
Get SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing

Windows

10 or later, x86-64
.msi MSI installer, per-user Download
double-click Lightning-0.7.4-e8139ed-windows-x86_64.msi
.exe Setup EXE, per-user Download
run the installer
.zip Portable ZIP, installs nothing Download
extract anywhere, run Lightning.exe
Windows packages aren't signed

You'll get an "unknown publisher" warning from SmartScreen. If you got the file from the release page above, pick More info → Run anyway. We've applied to the SignPath Foundation and the application is in progress, so no release is signed today.

What the installers touch

All three Windows formats install for your user only. None of them needs admin rights, and none of them touches PATH, file associations, URL handlers, services, scheduled tasks, firewall rules or autostart.

Windows has no way to check a download against a checksum without a command prompt, so the thing that protects you here is where you get the file: use the release page linked above, and nothing that mirrors it.

macOS

Coming soon

A macOS build is in progress. There is nothing to download yet, and no date -- when there is a release it appears on the GitHub releases page with everything else.

It will not be signed or notarised

Notarising needs a paid Apple Developer account, and there is no company behind Lightning to hold one. macOS will refuse to open the app the first time and say it cannot check it for malicious software. That is expected. The three steps below clear it for good, and none of them needs the Terminal — but because you are the one vouching for the app, download it only from the GitHub releases page linked above.

STEP 1
Try to open it, and let it fail

Drag Lightning into your Applications folder, then double-click it. macOS blocks it and offers you Done or Move to Bin — choose Done. This step is not optional: the button in step 2 only appears once macOS has blocked the app at least once.

STEP 2
Click Open Anyway

Go to Apple menu → System Settings → Privacy & Security and scroll down to the Security section. A line saying Lightning was blocked is waiting there with an Open Anyway button next to it. Click it and confirm with Touch ID or your login password.

STEP 3
Confirm once, and never again

One last dialog asks whether you are sure. Click Open. Lightning starts, and from then on it opens by double-click like any other app — you only do this the first time, and again after an update replaces the app.

On macOS 14 and earlier there is a shortcut: Control-click the app, choose Open, then Open again. macOS 15 removed it, so the route above is the one that always works.

Building from source

The route we actually test is the repo's Nix flake on Linux, with Qt 6.5+ and Rust from the dev shell. docs/build-and-test.md

Uninstalling

Removing Lightning takes the app and its shortcuts and leaves your session, settings and message stores where they are. Those go when you sign the account out.

Security and privacy

We don't collect anything, and there's no server

No analytics, no telemetry, no crash reports. Apart from the homeserver you signed in to, the only outside services Lightning talks to are the GIF providers, and only while the GIF picker is open.

Messages stay in memory

Decrypted messages aren't written to Lightning's caches, and keys, tokens, recovery keys and message text never go into the logs.

Tokens go in your keyring

libsecret on Linux, Credential Manager on Windows. If neither is there, Lightning falls back to something less secure and tells you it has.

Link previews start off

Lightning fetches previews itself, not through your homeserver, so a link someone sends you would see your IP address. That's why it's off until you turn it on.

Update checks send a version

Just Lightning/<version>. No Matrix ID, homeserver, device ID, token or room data, and there's no tracking ID to send in the first place. It's on by default and you can switch it off.

The signed manifest decides what a release is

It's the only thing that decides which versions exist and what their bytes should hash to. Downloads come from GitHub, but Lightning never calls the GitHub API or reads anything GitHub says about a release. The download URL is part of the signed manifest, and whatever comes back is checked against a hash that was fixed before the download started. Someone who took over the download host could break your download. They couldn't push you an update.

Project status

What isn't finished

Lightning is in the Matrix.org client directory, listed as Alpha for Windows and Linux. That's a listing, not an endorsement. The Matrix.org Foundation hasn't certified or approved anything here.

Calls don't work yet

There's a 1:1 voice stack in the code, with MSC2746 signalling and a WebRTC engine, but it's switched off on purpose. Nobody has confirmed an answered call over a real network yet, so the button says "coming soon" instead of pretending otherwise.

Search is limited in encrypted rooms

A homeserver can't search messages it can't read, so full-history search only works in unencrypted rooms. Encrypted ones search the part of the timeline you've loaded, and Lightning says as much instead of quietly giving you fewer results.

Nobody has audited it

There's been no formal security audit, and no release is code-signed. Anything touching encryption gets reviewed carefully and has to come with tests, but that isn't the same as an audit.

Expect rough edges

Things still move around: APIs, the interface, the way features behave. Some are experimental, and space-restricted join rules can be seen but not edited. If you need something to interoperate with another client, test it rather than assume it. This isn't a finished product.

Say hello

Find us on Matrix

Bugs and questions are both welcome, either in the room or in the issue tracker on GitHub.

#lightning:matrix.smetonis.net
Contribute

Read the code

It's all public, under GPL-3.0-or-later. The code, the full release history and the build scripts are all on GitHub.

Support the project

Help pay for the build server

One maintainer, no company, no income. Donations cover CI, the release server, and eventually that signing certificate.