SimpleX Chat: a messenger with no user identifiers, and what that costs you
SimpleX - the first messaging network operating without user identifiers of any kind - 100% private by design! iOS, Android and desktop apps 📱!
At a glance
- What is it?
- SimpleX Chat is an AGPL-3.0 messaging network from simplex-chat/simplex-chat that removes user identifiers from the protocol. Here is how the design works, how to install the terminal app, and where it stops being the right tool.
- Who is it for?
- Adopt SimpleX Chat if your threat model includes metadata correlation and you can meet contacts over a channel where you can confirm who sent the link. Do not adopt it if you need a permanent, searchable identity, server-side history, or a hosted web client.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly Haskell, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The problem SimpleX Chat solves: no identifier to collect
Every mainstream messenger needs something to route to. A phone number, a username, an account ID. That identifier is the join key for metadata: who talks to whom, when, and how often. SimpleX Chat's README states the project is "the first messaging platform that has no user identifiers of any kind." There is no account to register and no directory to enumerate. A connection exists only as a pair of one-time message queues, so the server side holds no stable handle that ties two people together across sessions.
That is the whole pitch, and it is narrower than "private messaging." Signal, for example, also encrypts content end to end, but it still resolves an account identifier when you start a conversation. SimpleX's contribution is at the routing layer, not the cipher layer. The README lists double ratchet end-to-end encryption "with additional encryption layer" as a feature, but the interesting part is what is absent: the identifier.
The audience follows from that. Journalists, organizers, and anyone whose contact graph is itself sensitive. If your concern is only that a provider reads message bodies, a mature E2EE messenger already covers you. SimpleX Chat is for the case where the contact graph is the asset you are protecting.
How a SimpleX connection is established without an account
The README describes the connection flow directly: "You need to share a link with your friend or scan a QR code from their phone, in person or during a video call, to make a connection and start messaging." The out-of-band step is the design, not an inconvenience. The link carries the queue address; the channel you use to send it does not need to be confidential, because the README notes it is enough that you can confirm who sent the message.
After that handshake, messages travel through SimpleX servers (smp.simplex.im addresses appear in the README's group links, for instance smp4.simplex.im and smp6.simplex.im). Because the queues are one-time and per-connection, a server operator sees traffic to a queue, not a user. The repository is Haskell: simplex-chat.cabal, cabal.project, src/, and a separate packages/ tree, with the Dockerfile building the terminal binary via cabal build exe:simplex-chat.
One consequence is worth stating plainly. Groups do not work like a room with a member list you can browse. The README points users to a SimpleX Directory at simplex.chat/directory for discovering groups, which exists precisely because the protocol itself does not expose a searchable registry. Discovery is bolted on at the application layer, and the README adds that the project is "not responsible for the content shared in these groups."
Installing the SimpleX Chat terminal app
The README's install section leads with mobile: App Store, Google Play, F-Droid, an APK link, and a TestFlight preview the README says is limited to 10,000 users. For desktop and servers, the README offers the terminal app on Linux, macOS and Windows, and the repository ships install.sh plus a Dockerfile.
The Dockerfile is the most explicit build recipe in the repository. It pins Ubuntu 22.04, installs the Haskell toolchain through ghcup with GHC 9.6.3 and cabal 3.10.1.0, copies scripts/cabal.project.local.linux into place, and runs the build with the client library enabled. That last part matters: the build command carries explicit constraints.
ARG TAG=22.04
FROM ubuntu:${TAG} AS build
ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3
ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0
RUN cabal update
RUN cabal build exe:simplex-chat --constraint 'simplexmq +client_library' --constraint 'simplex-chat +client_library'If you would rather not build Haskell locally, the repository also provides install.sh at the top level. The README does not spell out the script's flags, so read the script before running it rather than assuming a flag set.
bash install.shAfter the terminal app is running, the first real use is the same handshake as on mobile: create a profile, generate a connection link, and send it to someone you can verify out of band. There is no login screen and no password to set, which is why "SimpleX Chat login" is a search people make and why the honest answer is that there is no account login in the usual sense. Your profile lives locally; losing the device without a backup means losing the profile.
Where SimpleX Chat is the wrong tool
The absence of identifiers is also the absence of everything built on identifiers. You cannot be found. You cannot publish a handle and expect inbound messages. Every new contact costs a manual, verified exchange of a link or QR code. For a team of five that is fine. For a support inbox, a community, or a business that needs inbound contact, it is a structural mismatch, and no configuration fixes it.
History is another boundary. The README describes queue-based delivery and does not document server-side message storage or multi-device history sync. Treat the terminal app and the phone as separate local stores unless you have confirmed otherwise in the current release notes; the README does not promise synchronization.
The README also does not document rollback or downgrade steps. Releases at the time of writing are v7.1.0-beta.4, v7.1.0-beta.3 and v7.1.0-beta.2, all beta builds. If you run a beta on a device whose profile you care about, you are accepting a migration path the README does not describe. That is a real operational risk, not a footnote.
Finally, the project is funded partly through a public investment campaign (the README links a Wefunder page) and is licensed AGPL-3.0. Neither is a defect, but both shape what you are adopting: a project with its own sustainability model and a copyleft licence that reaches network use.
SimpleX Chat vs Signal: different layers, different defaults
The comparison people actually search for is SimpleX Chat vs Signal, and the difference is not which one encrypts better. Signal is built around a registered account, usually a phone number, and its privacy work happens on top of that account. SimpleX Chat removes the account. Signal gives you a stable identity you can hand out, multi-device sync, and a mature client on every platform. SimpleX gives you the opposite: no stable identity, and therefore nothing for an observer to correlate.
Choose Signal when your problem is content confidentiality and you want a messenger that behaves like a normal messenger. Choose SimpleX Chat when a leaked contact graph would be the damaging outcome, and when you can afford the manual connection ritual. They are not substitutes at the same layer of the stack.
Within the no-identifier space, the practical alternative is running your own SimpleX servers rather than using smp.simplex.im addresses, which shifts trust from the project's operators to you. The repository's Dockerfile and install.sh support self-hosting the client side; the README does not document the server deployment in detail, so treat that as a separate investigation.
Licence, maintenance and what an upgrade costs
The licence is AGPL-3.0. For most users of the mobile apps this changes nothing. For anyone embedding the client library into a service, the network clause is the part to read: offering the software over a network can trigger source disclosure obligations. That is a description of the licence text, not legal advice; if you are shipping a product on top of it, get your own reading.
Maintenance signals are strong on the surface. The repository is not archived, the last push was on 2026-09-20, and releases landed on 2026-09-19, 2026-09-15 and 2026-09-02. The default branch is stable while the newest tags are beta builds, which tells you the project ships fast and expects users to track moving versions.
Upgrade cost is where that speed bites. There is no documented rollback path in the README, and the recent releases are betas. Budget for verifying each upgrade on a throwaway profile before applying it to a device holding a connection graph you cannot recreate, because the connection links are one-time and a lost profile is not recoverable by logging back in.
Editorial conclusion
Adopt SimpleX Chat if your threat model includes metadata correlation and you can meet contacts over a channel where you can confirm who sent the link. Do not adopt it if you need a permanent, searchable identity, server-side history, or a hosted web client. Verify first that the build you install matches a published release and that your recipients accept the one-time link model, because without that confirmation the protocol's identifier-free design buys you nothing.
Frequently asked questions
What is SimpleX Chat used for?
It is used for private messaging and group chat where the contact graph itself is sensitive, since the network operates without user identifiers of any kind. The README also points to a directory of user-created groups and a developers group for bots and integrations.
Is SimpleX safer than Telegram?
The README does not compare the two. What it does state is that SimpleX Chat has no user identifiers and uses double ratchet end-to-end encryption with an additional encryption layer, which addresses metadata correlation rather than only message content.
Is SimpleX Chat open source?
Yes. The repository is licensed AGPL-3.0 and the client is written in Haskell, with the source, build scripts and Dockerfile published in the repository.
How do I install SimpleX Chat on a desktop or server?
The README lists mobile installs through the App Store, Google Play, F-Droid and an APK, and offers a terminal app on Linux, macOS and Windows. The repository provides install.sh and a Dockerfile that builds the binary with cabal using GHC 9.6.3 and cabal 3.10.1.0.
Is SimpleX Chat free?
The README does not describe pricing. The software is published under AGPL-3.0, and the README links a Wefunder page for investing in the project, which is separate from any cost of using the apps.
Is SimpleX Chat secure?
The README states that messages and metadata are protected, that the design has no user identifiers, and that it uses double ratchet end-to-end encryption with an additional encryption layer. It also links an external security audit published on the project blog.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/simplex-chat-simplex-chat)