Skip to content

Wisp

Private messaging with no accounts, no phone numbers, and no server that can read you. Your identity is a key you hold — nothing to sign up for, nothing to trust.

Most messengers ask for a phone number, route every message through their servers, and keep a record of who talks to whom. Wisp does none of that. There is no account, no directory, and no server that holds your messages or your contacts. Two people exchange end-to-end encrypted messages directly — and when a direct path isn’t possible, through infrastructure that only ever sees opaque, unlinkable blobs.

No accounts

Your identity is an Ed25519 keypair, backed up by a 12-word phrase. There’s nothing to register, no phone number, no email — and nothing for anyone to seize or hand over.

End-to-end encrypted

Every message runs through a Noise handshake and a Double Ratchet — the same construction Signal uses — with forward secrecy and post-compromise recovery.

No trusted server

Relays and DHT nodes are treated as adversarial. They carry padded ciphertext at rotating, unguessable addresses and learn nothing about who you are or who you talk to.

Works when you're offline

Messages for an offline peer are left in rotating, encrypted dead-drops and picked up later — delivery survives a device being switched off.

Verifiable identities

A safety number derived from both keys lets two people confirm, out of band, that no one is impersonating them.

Open and swappable

Any relay will do, and clients route around one that’s blocked or gone. The protocol and clients are open — read the spec, run your own relay.

Wisp always takes the cheapest path that works, and the relay drops out of the path whenever it isn’t needed:

  1. Direct — both peers online: connect (hole-punching where possible) and stream the message over an encrypted session. Nothing is stored anywhere.
  2. Relayed live — both online but NAT blocks a direct path: the same encrypted session runs through a relay that only sees ciphertext.
  3. Dead-drop — the recipient is offline: leave a padded, encrypted blob at a rotating address for them to collect later.