HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
simplex-chat
simplexmq
Haskell2022–2025
simplex-chat / simplexmq

simplexmq

⚙️ SimpleXMQ - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks.

10Distinct people
15Mentions
0Explicit recommenders
862GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

⚙️ SimpleXMQ - A reference implementation of the SimpleX Messaging Protocol for simplex queues over public networks.

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 11:56:56 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year15 dated mentions

Observed mentions: 2022-01-12 21:46:02 UTC to 2025-11-23 11:23:18 UTC.

02462022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20222023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC101
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC312
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC514
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC606

What Hacker News says

15 sources
> On Android, however, this is not as easy or straightforward and I cannot think of a way to do this, to be honest. That is why I prefer these programs to have Tor bundled and run the hidden service by themselves with a hardened-enough torrc. Ricochet does this on desktop, which I think is the right way to go about this. SimpleX's server (https://github.com/simplex-chat/simplexmq) should do this. What I do is run Wireguard on my server with a Tor daemon, connect to the WG network on my phone and then access the SOCKS and DNS proxies the Tor daemon exposes. That way there is no need for Orbot or running Tor on Android at all.
In Delta Chat is a decentralized and secure messenger app
Yeah, I figured it out. I think I am supposed to do this: run a hidden service and a SimpleX server that uses the hidden service's port, and then use the hidden service's hostname as my SMP server that I set within the app. On Android, however, this is not as easy or straightforward and I cannot think of a way to do this, to be honest. That is why I prefer these programs to have Tor bundled and run the hidden service by themselves with a hardened-enough torrc. Ricochet does this on desktop, which I think is the right way to go about this. SimpleX's server (https://github.com/simplex-chat/simplexmq) should do this.
In Delta Chat is a decentralized and secure messenger app
Agree with your post, but do want to point out that using private message routing on SimpleX theoretically hides your IP address from the server[1]. Similarly, built-in routing over Tor can make performing correlation attacks difficult for some adversaries, and if you elect to use your own .onion servers instead of the official ones, it adds another layer of obfuscation. [1] https://github.com/simplex-chat/simplexmq/blob/stable/protoc...
In Delta Chat is a decentralized and secure messenger app
Differences between Cwtch, and SimpleX? Which are you leaning towards to and why? According to https://github.com/simplex-chat/simplexmq/blob/stable/protoc...: > identify that and when a user is using SimpleX. Does this apply to Cwtch? Also, is it not possible to obfsucate this traffic? Tor with obfs4? Related: #1 - https://security.stackexchange.com/questions/241730/traffic-... #2 - https://github.com/simplex-chat/simplex-chat/issues/4300 #3 - https://github.com/tst-race/race-docs/blob/main/race-channel...
In Delta Chat is a decentralized and secure messenger app
> Yet you provide no options for Tor, as in https://simplex.chat/docs/server.html your idea for anonymizing users is... For the user to hop through roughly 20 page document of dozens of commands to create the equivalent of personal VPN server, and amidst it, to connect anonymously to contacts' servers, you need to install... You need to understand things you criticise. There is no contradiction here. We don't think Tor should be default, because Tor has bad threat model for many people, and bad usability for most people. This is a separate conversation, but you think that Tor is panacea for anonymity and that it provides "good enough" anonymity for most people, you need to read this rather old presentation: https://ritter.vg/p/tor-v1.6.pdf, in particular the pages titled "Guards - Math". In short, the conclusion should be that Tor provide
Read the rest
s ok anonymity for web browsing, with only occasional streams being de-anonymised, but it provides really bad anonymity for hidden services, because it is enough to deanonymise one stream to deanonymise the hidden service IP address - which is a catastrophic failure of threat model. So, persistent hidden services simply should not be used as means to provide anonymity, and yet they are used as permanent user addresses in Cwtch... If you think I am wrong, we can debate it further, but you really should not be recommending Tor as panacea without understanding limitations of its threat model. Yet, some people do like using Tor, both to access servers via onion addresses that we provide on preset servers, and to host their own servers, either because they don't understand or because they accept the risks of hidden service deanonymisation. The nice side effect of private routing is that it allows people who don't use Tor, send messages to SMP servers available only as Tor hidden services. > As for the hoops, you know, you can just write an install script for the user to auto-configure this stuff correctly. In its current state it's definitely something an average Joe is going to do. I believe that an average Joe must not host his own server, and for people who understand what they are doing following these steps takes 10 minutes. > If this is there just to shut down criticism, maybe you should instead address the criticism, and make it metadata-private by default, without these insane hoops. Meta-data is private by default, without any hoops, and Tor is not required for it - it is absolutely optional. Tor configuration is only needed to allow users using Tor access servers, and to bridge non-Tor users to Tor servers - so it is about better network connectivity, and not about metadata privacy. > Also, your technical documentation how this stuff actually works has 404 issues Moved to "done" folder, will update. You could have guessed ;) https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/d... It's also included in protocol spec now: https://github.com/simplex-chat/simplexmq/blob/stable/protoc...
In Essays: NSA Surveillance: A Guide to Staying Secure – Schneier on Security
As per https://github.com/simplex-chat/simplexmq/blob/stable/protoc... """ SMP is initialized with an in-person or out-of-band introduction message, where Alice provides Bob with details of a server * IP address / host name [alice-land.net or similar] * port * and hash of the long-lived offline certificate* * a queue ID * Alice's E2EE public key. """ The queue ID is of interest here. The text also says """ When setting up a queue, the server will create separate sender and recipient queue IDs (provided to Alice during set-up and Bob during initial connection)." """ --- So the queue is basically a pair of port numbers generated by the server. The server gives Alice queue number pair (a11cea11ce, b0bb0bb0b0b). Alice's introduction message tells Bob that if Bob puts messages to server's port number a11cea11ce, they are sent to her. And upon
Read the rest
first connection to Alice, Bob receives from server queue number b0bb0bb0b0b, and he knows, that when he puts messages to that port, they go to Alice. Since these are used to deliver packets, they can not be used by other SimpleX users. So Simplex has created the functional equivalent of emails user46453451@simplex.com and user2646453@simplex.com for the two users, and the users can use these emails to converse. The server knows that port a11cea11ce is read by 414.414.414.414 (Alice) and if it's suddenly 414.414.414.224, or tor.tor.tor.tor exit node, it's still the same user, and it now knows that user is trying to become anonymous. If OTOH Alice registered via Tor, if she ever fails at connecting to port a11cea11ce without Tor, she must assume her queue number is permanently deanonymized. But there is queue rotation. https://github.com/simplex-chat/simplexmq/blob/56986f82c89b0...? The problem is, if Alice requests a new queue number, she is still connected via the same session and user that was already associated with the deanonymized IP-addrees. The service can just add the new queue-pair as the newest queues associated with Alice's account. Alice can not re-anonymize her account again, the server always knows it's the same user, unless Alice creates a completely new account from behind Tor and starts using new queues. This is why SimpleX should force connections through Tor, but it leaves configuration of proxies to the user. Yet it claims it's supposedly more private than the competition, like Cwtch. "But the server doesn't know who the people behind the IP-addresses are" Neither does Signal know who the people behind phone numbers or IP-addresses. But that's not the problem. The server can accumulate data, and Alice's friendly fascist government can come around asking for these logs. Suppose Bob was apprehended and his device was confiscated and the local FSB wants to know who is behind queue ID a11cea11ce. A malicious server will have accumulated Alice's accidental connection to the service without Tor, so the queue ID a11cea11ce can be correlated with Alice's IP address, and the ISP can tell which subscriber was using the IP-address at the time. Again, defaulting to Tor in clients would have prevented the temptation to aggregate user data on server-side. So reading your documentation, it's not exactly unclear why my reasoning was wrong. Please do tell me how a malicious server can't correlate IP-addresses with queues when your threat model states https://github.com/simplex-chat/simplexmq/blob/stable/protoc... """ The server can * perform the correlation of the queue used to receive messages (matching multiple queues to a single user) via either a re-used transport connection, user's IP Address, or connection timing regularities. * learn a recipient's IP address, track them through other IP addresses they use to access the same queue, and infer information (e.g. employer) based on the IP addresses, as long as Tor is not used. """ Your service doesn't seem to be adding anything ground breaking to the mix with queues. It's not using usernames, or registered accounts. Or phone numbers. It's generating queue numbers that are just random identifiers, that can be used to cross-correlate how may ciphertexts each user sent to one another, and it can bind all IP-addresses to those users. It can't be the case both the IP-address and the queue number changes at the same time, yet the service knows to which user it should deliver an incoming ciphertext. The bottom line is this. The server that always knows where to relay ciphertexts, can always eventually deanonymize the user, unless the system defaults to Tor. What is being said on the front page: >Other apps have user IDs: Signal, Matrix, Session, Briar, Jami, Cwtch, etc. SimpleX does not, not even random numbers. doesn't match the fine-print under threat model. So explain to me, why isn't a list of tuples a malicious server secretly builds over time [ (queue-number1, Tor-IP-address1), (queue-number1, Tor-IP-address2), (queue-number2, Tor-IP-address2), (queue-number3, Tor-IP-address2), (queue-number3, Deanonymized IPv4 address), (queue-number3, Tor-IP-address3), (queue-number4, Tor-IP-address3), (queue-number4, Tor-IP-address3), (queue-number4, Tor-IP-address4), (queue-number4, Tor-IP-address5), ] not a valid user ID that can be used to deanonymize Alice based on queue-number4 on Bob's confiscated device? Why is this better than Cwtch where it's just a long term onion address that was never deanonymized? Cwtch didn't require 20 page manual to setup either.
In Is Telegram really an encrypted messaging app?
Lol that article says >We believe that Tor may be the wrong solution for some users for one of the reasons: much higher latency, error rate and resource usage. Yet you provide no options for Tor, as in https://simplex.chat/docs/server.html your idea for anonymizing users is... For the user to hop through roughly 20 page document of dozens of commands to create the equivalent of personal VPN server, and amidst it, to connect anonymously to contacts' servers, you need to install... Tor https://simplex.chat/docs/server.html#tor-installation-and-c... So if you don't have any options for Tor, maybe you should just default to Tor. As for the hoops, you know, you can just write an install script for the user to auto-configure this stuff correctly. In its current state it's definitely something an average Joe is going to do. If this is there just
Read the rest
to shut down criticism, maybe you should instead address the criticism, and make it metadata-private by default, without these insane hoops. If it doesn't get to the point of anonymity by copying a one-liner that runs an install script, i.e. if it's not on par with sudo apt install simplex, it's not going to catch on. Also, your technical documentation how this stuff actually works has 404 issues https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2...
In Essays: NSA Surveillance: A Guide to Staying Secure – Schneier on Security
They really bury the detail IMO after the banner claim front and centre on the website (I guess because it's hard/awkward to explain without it sounding just like a difference in nomenclature). What makes it work afaict is the combination of: - there are still queue (inbox) IDs - key (and (just initial?) queue ID) exchange out of band https://github.com/simplex-chat/simplexmq/blob/stable/protoc... So messages are still delivered to an identifier, it's just that every user has tonnes of identifiers (per contact/group), there's no server tracking and handling their exchange, and possibly they rotate via encrypted messages once established anyway. Exchanging out of band gets you the secrecy, and having one per-chat protects you from a contact turning out bad/leaking/compromised - it's fine that they have metadata about their own chat with yo
Read the rest
u, because they have that & the plaintext anyway.
In The first messenger without user IDs
We are building a new platform for distributed Internet applications where privacy of the messages and the network matter. SimpleX Chat is our first application, a chat app built on the SimpleX platform. There is currently no messaging app other than SimpleX Chat that guarantees metadata privacy - who is talking to whom and when. SimpleX is designed to not use any permanent users identities to protect meta-data privacy. See SimpleX overview for more details: https://github.com/simplex-chat/simplexmq/blob/master/protoc... SimpleX v1 has big changes in E2E encryption (now with double-ratchet), protocol encoding (overhead in transmitted bytes is reduced from 15% to 3.7%), performance and invitation link size (no more long RSA keys in URLs, we switched to Curve448/25519 keys). See more details via the link. We really look forward to you playi
Read the rest
ng with it - you can connect to the team via /simplex command in the chat (myself or somebody else will meet you there) - you feedback and questions.
In Show HN: SimpleX Chat v1 released – the most private chat/application platform

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.