Privacy Policy

The short version: Stade has no servers, no accounts, and nothing to hand over. Everything below explains exactly why that's true — not as a promise, but as a description of how the app is built.

Last updated: August 2, 2026 · Applies to Stade for Android and Desktop · GPL-3.0 · Open Source

Who this covers

This policy explains how the official Stade app — for Android and desktop — handles data. Stade is an open-source project released under the GPL-3.0 license, not a company built around a customer-data business model. “We” below just means the people who maintain the project.

It covers your use of the Stade app itself. It doesn't cover your device's operating system, other apps, or third-party software you separately choose to run alongside it — a system VPN, a standalone Tor client, your phone's own OS-level backup service. Those make their own choices about data, outside our control and outside this policy.

There's no sign-up step, so there's no separate moment a different agreement kicks in. This policy applies from the moment you install the app, for as long as you use it.

How Stade actually works

Most privacy policies describe rules a company promises to follow when handling your data. This one is different, because there's no infrastructure of ours sitting in the path of your conversations to make promises about.

When you send a message, photo, video, or voice clip in Stade, it travels directly from your device to your contact's device. Nothing routes through a server we run, because no such server exists. The connection is:

  • End-to-end encrypted with the Double Ratchet protocol, layered on a hybrid key exchange that combines classical (X25519) and post-quantum (ML-KEM) cryptography — so the session stays secure even if only one of the two is ever broken.
  • Carried over whichever transport can reach your contact: your local network (LAN) when you're nearby, or Tor when you're not.

We do not operate any server that stores, relays, or has access to your message content, your contact list, or metadata about who you talk to and when. There is nothing on our end to breach, subpoena, or hand over — because we don't have it.

For the exact algorithms, wire protocol, and key derivation, see Cryptographic Primitives in the docs. This page is about what the architecture means for your data, not how it's built.

Where your data lives

Everything Stade knows — your messages, your contact list, your keys — is stored in exactly one place: your own device. Nothing is mirrored, synced, or backed up to any server we run, because none exists.

That has a direct consequence: deleting is real. Delete a conversation, or uninstall the app, and that data is gone — permanently, and only from your device, because your device was the only place it ever existed. We hold no copy anywhere to restore it from, and neither can anyone who compels us to try.

You can also lock the app behind a password of your own choosing. While locked, your local message database is encrypted at rest, and there is no recovery path if you forget that password — which is by design, not an oversight. A backdoor for you would be a backdoor for anyone who takes your device.

Your identity — no accounts

Stade has no sign-up, no username database, and nothing resembling a user account. The first time you open the app, it generates a cryptographic identity locally, on your device — your Stade ID. That's the only identity that exists anywhere.

We never ask for, and the app has no field for, a phone number, an email address, or any other personal information. There's no password-recovery flow, because there's no server-side account for a password to unlock. You're identified to your contacts only by a key you generated yourself, on hardware you control.

Stadium broadcast channels

A Stadium is a public channel inside Stade where one admin posts and anyone with the invite link can subscribe and read. Posts are end-to-end encrypted the same way any other message is.

The one piece of aggregate information a Stadium exposes is a live subscriber count, shown next to its name.

Beyond that count, no one can see who has subscribed to a Stadium — not other subscribers, and not even the admin who created it. There's no membership list to leak, because none is ever assembled, by anyone, anywhere.

What we do not collect

Beyond having no server to collect data on, we've also kept third parties out of the app entirely:

  • No analytics SDKs.
  • No crash reporting.
  • No push-notification service — no Firebase Cloud Messaging, no equivalent. Notifications are generated entirely on your device.
  • No advertising SDKs.
  • No bootstrap, relay, or discovery server that observes your activity — even establishing a connection happens directly between peers or through the public Tor network, not through infrastructure we run.

We do not track how you use the app. We do not build a profile of you. We have no advertising relationships and no data-broker relationships, because we have no data to advertise against or broker.

You don't have to take our word for any of this. Stade is fully open source under the GPL-3.0 license — every dependency and every line of code that ships in the app is public at github.com/Stade-App/stade. Anyone can read the source and confirm the above directly, rather than trust it.

Permissions, and why

Stade asks your device for a small number of permissions. Every one exists to make the app function, not to gather information about you.

