Skip to content

v1.1.0 — clearnet relay, baked in

Choose a tag to compare

@richer-richard richer-richard released this 03 Jun 06:59
· 39 commits to main since this release
v1.1.0
15572d6

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 cloudflared wss:// 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_url in config.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://…/ws relay; 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.sh brings up huddle-server on 127.0.0.1:8787 and fronts it with a cloudflared quick tunnel, printing the ready-to-paste wss://<rand>.trycloudflare.com/ws. See scripts/README.md for hosting + the named-tunnel path to a stable hostname.

Note on quick tunnels. A free *.trycloudflare.com hostname rotates every time cloudflared restarts, 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 with wss://.

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 mailbox

Or build from source:

git clone https://github.com/richer-richard/huddle
cd huddle
cargo build --release
./target/release/huddle

Full changelog: v1.0.1...v1.1.0