Privacy Policy: Parley
Parley is a chat and voice app for talking across languages, with on-device translation. It works in two ways: Online (over the internet through a relay server) and Mesh (directly between nearby phones with Bluetooth / Wi-Fi, no internet). This page says what the app does with your data. We do not sell data, we show no ads, and the app contains no advertising or analytics SDKs.
1. What the app processes
| Data | Why | Where it goes |
|---|---|---|
| Your voice (microphone, only while you hold the talk button) | To transmit what you say to the other people in the room | Online: your talk is cut into short pieces (0.4 seconds of voice each) that go through Google Firebase to the people in the room, who hear it while you still hold the button, about a second or two late. The pieces are kept for 5 minutes so that the talk can be played again from the chat as a voice message, and are then deleted (at once if you delete the voice message, or when the room is deleted). In private rooms the pieces are encrypted on your phone with a key derived from the room passphrase (AES-256-GCM) before they are sent; in public rooms they are not encrypted end-to-end, so we and Google can technically hear them. A voice message in the chat holds no sound itself, only the number of the talk and its length. Mesh: sent directly to nearby phones in the same room; never leaves those phones. |
| Chat messages | Room text chat, replies, emoji reactions under messages and, in private rooms, messages that vanish after a time the sender chooses (his phone then removes the message from the database too) | Online: a message goes to Google Firebase (Realtime Database), which we use to deliver it to the people in the room. Firebase keeps it temporarily: up to 24 hours in a public room and about 1 minute in a private room; it is deleted at once when its author deletes it, and when the room is deleted. It is stored together with the author's identifier, display name and the time. In private rooms the text is encrypted on your phone with a key derived from the room passphrase (AES-256-GCM) before it is sent, so Firebase handles encrypted data only. In public rooms the text is not end-to-end encrypted (as in any open room): we and Google can technically read it, and a person who enters the room within those 24 hours can scroll back and read it. Mesh: sent directly to nearby phones; never leaves them. Your phone keeps what it received only in the app's memory (never saved to its storage): it stays while you step out to the main screen and come back, and disappears when the app is closed. |
| Who is in a room (presence) | To show the list of people in the room, and to count the people in rooms (a public room holds 100 people, a private room 10, and the service as a whole a limited number) | Your display name and the time you entered, in Google Firebase, only while you are connected to the room. It is removed when you leave, lose the connection or close the app. The total number of people in online rooms is shown in the app. |
| Online counter ("In the app") | To show how many people have the app open now | While the app is open and online, your phone tells our server (Upstash) once a minute that it is here. The server keeps the random identifier of your session and the time for about 2 minutes and shows only the number. No name, no room and no location is kept for this. |
| Chat sign-in (Firebase Authentication) | To let you into the chat of one room and to stop others from writing in your name | Our server gives your phone a short-lived sign-in token for that one room; Google Firebase Authentication records your identifier (your wallet address or guest ID, with the prefix "user_") and the time of sign-in. The identifier stays in Firebase Authentication until it is deleted (see section 5). |
| Wallet public address (if you sign in with a Solana wallet) | To give you a persistent identity and a callsign, and to prove you own the rooms you create | Sent to our server to verify a signed login message. We never see your private key or seed phrase; the wallet app signs on your phone. You can also use the app as a guest without a wallet. |
| Callsign / display name, guest ID | To show who is in the room and who is speaking | Visible to people in the same room; the chosen name and its owner are stored on our server so that names are unique. The name of the app (and spellings that imitate it) is reserved: our server refuses it as a display name or a room name to everybody except the owner of the app, who is recognized by the public Solana address shown in the app for donations; in chats his name and the mark "owner" are shown in another colour. The owner has no extra right to enter a private room: it needs its name and passphrase for him too. If you do not choose a name, your callsign is "Seeker-" plus the last 4 characters of your wallet address (or of your guest ID). |
| Room names and room settings (public/private, creator ID, a passphrase verifier) | To list and protect rooms | Stored on our server (Upstash) while the room exists; Google Firebase also holds a small record of the room (public or private, how long its messages live) and of people the owner removed from it (their identifier and the end of the removal, 24 hours) until the room is deleted. The passphrase itself is never sent or stored; only a derived verifier is. |
| Wallet address of the creator of a public room | So that the creator can manage and delete the room | Stored as the room's owner on our server and included in the public room list that the app downloads, so other users' apps can see it while the room exists. |
| Callsign and room identifier in Mesh mode | So that nearby phones can find the room and show who is in it | Broadcast over Bluetooth / Wi-Fi to phones within range that run this app (the room name is sent as a hash; a private room is also protected by its passphrase). Nothing is sent to our servers in Mesh mode. |
| Server request logs | Operating and securing the service | Our hosting provider (Vercel) records basic request details (time, address, IP) in its logs for a limited period; we use them only to find faults and abuse. |
| Network address (IP) and request counters | Abuse protection: limits on how many rooms can be joined or created per hour and on wrong passphrase attempts (five wrong attempts lock that address out of that room, for 10 minutes the first time and for 24 hours after that) | Kept temporarily in our server's rate-limit store and then deleted: counters for hours up to one day, the number of lockouts up to 30 days. |
| Friends: two key pairs made on your phone (one to lock messages, one to sign your friend link), a random inbox address, the push token of your phone | To add friends and to deliver their invitations and friend requests to you as pop-up notifications | Your keys and your list of friends stay on your phone (encrypted storage). Our server stores only a random inbox address, a hash of its secret and the push token of your phone, issued by Google Firebase Cloud Messaging; it stores no name, no friend list and no messages. A friend's card (name, public key, inbox address) travels only in the QR code or link that you share yourself. An invitation or a friend request is locked on the sender's phone so that only the friend it is for can read it; our server and Google pass the locked message on without keeping it (the push service holds an undelivered message for up to 6 hours, and the app ignores invitations older than that). |
| Session token | To keep you signed in | Stored on your phone in encrypted storage and on our server (linked to your wallet address or guest ID) until it expires or you sign out. |
2. Permissions and why they are needed
- Microphone: to transmit your voice while you hold the talk button, and in Tourist mode to write down a phrase you say while you hold the talk button there (see 2c).
- Camera (only when you tap the camera button in Tourist mode or "Scan QR"): to read text on signs and menus, or to read a friend's QR code or a QR invitation to a private room. The picture is processed live on your phone; it is not recorded, saved or sent anywhere.
- Nearby devices / Bluetooth / Wi-Fi state and change: to find and connect to nearby phones in Mesh mode (Google Nearby Connections).
- Location: the app does not request the location permission and does not read, store or send your location. Mesh mode finds nearby phones with the "Nearby devices" permission of Android 13 and newer (Bluetooth and Wi-Fi), which is marked as never used to find your location.
- Notifications: to show the "room is active" notice while a room is open with the screen off, to tell you if you were disconnected for inactivity, and to show a friend's invitation or friend request as a pop-up (you can switch the invitation sound off in the Profile).
- Foreground service (microphone, connected device) and wake lock: to keep the room connection alive, so that messages and talks keep coming, when the screen is off.
- Internet: for Online mode and wallet sign-in.
2a. What is stored on your phone
Your settings (interface language, translation choice, Mesh link mode, display name), the list of blocked callsigns, the timers of a chat block (if you sent too many messages in a room, the app stops you from writing in that room for a while; this stays on your phone only), favourite rooms, a guest ID and session token, and the keys of this phone for friend invitations, your list of friends and friend requests, in the phone's encrypted storage. Nothing else is saved: chat history stays in memory only. Uninstalling the app or clearing its data removes all of it.
2b. How rooms are protected
- Private rooms (online and Mesh): voice and text are end-to-end encrypted with the room passphrase (AES-256-GCM with a key derived from the passphrase, on your phone, before anything is sent). Only people who know the passphrase can read or hear them; our server and Firebase handle only encrypted data (Firebase keeps the text for about 1 minute and the voice for 5 minutes, in encrypted form). Room names, display names and the fact that you are in a room remain visible to the server.
- Public rooms (online and Mesh): open to everyone who joins. The connection to the servers is protected in transit, but the content is not end-to-end encrypted, so the server and Google Firebase can technically see it. The text of a public room is kept by Firebase for up to 24 hours, so a person who enters the room can read what was written during that time, and the voice for 5 minutes, so that it can be played again.
- On your phone only: translation and the camera in Tourist mode. Dictation is performed by your phone's speech service (Google).
2c. Voice dictation, blocking and sharing
- Dictation (optional): the microphone button next to the message field uses your phone's own speech recognition (provided by Google; on supported phones and languages it runs on the phone itself and works offline once the language pack is installed, otherwise Google's online service is used). Parley does not receive or store the audio; the recognised text appears in the field, you can edit it, and it is sent only when you press send.
- Tourist mode, talk button: the phrase you say while you hold the button is recorded in the memory of the phone, written down by the same recognizer that is part of the app (no internet, nothing is sent anywhere), translated on the phone and then thrown away: the sound is not saved.
- Words under voice messages: the phone of the person who talks writes down what was said, with a speech recognizer that is part of the app (the model is inside the app, so it needs no download, no speech pack and no internet, and works on any Android version and for many languages). The words are sent inside the voice message and kept together with it for 5 minutes (locked with the room passphrase in a private room); the phone of every reader translates them into the reader's language, on the phone. If the phone of the speaker did not have the words ready in time, the phone of a listener may write them from the sound it received: this happens on that phone only, the words are shown to that listener alone and are not sent to anybody. In Mesh the phone of a listener writes the words of what it hears the same way, on that phone only. The voice never leaves the phone for this and is never given to an online service; Parley does not receive or store the audio. The switch "Subtitles for my voice" turns the feature off.
- Translator: the Translator screen translates the phrases you type or dictate on your phone (the same on-device translation as in chat). Nothing you enter there is sent to Parley or stored outside your phone; it is kept only until you close the app.
- Friends and invitations: a friend's card (QR code or link) holds a name, a public key, a random inbox address and a random share code that your phone made for the links it shares. A link made by the current version is also signed by your phone (the signing key stays on your phone; the link carries only its public part, the signature, the time the link was made and a random number), so that a link changed on its way is refused as damaged (a link without a signature is refused too); such a link stops working after 10 minutes (the app makes a new one by itself). It is not secret, but share it only with people you want as friends. A person who opens your link or scans your code is not added: your card appears in their Profile > Friends as a request that stays until they accept or decline it; if they accept, their card goes back to you through the push service, locked for you alone, together with the share code, so that your phone recognizes the answer to your own link and adds them at once (an answer without the code, for example from an older version of the app, is taken the same way for 48 hours after you pressed "Share link"). Nothing is sent to anybody when a request is only received. "Call" sends a private-room invitation (the room name and its passphrase) locked for that one friend; an invitation is accepted only from a friend you added, and anyone else's message is ignored. You can remove a friend at any time.
- Voice effects (optional, chosen in the app): the effect changes your voice on your phone, before it is sent; the changed voice is what the room hears. The words under the voice message are written on your phone from your voice before the effect. No new data is collected and nothing extra leaves your phone.
- Reading the translation aloud (optional, off by default; a button on a voice message or a switch in the Profile): the translated words of somebody's voice message are read aloud by the speech engine of your phone, using only a voice that works without the network. The text is not sent anywhere by Parley, and no new data is collected.
- Adding a friend from a room: next to a name in the list of people of an online room there is "Add friend". It sends your friend card (name, public key, random inbox address) as a service message of the room addressed to that one person (never shown as a chat line). In a private room the message is locked with the room passphrase like any text, in a public room it is visible to the people in the room, like any message there, for up to 24 hours. In both kinds of room it is only a request: nobody is added until the other person accepts it in Profile > Friends (or taps "Add friend" next to your name too). If accepted, the other person's card goes back to you through the push service, locked for you alone.
- Invitations: a private-room invitation (QR code or link) contains the room name and its passphrase. The passphrase is in the part of the link after "#", which browsers do not send to the website that hosts the link page, and the page only hands it to the app. Share an invitation only with people you want in the room, the same as you would share the passphrase itself.
- Blocking: blocked callsigns are saved only on your phone. A blocked person's messages are hidden and their voice is not played.
- Reporting: "Report" opens your e-mail app with the room, callsign and message filled in; nothing is sent unless you send it.
- Sharing a room: opens your phone's share sheet with the room name (and, for a private room, its passphrase); you choose the app and the person.
3. Chat translation
If you turn on chat translation, texts are translated on your phone with Google ML Kit. Message text is not sent anywhere for translation. Google downloads the language models to your phone once.
4. Third parties
- Google Firebase Realtime Database and Firebase Authentication (the text and the voice of online rooms, who is in a room, and sign-in identifiers; the database is located in Belgium, europe-west1): privacy information.
- Vercel and Upstash (our API server and temporary rate-limit store).
- Google Firebase Cloud Messaging (delivers pop-up notifications for friend invitations and requests). Of Firebase the app uses only messaging, the chat database and sign-in: no Firebase analytics, no crash reporting, no ads.
- Google (Play services Nearby Connections for Mesh mode, and ML Kit language models for on-device translation, downloaded from Google servers).
- Your Solana wallet app, if you sign in with a wallet.
- Donations: the app does not process payments and never touches your keys. The "Donate" button lets you choose SOL, USDC or USDT and an amount, and then opens your own wallet app with a prepared payment request (a Solana Pay link) to our public Solana address; you check it and confirm it in your wallet, or cancel. If no wallet app is installed, the app only copies that public address to your clipboard. The transaction is made and recorded on the Solana blockchain by your wallet, outside our servers.
5. Retention and your choices
- The voice of online rooms (the pieces of a talk and the voice message in the chat) is kept by Google Firebase for 5 minutes in every kind of room, and is deleted at once when its author deletes the voice message or when the room is deleted. Old pieces are removed by the app on the phones that are in the room and by our server whenever it is in use, so removal can take a little longer. Mesh voice is never stored.
- Chat messages of online rooms are kept by Google Firebase for up to 24 hours in a public room and about 1 minute in a private room, and are deleted at once when their author deletes them or when the room is deleted. Old messages are removed by the app on the phones that are in the room and by our server whenever it is in use, so removal can take a little longer than these times (for example, when nobody is using the service at all). There is no queue beyond these times: in a private room a message that nobody received within about a minute is gone and is never delivered later; in a public room a person who comes in within the 24 hours can read what was written. What your phone received stays in the app's memory only and is gone when the app is closed.
- The words under a voice message and the service message of "Add friend" are kept like the messages around them: the words 5 minutes (as the voice message), the friend ask as the text of the room (up to 24 hours in a public room, about 1 minute in a private one).
- Your presence entry (name and time) is removed when you leave the room, lose the connection or close the app.
- Room data is removed when the room is deleted or expires: a public room made by a user closes after 24 hours without anybody in it (3 hours if nobody except its creator ever joined), a private room after 10 minutes with one person or nobody; the messages Firebase still holds for the room are deleted at that moment. This is checked whenever somebody loads the list of rooms, so closing can take a little longer than these times. The five built-in public rooms always exist; their messages follow the 24-hour rule.
- A guest session lasts 30 days from the last time you opened the app, and keeps the same guest ID; a person who does not open the app for 30 days gets a new guest ID next time. The sign-in identifier in Google Firebase Authentication stays until it is deleted: write to the contact address to have it deleted.
- Our hosting and service providers (Vercel, Google, Upstash) keep their own technical logs under their own policies, linked above.
- You can use the app as a guest, leave any room at any time, and delete rooms you created.
- The inbox address and push token registered for your phone are deleted by our server after a year without use, or earlier when the push service reports that the phone no longer exists. Invitations and friend requests are not stored on our server.
- To ask for deletion of data linked to your wallet address or callsign, write to the contact address above.
6. Children
The app is not directed to children under 13 and does not knowingly collect their data.
7. Security
Connections to our server use HTTPS, and connections to Firebase are encrypted in transit. Private-room voice and text between phones in Mesh mode is encrypted with a key derived from the room passphrase. No system is perfectly secure, and public rooms are open to anyone who joins.
8. Changes
If this policy changes, the date at the top changes and the new text is published at this address.