PermissionWhy Stade asks for it
Internet, network state, Wi‑Fi state To connect directly to other Stade users — over your local network or through Tor. There's no server to “call home” to; this exists purely to reach peers.
Camera Used only when you actively open the camera inside Stade to take a photo or video to send. Never accessed in the background.
Microphone Used only while you're actively recording a voice message inside the app. Never accessed in the background.
Notifications To alert you to new messages or connections. These are generated entirely on your device — there is no push-notification server (no Firebase/FCM) involved, because that would mean a third party learning when you receive a message.
Foreground service (Android) Keeps your peer-to-peer connection alive while the app is open or running in the background, so messages can still arrive. It exists to keep a connection socket alive — not to collect data in the background.
Boot-completed receiver (Android) Stade doesn't use push notifications to wake the app when a message arrives, so this is used only to remind you to reopen Stade after your device restarts — otherwise you might not notice the app isn't running and connected.

Foreground service and boot-completed receiver are Android-specific concepts; desktop builds don't use Android's permission model, but follow the same principle — access exists to run the app you opened, not to observe anything in the background.

Tor

Stade includes Tor as a built-in transport, alongside your local network — both are on by default, and either can be turned off individually in settings.

Routing a connection through Tor hides your IP address from the person you're talking to and from anyone observing the network. Each device runs as a Tor hidden (onion) service, so a Stade connection stays inside the Tor network end to end, rather than exiting onto the open internet at any point. We bundle Tor directly into the app, so you don't need to separately install or trust a third-party app like Orbot to use it.

Tor itself is a volunteer-operated network we don't run and don't control. Its performance — connection speed, time to establish a new session — depends on the state of that network, and like any anonymity network it has known limitations, documented by the Tor Project itself rather than by us.

What this doesn't protect against

Being direct about what Stade's architecture guarantees also means being direct about what it can't:

  • A device that's lost, stolen, or seized while unlocked — or with no app password set — can be read by whoever holds it. Encryption protects data in transit and at rest; it can't protect an already-unlocked screen.
  • Trusting a contact's identity at first contact is only as strong as your verification. If you skip comparing safety numbers, an attacker positioned at that first exchange is a theoretical risk — verifying a contact closes that gap.
  • Malware already running on your device can read anything the app can. No app-layer encryption defends against a compromised operating system.
  • Tor hides who you're talking to from the network; it doesn't hide the fact that you're running Tor from your own internet provider, and it's only as fast and reliable as the volunteer network behind it.

Children's privacy

Stade does not knowingly collect personal information from anyone — adult or minor — because it doesn't collect personal information at all, and has no account system through which age could be asked or verified in the first place. The app isn't designed or marketed for young children; if you're a parent, the judgment call is the same one you'd make for any communications tool.

Changes to this policy

If this policy changes, we'll update the “Last updated” date at the top and post the change here. That's not a formality — it's genuinely the only channel we have, since we don't collect an email address or phone number to notify you through. Material changes will also be called out in the project's release notes on GitHub, alongside the version they ship with, so they're visible through the same place you'd already look to see what's new in a release. We won't apply a material change retroactively without saying so plainly.

Your rights

Regulations like the GDPR (EU/UK) and the CCPA (California) give you rights over personal data — to access it, correct it, delete it, or take it with you. Those rights exist to give you leverage over data someone else holds about you.

In Stade's case, there's no gap for those rights to close: your messages, contacts, and keys are already stored exclusively on your own device, under your own control, in a form only you can decrypt.

  • Access — open the app. Everything is already there, in full, in real time; there's no separate copy to request from us.
  • Deletion / erasure — delete a conversation, or uninstall the app. It's immediate, permanent, and already exactly what “erasure” means under these laws.
  • Correction — edit within the app, or delete and resend. There's no external record of the old version anywhere for us to correct.
  • Portability — there's no dedicated “export” button today, but there doesn't need to be one for you to have your data: it already lives in a local database file under your control, and nothing stops you from copying or backing it up yourself with your device's own tools.
  • Objection to sale or sharing — we don't sell or share personal information. There is none in our possession to sell.

If you're in the EU/UK or California and have a question about any of this, see Contact below — though as a practical matter, we're not in a position to act on data we never receive. That absence is the entire design intent, not a loophole.

Contact

Stade is an open-source project developed on GitHub. For privacy questions, the most reliable way to reach the people building it is to open a discussion or issue at github.com/Stade-App/stade — the same place used for bug reports and everything else about the project.