Talk with the certainty that
nothing is ever disclosed.

An anonymous, end-to-end encrypted messenger that keeps no account, no server-side history, and no idea who you are.

Who has never dreamed of talking with the certainty that nothing will ever be disclosed?

Android installs directly. iOS is unsigned and installs by sideloading (AltStore, Sideloadly).

or view the source on GitHub

The idea

Most “private” messengers still start by asking who you are. A phone number, an email, an account. That single question is the leak. BeHide removes the question: your identity is a private key that never leaves your phone, and the only thing you ever hand out is a public key.

How it works

Three ideas carry the whole design.

1

Your identity is a key, not an account

Signing up generates a master Ed25519 key on the device. The exchange key, the storage key and the backup key all derive from it, so one key restores your whole identity, on any phone, with no server involved.

It is stored encrypted under your passphrase (scrypt + XChaCha20-Poly1305). No password hash is kept anywhere, and there is no “forgot my password”. There cannot be.

2

The encryption knows nothing about the pipe

Two phones that have never met derive the same secret without exchanging it, using X25519 ECDH. Nothing secret ever travels.

What travels is an opaque envelope, sealed with XChaCha20-Poly1305 and bound to the sender's key. WebSocket relay, direct WebRTC or carrier pigeon, it changes nothing about its security.

3

The relay is blind

A message still has to reach the other phone, so there is a small relay, deliberately as ignorant as possible. It knows which keys are connected and that an envelope went from A to B.

It does not know the content of anything, or the name you gave a contact. That is why offline notifications are generic. Calls go further: audio and video are peer-to-peer and never touch a server.

What's in the box

Everything the app carries, and nothing it shouldn't.

Messaging

End-to-end encrypted, offline delivery with an at-least-once guarantee.

Calls

Peer-to-peer audio & video over WebRTC, with encrypted signalling.

Contacts

Added by QR code or token, never by phone number.

Identity

A single private master key. It alone restores your whole identity, on any phone.

At rest

Local database encrypted with a device-specific derived key.

Backups

Manual, encrypted, identity-bound. Restore on any phone that has your key.

Read receipts

Reciprocal: turn them off and you neither send nor see them.

Blocking

Enforced silently on arrival. The sender is never told.

Honest limitations

This is an independent project, not audited by anyone. If your safety depends on it, use Signal instead. That isn't modesty, it's the correct advice. The known gaps, stated plainly:

  • No forward secrecy. Keys are static, so a leaked key makes past captured messages readable.
  • No auto-lock. An unlocked session stays unlocked until you lock it or kill the app.
  • Biometric unlock is convenience, not hardening. It guards a copy of the key in the OS keystore.
  • Metadata is visible to the relay. It cannot read messages, but sees which keys talk, and when.
  • Calls reveal your IP to the person you call. That is inherent to real peer-to-peer, by design.
  • Trust is on first contact. Compare fingerprints out loud if it matters.

Built with Expo SDK 57, React Native 0.86, TypeScript (strict). The relay is a dependency-light Node service, and it's the one serving this page.