01 / Lock
Your device encrypts each message so only your contact's device can open it. Every message uses a new key (a Double Ratchet, the same idea Signal uses), so a stolen phone can't decrypt traffic captured earlier.
Altru.dev / Apps / Privacy / Open source
Experimental · Research preview
Hush Relay is an end-to-end encrypted messenger with no accounts, no phone numbers and no app store. The app is a web page that encrypts everything on your device. The server is one PHP file that only ever holds sealed envelopes, and it runs happily on an old Android phone on a charger.
Experimental: not independently audited. Hush Relay uses standard building blocks and has passed two rounds of internal adversarial review, but no outside cryptographer has reviewed it yet. Use it for everyday privacy, learning and experiments. If your safety depends on your messages, use Signal or SimpleX for now.
Think of the relay as a post office that only handles sealed, unmarked envelopes.
Your device encrypts each message so only your contact's device can open it. Every message uses a new key (a Double Ratchet, the same idea Signal uses), so a stolen phone can't decrypt traffic captured earlier.
The sealed envelope goes to a relay you choose. It sees a mailbox number and an encrypted blob: not the words, not the sender, not the exact length.
Your contact's app keeps a live connection, so messages land in about a second. Offline? Mail waits up to 14 days, then the relay deletes it once it's picked up.
Captured from the current release running on a local relay. The relay address shown is an example.
Your identity is a key created on your device. Add people by scanning a QR invite or sharing a link.
A fresh one-time key on every envelope hides who sent it, and padding hides the exact message length.
Messages arrive in about a second while the app is open, and wait safely on the relay while you're away.
Compare a number once to rule out anyone in the middle. Strangers who write first arrive as requests.
New phone? Scan a one-time code, match 12 digits, approve. The old device signs itself out.
An encrypted backup on your relay that only your six words can open. Even the relay's owner can't.
Each person can use a different relay, in a different country, and still message each other.
Vanilla JavaScript, WebCrypto and one PHP file. No build step, no npm, no framework.
You need PHP 7.4 or newer. Browsers only allow the app's encryption on https:// or localhost, so a public relay needs HTTPS.
git clone https://github.com/altrudev/Hush-Relay.git hush-relay
cd hush-relay
./scripts/serve.sh
Open http://localhost:8080 in two browsers (or one normal and one private window), create an account in each, and paste one's invite link into the other.
Install Termux from F-Droid, then pkg install php git cloudflared, clone the repo and run ./scripts/serve.sh. A named Cloudflare Tunnel gives it a stable HTTPS address without exposing your home network.
Run serve.sh as a systemd service behind Caddy, which adds HTTPS automatically. Keep the data folder outside the web root.
Upload the contents of the web/ folder to any Apache + PHP host, such as cPanel. Point HUSH_DATA outside public_html.
./scripts/publish-ipfs.sh publishes the app with your relay baked in. Use a DNSLink domain so the address stays the same across releases.
Full step-by-step guides, abuse limits and server hardening: docs/SELF-HOSTING.md. Keep the relay address stable: it's baked into every invite.
Pick a display name. The relay field is pre-filled with the one you opened the app from.
In Settings, show your invite QR or copy the link. They tap Scan, or paste the link.
Open the chat and compare the safety number in person or on a call, then tap Numbers match.
In Settings, write down the six words. They're the only thing you need to recover your account.
On the new phone choose Link from my other device. On the old one tap Scan, check the 12 digits match, approve.
Before release, a separate reviewer attacked the code with working exploits, then re-tested every fix. It found 20 issues, including a relay replay attack and an exposed-data-folder configuration. All 20 are fixed and covered by regression tests, alongside a four-browser end-to-end test.
Message content, end to end · who sent each message · past messages if a device is stolen · exact message length · the recovery backup, even from the relay's owner.
IP addresses and timing · which mailbox received mail · roughly how big each message is · whether the relay is up.
No independent audit yet · no prekeys, so a session's first messages lean on long-term keys · one active device per account · you trust whoever serves the app's files.
These are planned directions, not shipped features. Each one lands behind the same review-and-test process as the first release.
An independent cryptographic audit, prekeys so first messages get full forward secrecy, signed releases with reproducible builds, and published threat-model tests.
Sending through several relays at once with automatic failover, an optional transport over public Nostr relays, and an IPFS-mirrored app with signed release manifests.
Less metadata for relay hosts: rotating mailboxes, Tor and onion relays, optional cover traffic, and true multi-device accounts without moving keys around.
End-to-end encrypted voice and video calls over WebRTC, with the relay used only to connect people, then small private group meetings with links that expire.
Hush Relay is © 2026 Val Rukhaylo / Altru.dev and contributors, released under the GNU AGPL v3.0 or later. If you run a modified version for others, you share your changes. Bundled libraries keep their own licenses: qrcode-generator (MIT), jsQR (Apache-2.0) and the BIP39 wordlist (MIT).
Security engineers and cryptographers: reviews of the protocol are the most valuable contribution right now. Please report vulnerabilities privately through the repository's security tab.