Fluux Messenger: A fast, modern, cross-platform XMPP client for communities and organizations.
425
stars
2,061
commits
TypeScript
primary language
Sep 8, 2026
updated
A modern, cross-platform XMPP client for communities and organizations
A quick tour: messaging, group rooms, end-to-end encryption, and theming.
Light and dark modes side by side
: and a keyword to complete emojis inline, with arrow-key navigation and Enter or Tab to insertin: prefix autocomplete, quoted exact-phrase matching, and keyboard-navigable results with context preview@fluux/sdk package for building custom XMPP clients or botsWant to try it first? Head over to demo.fluux.io for a live demo, no installation needed.
Download the latest release for your platform from the releases page.
Install using the instructions for your platform below.
Connect to any XMPP server with your credentials and start chatting!
| Format | How to install |
|---|---|
.exe | Run the setup wizard (recommended) |
.msi | Run msiexec /i Fluux-Messenger_*_Windows_x64.msi or double-click to install |
| Format | How to install |
|---|---|
.dmg | Open the image and drag Fluux Messenger to Applications (recommended) |
.app.tar.gz | Extract with tar xzf and move the .app to Applications |
Both x64 (Intel) and arm64 (Apple Silicon) builds are available.
| Format | How to install |
|---|---|
.deb | sudo dpkg -i Fluux-Messenger_*.deb (Debian, Ubuntu, Mint...) |
.rpm | sudo rpm -i Fluux-Messenger_*.rpm (Fedora, RHEL, openSUSE...) |
.flatpak | flatpak install Fluux-Messenger_*.flatpak |
.tar.gz | Extract with tar xzf and run the binary directly |
Both x64 and arm64 builds are available for all formats.
Arch Linux users can install from the AUR: fluux-messenger
Download the fluux-messenger-*-web.zip asset from the releases page, extract it, and serve it with any web server (the app must be served over HTTP). This also works as a PWA on mobile devices when served from your own domain.
See the Developer Guide for instructions on building and running Fluux Messenger locally.
Need help? See the support options below.
The desktop app accepts a few command-line flags. Run fluux-messenger --help to list them:
| Flag | Description |
|---|---|
-v, --verbose | Enable verbose logging to stderr (no XMPP traffic) |
--verbose=xmpp | Enable verbose logging including XMPP packet content |
--log-file=PATH | Override the log file directory (default: platform log dir) |
-c, --clear-storage | Clear local storage (localStorage, sessionStorage, IndexedDB) on startup |
--dangerous-insecure-tls | Disable TLS certificate verification. Insecure, for development and testing only. |
-h, --help | Show the help message |
Warning:
--dangerous-insecure-tlsturns off TLS certificate validation for the connection to your XMPP server, which exposes it to man-in-the-middle attacks. Use it only for local development or testing (for example, against a server with a self-signed certificate), never in production.
We have a lot planned for Fluux Messenger, and we welcome questions, feedback, and bug reports.
Have suggestions for this FAQ? Ask questions or propose additions in our Q&A Discussions.
We aim to create an XMPP client that respects standards, but currently the project has been tested exclusively with ejabberd. We're eager to receive feedback on compatibility with other servers.
Yes. A pre-built static web bundle (-web.zip) is available on the releases page. Extract it and serve it with any web server.
We also plan to publish Fluux Messenger on F-Droid, and possibly on the Google Play Store.
Yes, on the desktop app: it ships with a built-in WebSocket-to-TCP proxy. It first tries WebSocket (via XEP-0156 discovery), then falls back to TCP/TLS.
The web version requires WebSocket on your server, with CORS configured to allow the origin from which Fluux is served.
The web version downloads each encrypted attachment and decrypts it in the browser before displaying it, so the host serving your uploaded files (HTTP File Upload) must also send CORS headers allowing the origin from which Fluux is served. This is the same CORS requirement as the WebSocket endpoint above, applied to your file-storage host. The desktop app downloads files through its native HTTP client, so it is not affected.
Yes. OpenPGP (OX-IM, XEP-0373/0374) is implemented for one-to-one chats. Messages in 1:1 conversations are encrypted and signed using each participant's published OpenPGP key. Features include automatic key discovery, peer verification with cross-device sync, secret key backup, and MAM history decryption. Group-chat (MUC) encryption is not yet supported. OMEMO may follow: beyond the implementation work it raises licensing questions we want to address properly. We're also watching MLS as an option for large-scale group chats.
We know it's important and we want to bring it. We can't commit to a timeline yet: there's real work to do on both the client and server side, especially for group calls which need a media-mixing SFU to be reliable.
Not yet. Read receipts are on our list and we plan to start with 1-to-1 chats. For group rooms we're still weighing the question: how useful they actually are at scale, how best to implement them and the privacy implications of broadcasting read state to every participant.
Not yet. Spaces (XEP-0503) have started to appear in the ecosystem (Movim has an experimental implementation) and we're watching how it evolves before committing to an approach.
Yes, translations are welcome. Locale files live under apps/fluux/src/i18n/locales/. See CONTRIBUTING.md for the general contribution workflow. Open an issue or discussion first if you have questions.
There's no formal roadmap document, but we track upcoming work through GitHub Milestones and Issues. Follow, comment or open a new issue for anything you'd like to see.
Yes. Two things can trigger warnings right now:
If you'd rather verify for yourself, build the app from source.
Yes. By default, closing the main window minimizes Fluux to the system tray or menu bar so it can keep your XMPP session alive and deliver notifications. To fully exit, use the Quit entry from the tray menu.
Fluux never persists your password to local storage. If your XMPP server supports FAST authentication tokens (SASL2), Fluux stores a short-lived token in local storage so reconnection across page reloads works without storing the password. Without FAST support, the session credentials disappear when the tab closes and you must log in again.
Contributions are welcome! See CONTRIBUTING for detailed guidelines.
To get started with development, see the Developer Guide.
Fluux Messenger is licensed under the GNU Affero General Public License v3.0 or later. See LICENSE
Built with ❤️ by ProcessOne.
TypeScript
94.5%
Rust
3.6%
Fluux Messenger: A fast, modern, cross-platform XMPP client for communities and organizations.
425
stars
2,061
commits
TypeScript
primary language
Sep 8, 2026
updated
A modern, cross-platform XMPP client for communities and organizations
A quick tour: messaging, group rooms, end-to-end encryption, and theming.
Light and dark modes side by side
: and a keyword to complete emojis inline, with arrow-key navigation and Enter or Tab to insertin: prefix autocomplete, quoted exact-phrase matching, and keyboard-navigable results with context preview@fluux/sdk package for building custom XMPP clients or botsWant to try it first? Head over to demo.fluux.io for a live demo, no installation needed.
Download the latest release for your platform from the releases page.
Install using the instructions for your platform below.
Connect to any XMPP server with your credentials and start chatting!
| Format | How to install |
|---|---|
.exe | Run the setup wizard (recommended) |
.msi | Run msiexec /i Fluux-Messenger_*_Windows_x64.msi or double-click to install |
| Format | How to install |
|---|---|
.dmg | Open the image and drag Fluux Messenger to Applications (recommended) |
.app.tar.gz | Extract with tar xzf and move the .app to Applications |
Both x64 (Intel) and arm64 (Apple Silicon) builds are available.
| Format | How to install |
|---|---|
.deb | sudo dpkg -i Fluux-Messenger_*.deb (Debian, Ubuntu, Mint...) |
.rpm | sudo rpm -i Fluux-Messenger_*.rpm (Fedora, RHEL, openSUSE...) |
.flatpak | flatpak install Fluux-Messenger_*.flatpak |
.tar.gz | Extract with tar xzf and run the binary directly |
Both x64 and arm64 builds are available for all formats.
Arch Linux users can install from the AUR: fluux-messenger
Download the fluux-messenger-*-web.zip asset from the releases page, extract it, and serve it with any web server (the app must be served over HTTP). This also works as a PWA on mobile devices when served from your own domain.
See the Developer Guide for instructions on building and running Fluux Messenger locally.
Need help? See the support options below.
The desktop app accepts a few command-line flags. Run fluux-messenger --help to list them:
| Flag | Description |
|---|---|
-v, --verbose | Enable verbose logging to stderr (no XMPP traffic) |
--verbose=xmpp | Enable verbose logging including XMPP packet content |
--log-file=PATH | Override the log file directory (default: platform log dir) |
-c, --clear-storage | Clear local storage (localStorage, sessionStorage, IndexedDB) on startup |
--dangerous-insecure-tls | Disable TLS certificate verification. Insecure, for development and testing only. |
-h, --help | Show the help message |
Warning:
--dangerous-insecure-tlsturns off TLS certificate validation for the connection to your XMPP server, which exposes it to man-in-the-middle attacks. Use it only for local development or testing (for example, against a server with a self-signed certificate), never in production.
We have a lot planned for Fluux Messenger, and we welcome questions, feedback, and bug reports.
Have suggestions for this FAQ? Ask questions or propose additions in our Q&A Discussions.
We aim to create an XMPP client that respects standards, but currently the project has been tested exclusively with ejabberd. We're eager to receive feedback on compatibility with other servers.
Yes. A pre-built static web bundle (-web.zip) is available on the releases page. Extract it and serve it with any web server.
We also plan to publish Fluux Messenger on F-Droid, and possibly on the Google Play Store.
Yes, on the desktop app: it ships with a built-in WebSocket-to-TCP proxy. It first tries WebSocket (via XEP-0156 discovery), then falls back to TCP/TLS.
The web version requires WebSocket on your server, with CORS configured to allow the origin from which Fluux is served.
The web version downloads each encrypted attachment and decrypts it in the browser before displaying it, so the host serving your uploaded files (HTTP File Upload) must also send CORS headers allowing the origin from which Fluux is served. This is the same CORS requirement as the WebSocket endpoint above, applied to your file-storage host. The desktop app downloads files through its native HTTP client, so it is not affected.
Yes. OpenPGP (OX-IM, XEP-0373/0374) is implemented for one-to-one chats. Messages in 1:1 conversations are encrypted and signed using each participant's published OpenPGP key. Features include automatic key discovery, peer verification with cross-device sync, secret key backup, and MAM history decryption. Group-chat (MUC) encryption is not yet supported. OMEMO may follow: beyond the implementation work it raises licensing questions we want to address properly. We're also watching MLS as an option for large-scale group chats.
We know it's important and we want to bring it. We can't commit to a timeline yet: there's real work to do on both the client and server side, especially for group calls which need a media-mixing SFU to be reliable.
Not yet. Read receipts are on our list and we plan to start with 1-to-1 chats. For group rooms we're still weighing the question: how useful they actually are at scale, how best to implement them and the privacy implications of broadcasting read state to every participant.
Not yet. Spaces (XEP-0503) have started to appear in the ecosystem (Movim has an experimental implementation) and we're watching how it evolves before committing to an approach.
Yes, translations are welcome. Locale files live under apps/fluux/src/i18n/locales/. See CONTRIBUTING.md for the general contribution workflow. Open an issue or discussion first if you have questions.
There's no formal roadmap document, but we track upcoming work through GitHub Milestones and Issues. Follow, comment or open a new issue for anything you'd like to see.
Yes. Two things can trigger warnings right now:
If you'd rather verify for yourself, build the app from source.
Yes. By default, closing the main window minimizes Fluux to the system tray or menu bar so it can keep your XMPP session alive and deliver notifications. To fully exit, use the Quit entry from the tray menu.
Fluux never persists your password to local storage. If your XMPP server supports FAST authentication tokens (SASL2), Fluux stores a short-lived token in local storage so reconnection across page reloads works without storing the password. Without FAST support, the session credentials disappear when the tab closes and you must log in again.
Contributions are welcome! See CONTRIBUTING for detailed guidelines.
To get started with development, see the Developer Guide.
Fluux Messenger is licensed under the GNU Affero General Public License v3.0 or later. See LICENSE
Built with ❤️ by ProcessOne.
TypeScript
94.5%
Rust
3.6%