How Haven works

The simple version first.
The deep version one click down.

You don't need to know what "encryption" means to trust Haven — so we'll explain it like we're talking to a friend. Each idea below starts plain and warm. If you're curious how it actually works, open the The technical bit under it and go as deep as you like.

Haven is a tiny, private social app for the handful of people you actually love. Everything you post, say, and share is locked on your own phone before it leaves, and only your people hold the key to open it. There's no company server in the middle holding your life — not even us. That one fact is the whole story; the rest of this page is just the "how."

Only your people can see it

Locked on your phone. Opened only by your circle.

Think of every photo or message as a note you seal in a box before it leaves your hands. Only the people you invited own a key that fits. Anyone in between — your internet provider, a helper server, us — just sees a sealed box they can't open. Haven is even built to stay locked against tomorrow's computers, not just today's.

The technical bit

Haven uses hybrid post-quantum cryptography everywhere. Keys are agreed with X25519 + ML-KEM-768 (FIPS 203), everything is signed with Ed25519 + ML-DSA-65, content is sealed with AES-256-GCM, and keys are derived with HKDF-SHA256. "Hybrid" means an attacker has to break both the classical and the quantum-resistant half — so Haven is never weaker than today's best, and it resists "harvest-now, decrypt-later" capture.

Each circle has an epoch key distributed to its current members through that hybrid key exchange; every post is sealed under a key derived from it. Removing or blocking a member rotates the epoch and re-seals the new key to only the people who remain — so a removed member can't decrypt anything posted afterward. That's a math guarantee, not a server rule.

Full detail: GROUP-KEYING.md ↗

Truly every platform

One app, on the device you already carry.

Your family doesn't all use the same phone — and they don't have to. Haven is on iPhone, iPad and Mac, on Android, and on Windows and Linux, and it's the same Haven everywhere. Whichever screen you pick up, your circle looks and feels the same, and it's exactly as private.

Haven running on a Windows laptop — the circle feed in the desktop app
Windows
Haven running on iPhone — the circle feed
iPhone & iPad
Haven running on an Android phone — the circle feed
Android
Haven running on a Linux laptop — the circle feed in the desktop app
Linux
The technical bit

At Haven's heart is a single piece of trusted code — a Rust core (p2pcore) that handles your identity, the encryption, your circles, and the social engine (posts, stories, messages, reactions). Every app on every platform runs the same core, so your security never depends on which device you're holding.

Only the look-and-feel on top is native to each platform: SwiftUI on Apple and Jetpack Compose on Android reach the core through UniFFI; the Windows/Linux app (Tauri) links the Rust core directly, so it's a real network peer too, not a thin web page. Every client is a genuine peer on the network.

Full detail: ARCHITECTURE.md ↗. See exactly what's shipped where under availability below.

How your stuff gets there

Haven quietly picks the best road every time.

When you share something, Haven tries to hand it over the closest, most direct way it can. Are your people right next to you? It'll pass it phone-to-phone over Bluetooth or Wi-Fi — no internet needed at all. Otherwise it connects your devices directly. Only if neither works does it leave a sealed copy in a relay mailbox to wait for them. You never think about any of this; it just happens.

The technical bit

A path-selector walks a ladder: nearby (MultipeerConnectivity on Apple, Nearby Connections on Android — Bluetooth + local Wi-Fi) → direct (iroh QUIC with NAT hole-punching) → relay (only if nothing local reaches them). Above the transport, everything is opaque encrypted bytes — the transport is interchangeable and completely blind to content.

Finding a friend's current address uses signed records keyed by their public key, so a link to someone is permanent with no central directory to maintain. A link carries your account key, but devices are what actually get dialled, so each account also publishes its own device list in that same signed-record space — which is what lets two people who share no relay still find each other and hole-punch directly.

The relay, honestly

A mailbox that physically can't read your mail.

Sometimes a friend is offline when you post. A relay is just a helper that holds the sealed envelope until they're back — a mailbox, not a reader. It only ever sees locked boxes, never what's inside, and it now only serves people who are actually in your circle. Anyone can run one (you, a friend, a $35 Raspberry Pi), and there's no company operating it.

The technical bit — and the honest limit

