v1.1.0 — clearnet relay, baked in
Reach the relay without Tor — zero config. 1.1 makes huddle's clearnet relay door a first-class, baked-in default (alongside the existing Tor onion), wires a self-hostable cloudflared relay into the whole flow, and lets an invite carry the relay so your contacts join with no setup.
Highlights
- Operator's clearnet relay is baked in. A new
DEFAULT_CLEARNET_URL(a cloudflaredwss://tunnel onto the same rooms + mailboxes as the onion) ships in the client, so anyone who can't reach Tor connects with zero config. It's tried only after the onion in the most-private-first fallback order, so a Tor user never touches it — it lights up only when the onion is unreachable. Override per-client with--clearnet-server,clearnet_urlinconfig.toml, or Settings → Network. - Relay-in-invite (v3 invites). Once you've set a clearnet relay, every invite you generate embeds it (Ed25519-signed into the link), so your contacts adopt the relay automatically on join — no manual config. Pre-1.0 (v2) relay-less invites stay readable.
- GUI clearnet relay parity + Settings UI. Settings → Network → "Set / edit" to paste/clear a
wss://…/wsrelay; the choice persists and biases the door order toward clearnet on next launch (set_clearnet_relay). - Run your own relay with no domain (cloudflared). New
scripts/huddle-relay.shbrings uphuddle-serveron127.0.0.1:8787and fronts it with acloudflaredquick tunnel, printing the ready-to-pastewss://<rand>.trycloudflare.com/ws. Seescripts/README.mdfor hosting + the named-tunnel path to a stable hostname.
Note on quick tunnels. A free
*.trycloudflare.comhostname rotates every timecloudflaredrestarts, so a clearnet URL embedded in an invite (or pinned in a release) can go stale — a recipient who can still use Tor falls back to the baked-in onion automatically. For a durable clearnet default, use a named cloudflared tunnel (stable hostname via a domain on Cloudflare) or a real domain withwss://.
The relay only ever moves end-to-end-encrypted ciphertext — it never holds keys or decrypts. Its SQLite DB holds only ciphertext payloads + routing metadata (room ids, fingerprints), never keys.
Install
From crates.io (Rust 1.75+):
cargo install huddle # terminal client
cargo install huddle-gui # native desktop GUI (egui/eframe)
cargo install huddle-server # relay + offline mailboxOr build from source:
git clone https://github.com/richer-richard/huddle
cd huddle
cargo build --release
./target/release/huddleFull changelog: v1.0.1...v1.1.0