← Back

Privacy Policy

This page describes the data WhisperX processes, who can see it, and how long it lives. It is written to match the actual code, not to reassure. If a section below contradicts what the app does, the app is the authority — please report it as a bug.

1. The short version

2. What is encrypted end‑to‑end

Everything you send to a contact is encrypted on your device before it leaves: text, photos, videos, voice notes, files, link metadata, forward labels, replies, reactions, typing indicators, read receipts, wallet address broadcasts, profile names and avatars. The cryptographic primitives are:

Calls add WebRTC FrameCryptor on top of DTLS so each audio/video frame is independently encrypted with a key your peer derives via ML‑KEM. The TURN relay (when used) sees encrypted frames only.

3. What the server stores

3.1 Account row

When you create a WhisperX identity the server stores:

3.2 Queued messages

When a peer is offline, their incoming ciphertext is held in a messages table until your device picks it up over WebSocket or HTTP. The row contains: an envelope (the encrypted blob), a sender hint (HMAC, see §4), a recipient ID, a timestamp, and the optional self‑destruct timer. As soon as your device acks delivery the row is deleted; a periodic sweeper also drops delivered rows after one minute as a backstop.

3.3 Shared media (photos, videos, files, voice notes)

Attachments are encrypted on your device with a per‑file AES‑256 key that travels inside the encrypted message. The ciphertext is uploaded to the server and lives at most 7 days, after which a cleanup job hard‑deletes it whether or not your peer downloaded it. If the recipient clears their cache or reinstalls within that window they can re‑download. There is no backup beyond that window — privacy beats retention.

3.4 Delivery tokens

For sealed‑sender mode, each pair of contacts exchanges a one‑way delivery token derived from your shared ratchet. The server sees the token hash but cannot link it to a sender identity. Tokens are revoked when you block a contact.

3.5 What the server does not store

4. Sealed sender

For ratchet‑established conversations the server does not see who sent each message. The sender computes an HMAC of (their identity, your delivery token) — the sender hint — and submits it alongside the ciphertext. Only your device, holding the matching token, can resolve which contact the hint corresponds to. Sender hints are checked using a constant‑time decoded‑byte comparison so we cannot accidentally regress that property to a case‑sensitive string match.

5. Push notifications (FCM)

Android push delivery uses Firebase Cloud Messaging because that is what the Android system enforces for waking sleeping apps. The push payload we send contains only:

No content, no contact name, no preview ever travels through Google's infrastructure. If you uninstall WhisperX, the push token is deleted from the server the next time we attempt to deliver to it (FCM returns UNREGISTERED).

6. Calls

Voice and video calls use WebRTC. Signalling (offer/answer/ICE candidates) goes through the WhisperX server in encrypted control messages over the same ratchet that messaging uses. Media flows directly between you and your peer when NAT permits; otherwise it falls back to a TURN relay we operate. The TURN relay sees encrypted media frames only — it cannot decrypt audio or video.

7. Wallet

WhisperX includes an optional non‑custodial wallet. Private keys are generated and stored on your device only. Your wallet address is not sent to the server — it is broadcast to your contacts through the encrypted ratchet, the same way any other message travels. See the Wallet Disclosure.

8. Crash reporting

Crash reports are sent through Firebase Crashlytics only when you explicitly opt in (Settings → Privacy → Crash reporting). Reports contain stack traces and device model — no message content, no contact identifiers, no chat metadata.

9. Children

WhisperX is not directed at children under 13. We do not knowingly collect data from children. If you believe a child has used the service, contact us and we will delete the account.

10. Data subject rights

You can exercise the following rights at any time without contacting us:

For requests that require human handling, email [email protected].

11. Jurisdiction

WhisperX is operated from the European Union. Server infrastructure is hosted in the EU. Lithuanian law applies to this policy.

12. Changes

Material changes to this policy will be announced inside the app on next launch. The Last updated date at the top reflects the most recent change.