A relay stores and forwards only ciphertext. It cannot read content, contacts, keys, or notification text. As of the 2026-07 hardening it also enforces per-circle membership authorization: reading, writing and listing a circle's mailbox is served only to that circle's members, so a stranger who merely learns the relay's id can't fetch or enumerate a thing.

The honest limit — your IP address. To move your bytes, a relay briefly handles your IP, and it authenticates each peer by its node id (which is your public key) to enforce that membership check — so it does see IP ↔ node id in memory while it works. Haven's hardened defaults mean this is never logged and never persisted, and there's no account, name, or email in the system to tie it to. But it isn't invisible: a peer or a relay operator can see your IP. If that matters to you, run Haven behind a VPN or host your own relay. A built-in Tor/onion mode was evaluated and declined — Tor can't carry the UDP traffic Haven's calls and direct connections need.

Full detail: threat model and RELAY-AND-DEPLOY.md ↗

The relay's front door

One public address that answers for everything.

A relay you host can publish one HTTPS address — its front door — that answers for everything it does: media pickup, the connection fabric (DERP) that helps devices find each other, and call forwarding. In the app, set just the media address and leave the DERP field empty — Haven routes both through the same tunnel. A separate DERP address is only for deliberately hosting it on its own hostname.

The technical bit

The in-app Mac relay runs a path router on 127.0.0.1:8675 that fronts the media store (:8674) and the DERP fabric (:3340) behind one origin, so a single tunnel — free trycloudflare, a custom Cloudflare domain, or any proxy you run — serves them all. A dedicated DERP URL is only for dual-hostname setups without the path router, e.g. https://derp.example.com → http://127.0.0.1:3340.

Full detail: CLOUDFLARE-TUNNEL.md ↗

Your photos keep their mouth shut

No hidden location tags. No swapped pictures.

Photos and videos quietly carry hidden data — where they were taken, on what device. Before anything leaves your phone, Haven strips that out, so a shared beach photo doesn't hand over your home address. And every file is fingerprinted, so a relay can't secretly swap one picture for another without your app noticing.

The technical bit

GPS/EXIF location and identifying maker tags are stripped by default on capture, for photos and video (the video strip shipped 2026-07-15). Media is content-addressed with BLAKE3 and split into sealed chunks; because the address is the hash of the content, a relay swapping a blob is detected on verify. The camera pipeline calls no third-party SDK and logs nothing.

Full detail: MEDIA-AND-MUSIC.md ↗

Calls no one can tap

Voice, video and screen share — sealed the whole way.

When you call your circle, the audio and video are locked between you and them, even if a relay is helping the two of you connect. A relay can move the call along, but it can't listen in and it can't quietly slip itself into the middle.

The technical bit

Calls use WebRTC (DTLS-SRTP) for real-time audio/video and screen share. The call setup is sealed and signed end-to-end, so a forwarding relay can neither eavesdrop on a frame nor MITM the handshake. When two peers can't connect directly, a stateless connection relay forwards the encrypted stream without ever decrypting it.

Many devices, one you

Your phone, iPad and Mac — all the same you.

Post from your phone and it's there on your iPad. Your circles, profile and conversations line up across the devices you own, and your friends never notice which one you're on — you're just you. You can move your identity to a new device with a quick transfer code or QR, never through a server.

The technical bit — including what revoking a device does and doesn't do

Each device is authorized by a credential your long-term identity key signs into a device list, so adding or removing a device never changes who you are to your contacts. Your own devices self-sync additively, so a freshly-restored or empty device can never wipe content that exists elsewhere.

Be precise about revoking a device. Today a linked device holds a copy of your account seed, and revoking marks it revoked but doesn't invalidate the seed it already has. So revocation is a strong deterrent against a lost or stolen phone (its keychain intact, seed not extracted) — but it is not yet a cryptographic guarantee against a fully compromised one. The re-key that makes revocation cryptographic ("seed-drop") is designed and planned for release 1.0.7 — not yet shipped. Until then, the sure remedy against a genuinely compromised device is rolling a new identity.

Full detail: MULTI-DEVICE.md ↗

