javascript is disabled — good instinct. everything below is static; nothing is lost.
███████╗██╗ ██╗███████╗██╗ ██╗██████╗ ██████╗ ██╗
██╔════╝██║ ██║██╔════╝██║ ██║██╔══██╗██╔══██╗██║
███████╗██║ ██║███████╗██║ ██║██████╔╝██████╔╝██║
╚════██║██║ ██║╚════██║██║ ██║██╔══██╗██╔══██╗██║
███████║╚██████╔╝███████║╚██████╔╝██║ ██║██║ ██║██║
╚══════╝ ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝
"Most people don't appreciate anonymity before they lose it, and you only get to lose it once."
Decentralized, anonymous peer-to-peer messenger. Peers find each other through a Kademlia DHT and talk over Tor-style onion routes — no servers, no accounts, no phone numbers.
One self-contained binary is the interactive client, a headless bootstrap seed, or both. Your identity is a BIP39 passphrase: whoever holds it is that user, on any machine.
MIT · single binary · .NET 10 · win / mac / linux · experimental · unaudited
download — windows 10/11 · x64
⭳ susurri-setup-x64.exe
self-contained, no runtime needed. verify the signature before running — see below.
macos — build from source
# 1. install the .NET 10 SDK
brew install --cask dotnet-sdk
# 2. clone and publish a native binary (intel: osx-x64)
git clone https://github.com/MagicCactus42/susurri.git && cd susurri
dotnet publish src/Bootstrapper/Susurri.CLI/Susurri.CLI.csproj \
-c Release -r osx-arm64 --self-contained -o ./dist
# 3. run
./dist/susurri-cli
linux
# arch — PKGBUILD ships in installers/arch
git clone https://github.com/MagicCactus42/susurri.git
cd susurri/installers/arch && makepkg -si
# everyone else
dotnet publish src/Bootstrapper/Susurri.CLI/Susurri.CLI.csproj \
-c Release -r linux-x64 --self-contained -o ./dist
verify your download
$ sha256sum -c SHA256SUMS
susurri-setup-x64.exe: OK
$ gpg --keyserver keys.openpgp.org --recv-keys AE4C7B5E0906F1660ABF6B6D33030F4501C1F505
$ gpg --verify SHA256SUMS.asc SHA256SUMS
gpg: Good signature from "Susurri releases <releases@susurri.org>"
Primary key fingerprint:
AE4C 7B5E 0906 F166 0ABF 6B6D 3303 0F45 01C1 F505
! compare the fingerprint against a second channel — the repository README pins the same key. a page can lie; two independent channels rarely lie the same way.
github.com/MagicCactus42/susurri ·
RUN.md ·
KNOWN-LIMITATIONS.md ·
MIT · no telemetry