The honest limits, in one place: a relay or a peer can see your IP address while it moves your bytes (never logged, but use a VPN if that matters). Historically, revoking a device defeated a lost or stolen phone but only deterred a fully compromised one; the seed-drop re-key that closes that gap is enabled in 1.0.7 and stages per circle as everyone updates. Per-message forward secrecy and post-compromise security come from Haven's MLS-style group layer, which is enabled in 1.0.7 for circles with a verified owner — the ones you make from 1.0.7 on. Circles you already have have no owner, and one can't be added after the fact in a way other members could trust, so they don't switch over by themselves: they keep the encryption they already have, which still cuts off someone you remove. Their creator can offer an upgrade for each member to follow. Even on an owned circle it turns on only once everyone's devices have updated and joined — its audit so far is internal, with an independent cryptographer's review planned. We'd rather tell you than let you assume. The full, unflinching version is the threat model ↗.
Where it runs today

On the shelf now, and honestly labelled.

We won't point you at a store page that 404s or hand you a "tarball" and call it a release. Here's exactly where each platform stands right now.

  • iPhone, iPad & Mac — live on the App Store, free.
  • Android — a real, signed app, now live on Google Play, also free. It is no longer downloaded from GitHub.
  • Windows — a real installer (x64 & Arm64), now live on the Microsoft Store. It is no longer downloaded from GitHub.
  • Linux — real installers (.deb/.rpm/AppImage/Flatpak) on GitHub Releases, a free download. Not on Flathub or the AUR yet.
  • Headless relay — a tiny haven-relay binary for a Pi or server, also from GitHub Releases.
Plain-language glossary

A few words, demystified.

  • End-to-end encrypted — locked on your device and only unlockable by the people you're sharing with. No one in the middle has a key.
  • Peer-to-peer — your devices talk directly to each other instead of through a company's servers.
  • Post-quantum — extra-future-proof encryption that even a future quantum computer can't crack, defending against "save it now, decrypt it later" attacks.
  • Relay — an optional always-on helper that holds your circle's encrypted messages for offline friends and forwards calls. It can never read your content.
  • Circle — one of your private groups. Everything in a circle is sealed to exactly the people in it.
  • Seed / key — the secret that proves you're you and unlocks your content. It lives only on your devices, wrapped by the hardware Secure Enclave.
Want to go all the way in?

The full technical library.

Every claim on this site traces back to one of these. Read as deep as you like.

🛡️ Threat model

Who Haven protects, against whom, and the honest non-goals — the real story on IP addresses, post-quantum encryption, abuse resistance, and lost- vs. compromised-device protection.

🔐 Security model

The complete cryptography write-up: the hybrid post-quantum algorithms, group keying, what a relay can and can't do, and the deterrents that aren't guarantees.

🔑 Group keying

How each circle's epoch key is distributed, why removing a member cryptographically cuts them off, and where forward secrecy begins and ends.

🛰️ Relays & deployment

The two relay roles (switchboard and mailbox), the zero-operator-cost storage model, the IP-privacy story, and the one-command deployment tool.

🗄️ Bring your own storage

An S3-compatible bucket or a relay you run — with no secrets we host. How the app signs into your storage without ever holding a provider credential.

🎞️ Media & music

The in-app camera, film filters, Apple Music on posts (references only, never audio), the EXIF/GPS strip, and the music ↔ video crossfade — each with its security audit.

🔗 Multi-device

One identity across the devices you own — linking, receiving everywhere, and the honest state of device revocation (effective for a lost device; seed-drop finalizes it in 1.0.7).

🔔 Notifications

Why reliable push needs some server, and how Haven keeps it zero-knowledge: a blind relay that forwards an encrypted blob your device decrypts on its own.

🔗 The link & QR system

Why your public key is your permanent address, how a reach-me link works with no backend, and why every connection is approved, never automatic.

💸 Operating costs

Why Haven is free with no subscription and no monthly operator cost, ever — and the honest trade-offs that make that possible.

🤖 Android parity

How each feature reaches Android by sharing the same Rust core — what's full-parity, what's redesigned (and healthier for it), and what's parked.

🪟 Windows

The Tauri desktop app that links the Rust core directly, the same binary that runs headless as a relay, and where the Windows build honestly still stands.

🐧 Linux

First-class desktop app and relay daemon across Ubuntu, Debian, Raspbian and SteamOS — packages, services, and a Raspberry Pi relay path.

🗺️ Roadmap

What's done, what's in progress, and what's next — checked against the code, with anything unverified marked as such rather than asserted.

Want the whole thing at once? Browse the full docs folder on GitHub ↗, or read the source for the relay tooling in relay/ ↗.