# White Noise > The identity-free messenger for private communication. White Noise is an open-source messenger for private messages, groups, and connected agents. No phone number or email address is needed. See the Download page for current beta installation options. ## Pages - [Documentation](https://www.whitenoise.chat/docs): Task guides, Settings and troubleshooting for Android and iOS - [Documentation index](https://www.whitenoise.chat/docs/index.json): Guide URLs and platform applicability - [Documentation sitemap](https://www.whitenoise.chat/docs/sitemap.xml): Static documentation URLs independent of blog availability - [Home](https://www.whitenoise.chat/): Features and project supporters - [Download](https://www.whitenoise.chat/download): Current beta installation options - [Privacy Matters](https://www.whitenoise.chat/privacy-matters): Why private conversations matter - [Contribute](https://www.whitenoise.chat/contribute): Repositories, community, and donations - [Blog](https://www.whitenoise.chat/blog): Project updates published on Nostr - [FAQ](https://www.whitenoise.chat/faq): Answers about using White Noise - [Agents](https://www.whitenoise.chat/agents): Connect an agent running on your computer - [For developers](https://www.whitenoise.chat/build): Build with Marmot - [Marmot Protocol](https://www.whitenoise.chat/docs/marmot/README.md): Protocol guide - [Terms of Service](https://www.whitenoise.chat/terms): Terms for using White Noise - [Privacy Policy](https://www.whitenoise.chat/privacy): Website and app privacy disclosures - [Canary](https://www.whitenoise.chat/canary): Signed transparency statements ## Agent access Request a public page with `Accept: text/markdown` for its readable Markdown representation. HTML remains the default. The site publishes documentation and setup instructions, not a hosted messaging API or agent service. - [Agent skill discovery](https://www.whitenoise.chat/.well-known/agent-skills/index.json): Setup skill metadata and SHA-256 digest - [Connect White Noise skill](https://www.whitenoise.chat/.well-known/agent-skills/connect-white-noise/SKILL.md): The current Agents guide in skill format - [AI catalog](https://www.whitenoise.chat/.well-known/ai-catalog.json): Discovery of published agent resources ## References - [FAQ and guides as text](https://www.whitenoise.chat/llms-full.txt) - [Sitemap](https://www.whitenoise.chat/sitemap.xml) - [Marmot repositories](https://github.com/marmot-protocol) For current features and limitations, use the FAQ and guides. For distribution links, privacy disclosures, and signed statements, use their canonical pages above. # Frequently asked questions ## Getting started ### Is White Noise free? Yes. White Noise is free to download and open source. Running your own relay or choosing a paid relay service can have separate costs, but you do not need to run a server to get started. ### Which devices can I use? White Noise is available as a beta for iPhone through TestFlight and for Android. We recommend Zapstore for Android; Google Play and GitHub downloads are also available. [See download options](https://www.whitenoise.chat/download) ### How do I find and add someone? Exchange White Noise profiles using a profile link, QR code, or public key, then start a conversation in the app. Your public key identifies you and is safe to share. Your private key controls your identity: keep it secret and never send it to a contact. ### Can I use the same identity on multiple devices? Linked-device support is still being developed in the Marmot protocol. Importing the same identity key on another device does not by itself transfer your conversations or their encryption state. Do not rely on a second installation as a synchronized backup of your chats. [Read about multi-device development](https://www.whitenoise.chat/docs/marmot/features/multi-device.md) ## Privacy and identity ### Who can read my messages? Messages are end-to-end encrypted for the participants in your conversation. White Noise and the relays carrying those messages cannot read their content. Participants can still copy or share what they receive, and someone with access to an unlocked or compromised device may be able to read messages on it. ### Does using White Noise make me anonymous? No phone number or email is required, but that is not a guarantee of anonymity. Your public profile, the information you share, and network information such as your IP address can reveal things about you. You can choose a display name, including a pseudonym, while deciding what to share with others. ### Where are my messages and files stored? Conversation data is stored on your device. Independent relays also store and forward encrypted message events; their retention policies vary. Media shared in encrypted conversations is encrypted before upload to media servers. Public profile information and profile pictures are public, and copies on independent servers may persist. [Read the privacy policy](https://www.whitenoise.chat/privacy) ### What happens if I lose my phone or private key? White Noise cannot reset or recover your private key for you. Keep a secure backup of your identity key, but remember that the key alone is not a backup of your message history. If a device or key is stolen, treat that identity as compromised and tell your contacts through another trusted channel. Encryption cannot erase messages already stored on the stolen device. ### What information does White Noise collect? Usage and telemetry sharing is off by default. If enabled, product analytics sends predefined events and bucketed values; telemetry includes performance measurements, a resettable installation identifier, app and device information, and relay addresses. Neither includes message content, contacts, or account and group identifiers. Group diagnostic logs are a separate opt-in choice and include group and message identifiers. On iOS and Android, enabling log sharing automatically uploads eligible logs to IPF. Push notifications, public profiles, and connected services have their own data flows, explained in the privacy policy. [See what is shared and when](https://www.whitenoise.chat/privacy) ## Groups and the network ### What is a relay? A relay is a server that receives, stores, and forwards messages across the Nostr network. White Noise encrypts conversation content before sending it to relays. A relay operator can still observe connection information, such as your IP address, even though it cannot read the encrypted messages. ### What happens when a relay goes offline? Marmot supports delivery through multiple relays so a conversation does not depend on one server. Other reachable relays shared by the conversation can continue carrying messages. Delivery can still be delayed if participants cannot reach a suitable relay or lose their internet connection. ### Can I choose my relays or run my own? Yes. White Noise lets you configure relays, and you can run a compatible Nostr relay yourself. People in a conversation need a shared way to exchange messages, so relay choices must work for the group. Operating your own relay gives you control over that server, but does not give you control over copies held elsewhere. [Explore the protocol and tools](https://www.whitenoise.chat/build) ### Can White Noise be blocked? Yes. A network provider or government can block particular servers or restrict internet access. Independent relays reduce reliance on one operator and can provide alternative routes, but White Noise cannot guarantee connectivity. Encryption protects message content; it does not make network traffic invisible or impossible to block. ### What can group admins do? Admins manage group membership, including adding and removing members under the group’s rules. Once a removal takes effect in the group’s encryption state, the removed member cannot decrypt new messages with their old keys. Removal does not erase messages they already received, saved, or shared. ## Agents ### Which agents can I connect? MDK provides integrations for Hermes, OpenClaw, Codex, Claude Code, OpenCode, and Pi. Run the connector alongside your existing agent on a supported Mac or Linux computer, add its White Noise identity, and invite it to a conversation. The setup guide covers installation and which accounts are allowed to message it. [Connect your agent](https://www.whitenoise.chat/agents) ### What does encryption protect when I message an agent? It protects the messages exchanged between White Noise and the agent’s connector from being read by the relays carrying them. The agent receives the message so it can respond. Its model provider, tools, and logging settings determine what happens after that; connecting through White Noise does not make a cloud model run locally. # Connect your agent. ## Getting started A connector lets you talk to an agent from a White Noise conversation. The agent runs on your computer, using the tools and accounts you already have set up. You’ll need White Noise on your phone, a working agent runtime on your Mac or Linux computer, and your White Noise account’s public key (`npub`). 1. Choose your agent below. Copy its setup prompt and paste it into that agent on your computer. 2. Give the agent your White Noise public key (`npub`) when it asks. Review the proposed changes and approve installation when you’re ready. 3. After setup, add the agent’s public key in New Message in White Noise and send a test message. You can also follow the manual setup guides linked below. [Full setup documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/README.md) ## Hermes Use this connector if you already run Hermes. It adds White Noise to the Hermes gateway, with support for messages, reactions, media, and live previews. Install the Marmot plugin, follow the gateway restart instructions, then add the agent in White Noise. ```agent-setup Connect this Hermes installation to White Noise through Marmot. Read the current connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, install and verify the connector, then reply with your agent public key. ``` [Full Hermes documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/hermes/marmot/README.md) ## OpenClaw Use this connector if you already run OpenClaw. It adds White Noise as a channel in your existing gateway, with support for messages, media, and live previews. Install the channel plugin and restart the gateway when prompted. Then invite the agent to your conversation. ```agent-setup Connect this OpenClaw instance to White Noise through Marmot. Read the current connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, install and verify the connector, then reply with your agent public key. ``` [Full OpenClaw documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/openclaw/marmot/README.md) ## Codex Use this connector to work with Codex through White Noise. Codex must already be installed and signed in on the computer that runs the connector. After setup, add the agent in White Noise. You can select a working directory with a message containing its path, such as `/path/to/project`. ```agent-setup Connect this Codex setup to White Noise through Marmot. Read the Codex harness guide at https://github.com/marmot-protocol/mdk/blob/master/integrations/codex/marmot/README.md and the connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Confirm that Codex CLI is installed and authenticated. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, use the documented verified installation flow, reply with your agent public key, and ask me to send a test message. ``` [Full Codex documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/codex/marmot/README.md) ## Claude Use this connector to work with Claude Code through White Noise. You’ll need Claude Code 2.1.0 or newer, installed and signed in on your Mac or Linux computer. After setup, add the agent in White Noise. Select a trusted project directory under your home folder, then send a text-only test message. ```agent-setup Connect this Claude Code setup to White Noise through Marmot. Read the Claude harness guide at https://github.com/marmot-protocol/mdk/blob/master/integrations/claude/marmot/README.md and the connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Confirm that Claude Code 2.1.0 or newer is installed and authenticated. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, use the documented verified installation flow, reply with your agent public key, and ask me to send a text-only test message. ``` [Full Claude documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/claude/marmot/README.md) ## OpenCode Use this connector to work with OpenCode through White Noise. Have OpenCode installed and working before you install the connector. Add the agent in White Noise and choose the project directory you want it to work in. ```agent-setup Connect this OpenCode setup to White Noise through Marmot. Read the current connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, install and verify the connector, then reply with your agent public key. ``` [Full OpenCode documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/opencode/marmot/README.md) ## Pi Use this connector to work with Pi through White Noise. Pi must already be installed and signed in on the computer that runs the connector. Once setup is complete, add the agent in White Noise and send a test message from the account you authorized. ```agent-setup Connect this Pi setup to White Noise through Marmot. Read the Pi harness guide at https://github.com/marmot-protocol/mdk/blob/master/integrations/pi/marmot/README.md and the connector guide at https://github.com/marmot-protocol/mdk/blob/master/crates/agent-connector/README.md. Explain how the connector works and what installation will change. Confirm that Pi is installed and authenticated. Ask me for my White Noise public key (npub), then propose setup for that account. Ask for my approval before making changes. After approval, use the documented verified installation flow, reply with your agent public key, and ask me to send a test message. ``` [Full Pi documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/integrations/pi/marmot/README.md) # Build with Marmot ## Getting started Marmot provides the messaging protocol; its libraries give you a starting point for building a client. Your app supplies the interface around accounts, conversations, and messages. Start with the Rust MDK for a native client, or explore marmot-ts for a TypeScript project. The repositories below include libraries and existing apps you can learn from. ## MDK The Marmot Development Kit is a Rust workspace for building messaging clients. It includes an app runtime, account and group management, encrypted storage, and network transport. For an app, start with `marmot-app`. Language bindings are available through `marmot-uniffi`. Lower-level libraries are there when you need more control. To explore the workspace, install the Rust version specified in its toolchain file, then run: ```sh git clone https://github.com/marmot-protocol/mdk.git cd mdk cargo test -p cgka-engine ``` [Full MDK documentation on GitHub](https://github.com/marmot-protocol/mdk/blob/master/README.md) ## TypeScript marmot-ts offers client, group, storage, and network interfaces for TypeScript projects. ```sh npm install @internet-privacy/marmot-ts ``` The library is in alpha; its maintainers advise against production use. Check its current feature support before choosing it for your project. [Full TypeScript documentation on GitHub](https://github.com/marmot-protocol/marmot-ts/blob/master/README.md) ## Client flow A basic messaging client needs to: 1. Create or load an account identity. 2. Publish the key material other people need to invite it. 3. Create a group or accept an invitation. 4. Send and receive encrypted messages through the group. 5. Store local state so conversations can continue after a restart. Use the library’s group and message operations to implement this flow. The exact integration steps depend on the library you choose. ## Protocol basics Marmot uses Nostr public keys for account identity and Messaging Layer Security (MLS) to manage encryption within a group. Clients commonly deliver the encrypted messages through Nostr relays. Compatible clients must agree on how identities, invitations, and group changes are processed. The specification defines those rules; a library implements them for your app. [Full protocol specification on GitHub](https://github.com/marmot-protocol/marmot/blob/master/README.md) # Marmot Protocol ## Getting started Marmot is a protocol for end-to-end encrypted group messaging. It gives different clients a shared set of rules for identities, groups, and messages. White Noise is an app built on Marmot. Other clients can implement the same protocol. This page introduces the main concepts; the full specification on GitHub covers the formats, validation rules, and behavior needed to build a client. [Read the full specification on GitHub](https://github.com/marmot-protocol/marmot/blob/master/README.md) ## Identity Marmot uses Nostr public keys to identify accounts. A group also keeps track of the devices participating in it, with separate keys for their MLS membership. This distinction lets the protocol associate a device with an account while validating its role in a particular group. Clients check that the account has authorized the device’s membership key. [Identity specification on GitHub](https://github.com/marmot-protocol/marmot/blob/master/foundation/identity.md) ## Groups and encryption Messaging Layer Security (MLS) manages the group’s encryption state. Joining, leaving, and sending messages follow agreed rules so members can process changes consistently. Marmot defines the steps around MLS: creating a group, inviting members, processing incoming messages, and applying membership changes. These rules help different clients agree on the group’s state, even when updates arrive in a different order. [Group flows and encryption on GitHub](https://github.com/marmot-protocol/marmot/blob/master/protocol-core/README.md) ## Message delivery Clients currently use Nostr relays to carry encrypted messages. Marmot requires transport to support delivery through multiple endpoints, rather than depending on a single server. The delivery layer defines where clients publish messages and how recipients fetch them. It carries the encrypted data; group membership and encryption are handled by the protocol above it. Keeping these responsibilities separate allows other transports to be defined without changing account identities. [Message transport specifications on GitHub](https://github.com/marmot-protocol/marmot/blob/master/transports/README.md) Source: https://www.whitenoise.chat/docs/settings/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Android settings Settings has three groups: **Account**, **App** and **Support**. When a setting applies to the active profile or to every profile on the device, its section says so. ## Settings layout Your profile and avatar appear at the top, with **Edit profile picture**, **Open Share & Connect**, **Add Profile** and **Switch Profile**. **Sign Out** is also on this screen, and the app version is shown at the bottom.
Profile, Profile Keys and Relays in the Account section.
The Account section contains Profile, Profile Keys and Relays. Select the image to enlarge.
## Account ### Profile Edit your name, picture and other profile details. See [Profiles](/docs/using/profiles/android). ### Share & connect **Share & Connect** has these controls. | Control | Effect | |---|---| | Share profile URL | Opens Android sharing with a link to your profile. | | Share profile card | Shares an image card that says: On White Noise? Message me here. | | Save to Gallery | Saves the profile card image. On failure the app shows: Couldn't save image. | | Copy public key | Copies your public key. | | Profile QR code | Someone can scan this code to connect with you. | | Scan QR Code | Scans another person's code. Only codes that contain a White Noise profile are accepted. | ### Profile keys **Profile Keys** shows your public and private keys together with the account session status. It also holds these actions: - **Export**, for backing up your private key. - **Sign Out**. - **Sign Out & Wipe**. Some of these actions are permanent, so read [Identity and keys](/docs/settings/identity) before you use them. ### Relays This screen controls where your profile publishes information and receives invitations. See [Relays](/docs/settings/relays). ## Appearance | Control | Options | Scope and effect | |---|---|---| | Theme | System default, Light, Dark, AMOLED | System default follows your device. AMOLED uses a pure black background with white outlines. | | Action color | One accent per theme | Applies to the active profile and leaves backgrounds and neutral surfaces as they are. In AMOLED, action buttons are always white. **Reset to default** undoes your change. | | Chat bubble colors | Your messages, Other messages | Sets default bubble colors for the current theme. In AMOLED these colors apply to outlines, and bubble interiors stay pure black. A single chat can override these colors in every theme, and **Reset to global colors** removes that override. | | Custom emoji | Choose from Photos or Choose from Files | See below. | | Language | System default, English, Deutsch, Español, Français, Italiano, Português, Русский, Türkçe, 简体中文, 繁體中文 | Sets the app language. | | App font | System and other fonts | Sets the app font. | | Font size | Small, Default, Large, Extra large | Applied on top of your device font-size setting. | | Enter key behavior | Send message, New line | On a hardware keyboard, Shift+Enter always inserts a new line. | | Quick account switching | On or off | Shows your other accounts beside your avatar so you can switch with one tap. | The color picker has Hue, Saturation and Brightness sliders and a Hex color field that takes six hexadecimal digits, for example 1D4ED8 after the # sign.
The four Theme options in Android Appearance settings.
Choose System default, Light, Dark or AMOLED under Theme. Select the image to enlarge.
### Custom emoji Images you add here become :shortcode: emoji that you can use in messages and reactions, and they are stored on this device. 1. Open **Settings > Appearance > Custom emoji**, then tap **Choose from Photos** or **Choose from Files** to pick the image you want to add. 2. Enter a shortcode made of letters, numbers and the _ symbol, then tap **Save**. If the shortcode is already in use, the app warns that the new image will replace your current one. The image must be PNG, GIF, WebP or JPEG and 1 MB or smaller. When a new message (not a reply) uses a custom emoji, the image is encrypted and uploaded to that chat so its members can see it. Reactions, replies and edits send only the shortcode. Removing an emoji deletes it from this device, while messages you already sent keep the image that was uploaded with them. An emoji marked **Display only, can't be sent** can be tapped to remove it. ## Swipe actions The **Messages** and **Chats** sections each have a **Swipe left** and a **Swipe right** row. Left and right describe the direction your finger moves, so an explicit choice stays the same when you change the app language. **Default** follows the reply direction for your language, and the row shows the action it currently resolves to, such as Default: Reply. Chat swipes are off by default. | Section | Actions shown in Settings | |---|---| | Messages | Default, Reply, Forward, React, Off | | Chats | Read / unread, Mute / unmute, Pin / unpin, Off | Each message or chat row still decides whether the chosen action applies to it. **Reset to default** restores the defaults. ## Folders
Folders screen with Unread, Archived and Groups, plus add and row-menu controls.
Folders organize chats. Use the plus button to add one and the row menu to manage it. Select the image to enlarge.
Folders sort your chat list into groups of chats, and deleting a folder leaves your chats where they are. - **New Folder** creates a folder. - **Move Up** and **Move Down** change the folder order. - **Restore Default Folders** adds back any missing default folders (Chats, Unread, Archived and Groups) and keeps your changes to folders you already have. ### Edit a folder | Field | Effect | |---|---| | Folder name, Description | Labels for the folder. | | Include all active chats | Includes every active chat. | | Always include chats / Included Chats | Chats you add here stay in the folder even when they fall outside the rules. | | Automatic rules or Filters | Chats are matched automatically. See below. | | Show when empty | Keeps the folder visible when no chats match. | | Sort chats by | Most recent activity, Name A–Z or Unread first. Invitations and pinned chats always appear first, and pinned chats keep the order you set. | | Preview | Shows which chats match before you save. | | Delete folder | Removes the folder and keeps your chats. | If you leave with unsaved changes, the app asks whether to **Discard Changes** or **Keep Editing**. If saving fails, your edits stay on screen so you can try again. **Filters** can use read status, unread mentions, people (any, all or excluded), draft, pending outgoing messages, muted, archived, accepted chats, conversation type, title contains, and pinned. You can also add public keys as npub or hex. Conditions can be grouped with **Match all** or **Match any**, and **NOT** excludes chats that match a group. A rule set can have up to 4 levels and 64 conditions or groups. Presets include **All read** and **Unread mentions**. All read means every message has been read, which tells you nothing about whether an agent has finished its work. Some folders use older saved rules. For these, chats that match any person or keyword must also meet every selected category, and a removed chat that still matches comes back. If a rule set can't be read, automatic matching is turned off until you replace the rules. **Replace rules** keeps the folder name and included chats. ## Notifications If notification permission is off, tap **Allow notifications**. You can also turn notifications on in Android Settings. | Control | Effect | |---|---| | Push notifications | When new activity may be available, the app wakes briefly and checks securely for messages. See below for when this option is unavailable. | | Local notifications | Keeps a persistent connection open while notifications are on. | | Device status | Shows whether notification permission is Allowed or Blocked, and the battery policy: Optimized, Unrestricted, Restricted or Unavailable. Battery policy can delay background delivery with either option. The status updates when you come back to this screen. | | Notification categories | Direct messages, Group messages, Mentions, Reactions, Invites, Group membership changes, Agent activity, App updates and Notification summary. Android controls the sound, vibration and importance of each category. | | Show notification previews | When off, names and message content are hidden. Applies to all accounts. If the app shows Changes may be lost after restarting, tap **Retry**. | **Push notifications** is unavailable in these cases: - The build has no push server configured. - Firebase isn't configured or can't start. - The device lacks compatible Google Play services. See [Notifications](/docs/using/notifications/android). ## Read aloud > **Privacy:** A separate speech engine may send decrypted message text to its provider. For on-device speech, the app recommends [RHVoice](https://f-droid.org/en/packages/com.github.olga_yakovleva.rhvoice.android/) or [eSpeak NG](https://f-droid.org/packages/com.reecedunn.espeak/). 1. Open **Settings > Read Aloud** and choose an **Engine**. 2. Choose an installed offline **Voice**, or use **Automatic offline voice**. **Open Android Settings** takes you to system speech settings when you need to configure the engine. 3. Return to a conversation, touch and hold a message and choose **Read Aloud**. See [playback controls](/docs/using/messages/android#read-a-message-aloud).
Read-aloud defaults, Speak over playing media and speech-over-media volume.
Automatic reading and audio-mixing preferences are separate controls. Review them before enabling reading by default. Select the image to enlarge.
**Read Aloud** has these controls. | Control | Effect | |---|---| | Engine | The installed speech engine, labeled **On-device engine** or **May use network speech**. | | Voice | **Automatic offline voice** uses the best installed offline voice for the message language. You can select a voice when it is installed and works offline. Each selectable voice also has a name of its own that no other voice shares. If your saved voice is unavailable, the app tells you which voice it is using instead. | | Speech rate | **System** follows your device setting. You can also pick a preset, or choose **Custom** and enter a rate from 0.1× to 10.0×. | | Read messages aloud by default | When a chat opens, unread messages are read aloud unless that chat has its own setting. | | Speak over playing media | Speech plays over other audio that is playing. | | Speech-over-media volume | Quiet, Medium or Loud: 35, 60 or 85 percent of the speech engine volume. | **Open Android Settings** opens the system speech settings. ## Translate Use [Translate messages](/docs/settings/android/translation) to install Offline Translator, choose languages and manage automatic translation. ## Dictation Use [Dictate text](/docs/settings/android/dictation) to set up a speech provider and choose how recognized text enters your draft. ## Data usage In **Data Usage**, **Automatic downloads** let you set a separate rule for each media type: Photos, Audio, Videos and Files. Each rule covers Wi-Fi, Mobile data, Roaming and Metered network, or you can choose Never. A download starts only if every network rule that applies allows it, and you can always download media yourself. - **Download queue**: **Stop automatic downloads** clears waiting automatic downloads for this profile while active downloads and downloads you started yourself keep going. **Restart automatic downloads** turns them back on. - **Reset download settings** restores the default rule for every media type. - **Media quality** for sent media: Low (about 150 KB per photo), Standard (about 500 KB), High (about 1.5 MB) or Original (full resolution). Quality applies to new photos and voice messages, and videos and audio files are sent as they are. Photos always have location and device details removed, even at Original. Videos and imported audio keep their original data. See [Media](/docs/using/media/android). ## Privacy & security **Privacy & Security** has these controls. | Control | Effect | |---|---| | Screen security | Blocks screenshots and hides White Noise previews in Recents. | | Incognito keyboard | Asks your keyboard to stop learning from what you type in White Noise. Your keyboard may ignore this request. | | Require device authentication | Asks for your device screen lock when you return to White Noise. Set up a device screen lock first, using **Open Android security settings**. | | Auto-lock | Controls when the app lock takes effect. | | Blocked users | Blocked people can't message you directly. Groups you share with them keep working, and their message history stays on this device. You can **Unblock** them from this list. | | Default disappearing messages | Applies to new chats and groups that this profile starts. Existing conversations keep their setting, and you can change each conversation later. | | Diagnostics & Improvements | Optional usage sharing and diagnostic logs. See [Android diagnostics](/docs/settings/android/diagnostics). | White Noise stores the time you last passed your screen lock in storage protected by Android Keystore. If that record becomes unreadable, the app asks for your screen lock again on the next open. If the app shows **White Noise saved your request but couldn't confirm it yet**, repeat the same block or unblock action to finish it. See [Privacy](/docs/using/privacy/android). ## AI agents AI agents run on a computer or server you control. Each agent has its own account, and you chat with it like any other end-to-end encrypted chat. The available connectors are Hermes, OpenClaw, OpenCode, Codex, Claude Code and Goose. 1. Choose the connector for your agent, then tap **Copy prompt** to copy its setup prompt. 2. Paste the prompt into that agent. The prompt includes your public npub; your private key stays out of it. 3. The agent explains how the connector works and must ask for your approval before it installs anything. 4. When the agent gives you its npub, add it as a contact from **New Message** and start a chat. Use these prompts only with an agent you run and trust. **Agent connector documentation** has install scripts and health checks, and it also covers troubleshooting. Use a separate group for each project, and expect session controls to vary by connector. ## Support | Row | Effect | |---|---| | Help > Report a bug | Opens a review screen explaining that nothing is attached. Tap **Open GitHub** to open the public issue form in your browser. See [Report a problem](/docs/troubleshooting/report-problem#android-bug-report-screen). | | Help > About & licenses | Shows the version, build and MarmotKit version, open source licenses and the privacy policy. | | Chat with support | Starts a chat with White Noise Support. The profile needs a published receiving relay first. If it lacks one, tap **Open Relays**. | | Donate | Opens the donation page. | | App updates | Shows **Up to date** or tells you that a new version is available on Zapstore. It may instead offer **Check for updates**; if the check fails, tap to retry. | ## Developer tools **Developer Tools** are for development and testing only, because they can expose technical information and change how the app behaves. Turn them on from **About & licenses**, and the app confirms that they are enabled. - **Developer mode** shows diagnostics and MLS internals. - **Key Packages** shows your published invitation keys. See [Identity and keys](/docs/settings/identity). - **Quarantined groups** lists groups that couldn't be loaded safely. **Retry recovery** keeps your history and leaves your group membership unchanged. - **Streaming debug** shows agent-stream and MLS signaling events inside conversations. - **Diagnostics** shows relay health and performance logs. - **Review environment** creates Johnny Appleseed as a second profile. It then publishes real events to your relays: profile, key package, group and message events. **Clear saved demo setup** only removes the local resume record. > **Warning:** **Seed conversation fixture** sends numbered real messages from this account to the chat you choose, and every member of that chat receives all of them. Use it only in a private test group. Source: https://www.whitenoise.chat/docs/settings/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # iOS settings ## Settings layout The top of Settings shows your profile and up to three other signed-in profiles, with a +number badge when you have more. **Switch Profile** and **Add Profile** are here too. The bottom of the screen holds **Sign Out** and **Delete Profile**, and the app version (White Noise · version) appears there as well. ## Profiles - **Switch Profile** lets you choose a signed-in profile or add a new one. - **Profile** shows your Name and About text, plus a Verified Nostr Address (an address like name@example.com). Tap **Edit** to change them, and tap **Retry** if saving fails. See [Profiles](/docs/using/profiles/ios). - **Share & Connect** has a **Mode** picker, **Share Profile URL**, **Share Profile Picture**, **Share Profile**, and a QR code that someone can scan to connect with you. The share card says: On White Noise? Message me here. - **Profile Keys** shows your public key in Hex and npub formats along with the key status. Export options are here too. See [Identity and keys](/docs/settings/identity). - **Relays** has Account Relays and Inbox Relays. See [Relays](/docs/settings/relays). ## Appearance | Control | Effect | |---|---| | Theme | Follow your device appearance, or always use a light or dark theme. | | Language | **System** follows your device language. Other choices update White Noise immediately. | | Return Key Sends | When on, the Return key sends your message. When off, it starts a new line. | | Show Link Previews | Shows the title and image of links in chats. Loading a preview reveals your IP address to the linked website and to the site that hosts its image. | ## Notifications | Control | Effect | |---|---| | Local Notifications | Creates message notifications on this iPhone. Without Native Push, they may arrive only when White Noise is active. | | Native Push | Uses a generic wake-up signal to check for new messages in the background. Message details stay on this iPhone. | | Mentions in Muted Chats | Mentions of you still notify in muted chats, including chats set to Nothing. Applies to all profiles on this device. | | Notification Preview | Controls how much message information a notification shows. See the modes below. | | Preview mode | Example for a group chat message | |---|---| | Sender and Message | Captain Acorn: Bring emergency snacks. | | Sender Only | Captain Acorn sent a message | | Generic | General wording that leaves out the sender and the message | If notifications are off, tap **Allow Notifications**. You can also tap **Open Settings** and turn them on in iOS Settings. A Developer section has APNS token and registration actions for testing. See [Notifications](/docs/using/notifications/ios). ## Data usage - **Auto-Download**: Media that isn't downloaded automatically shows a download button. **Reset Auto-Download Settings** restores the defaults. - **Remote Media**: When on, opening a conversation can tell GIPHY your IP address and which GIF was requested. When off, received GIFs load only when you tap them. - **Sent Media > Photos and Videos**: Sets the quality of photos and videos you send. Higher quality uses more data. Identifying photo metadata, such as location, is always removed before sending. - **Download Storage**: Sets storage limits for this profile. Downloads pause when storage is full and existing files are kept. You can remove individual downloads from Message info. See [Media](/docs/using/media/ios). ## Privacy & security | Control | Effect | |---|---| | Hide Screen in App Switcher | Hides app content in the app switcher, and while iOS detects screen recording or sharing. Regular screenshots still work. | | App lock toggle (Face ID/Touch ID/passcode) | Locks White Noise when you leave. The toggle label names the method available on this iPhone, and your iPhone passcode works when biometric authentication is unavailable. The toggle needs an iPhone passcode; until you set one, it is disabled and the screen says Set an iPhone passcode to lock White Noise. | | Auto-Lock | Appears while the lock is on. Choose immediately, after 1 minute, after 5 minutes or after 15 minutes. | | Diagnostics & Improvements | Shows a summary of your sharing choice and opens the diagnostics controls. See [iOS diagnostics](/docs/settings/ios/diagnostics). | | Blocked Users | Lists the people you have blocked. See below. | | Erase App Data | Signs out every profile and removes all White Noise data from this iPhone. | | Privacy Policy | Opens the White Noise privacy policy. | > **Warning:** Erase App Data is permanent. It removes every profile and all local chats, media, drafts, keys and settings from this iPhone. To continue, you must enter three confirmation words exactly. Back up each profile’s private key first. Before erasing, follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import) and confirm that you can recover each key. If erasure stops partway, note the error. Use a retry or recovery action only if the app offers one; otherwise contact support before deleting the app or trying again. **Blocked Users**: Blocking hides the person's messages and stops you sending to them in direct chats, and existing history is kept. If you unblock someone, their messages appear again and you can send to them. When you block someone from their profile, **Block and Report** also notifies the White Noise team. See [Privacy](/docs/using/privacy/ios). ## AI agents Your agent runs on your own machine or server as a separate Marmot account, and you chat with it here like any contact. The screen has a **Connectors** list and **Manual Setup**. **Agent connector documentation** is here too. Each prompt includes your npub, which is your public key, and your private key stays out of every prompt. The agent must explain the connector and ask for your approval before it installs anything. Use only an agent you run and trust. ## Support and donate - **Chat with support** starts a chat with White Noise Support. If it fails, tap **Try Again**. - **Donate** supports the Internet Privacy Foundation (IPF). You can give **One time** or **Monthly**. The screen can show recent billing activity, all Payments, invoices and **Manage monthly donation**, and it tells you when Apple Pay is unavailable. If donation history access is no longer available on this device, a new donation won't restore earlier payments. ## Developer tools **Developer Tools** are for development and testing only. The **Developer Tools** toggle turns on technical tools for this profile. - **App Review Demo** creates Johnny Appleseed as a second profile and publishes real profile, KeyPackage, group and message events through your relays. **Clear Saved Demo Setup** leaves profiles and already published events in place. - **Debug Mode** adds technical details to conversations. **Debug Events** and **Startup Diagnostics** are listed here too. - **Key Packages** and **Quarantined Groups** are also here. In Quarantined Groups, **Retry Recovery** keeps your history and validation in place, and your group membership stays the same. - **Diagnostic Logs** lets you export audit logs. See [iOS diagnostics](/docs/settings/ios/diagnostics). ## Sign out and delete profile Both actions are at the bottom of the main Settings screen and apply to the active profile. - **Sign Out** keeps this profile and its local data on this device. If it fails, the screen says Couldn't sign out. Try again. - **Delete Profile** permanently removes this profile from this device. That covers its local message database and MLS group state, together with its key material on this device. Its outstanding key packages on relays are removed too. Enter the profile name exactly to enable the button. If it fails, the screen says Couldn't wipe profile. Read [Identity and keys](/docs/settings/identity) before you use either one. ## How iOS differs from Android | Topic | iOS | Android | |---|---|---| | Theme | Device, light or dark | Adds AMOLED, action color and chat bubble colors | | Enter key | Return Key Sends toggle | Enter key behavior choice, and Shift+Enter always adds a new line | | Swipe actions, folders, read aloud, dictation, translate, custom emoji | Absent from iOS Settings | Separate settings screens | | Screen privacy | Hide Screen in App Switcher, and screenshots still work | Screen security blocks screenshots | | App lock | Face ID/Touch ID/passcode, with Auto-Lock delay | Device screen lock, with Auto-lock | | Removing data | Sign Out and Delete Profile in Settings, Erase App Data in Privacy & Security | Sign Out and Sign Out & Wipe in Profile Keys | | Bug reports | Chat with support | Report a bug (public GitHub) and Chat with support | | Donations | In-app one-time or monthly | Opens a donation page | Source: https://www.whitenoise.chat/docs/settings/android/diagnostics Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Android diagnostics and local logs White Noise for Android has two optional sharing settings, and both apply to every profile on the device. Uploads start only after you turn sharing on, and you can review, export or clear the diagnostic logs stored on the device at any time. See the [privacy policy](/privacy). ## Open the controls 1. Open **Settings > Privacy & Security**. 2. Tap **Diagnostics & Improvements**. The row summary shows On, Usage, Logs or Off. ## Share usage and telemetry This setting shares how often features are used and how the app performs. The data includes a temporary session ID and an installation ID you can reset, and it leaves out account and group IDs. ## Share group diagnostic logs When you turn this on, White Noise records group diagnostic logs for every profile on this device and uploads them to the White Noise audit collector, operated by the Internet Privacy Foundation. > **Before you turn this on:** Logs already stored on this device may also be uploaded. Logs can include group and message IDs, relay addresses, timestamps, pseudonymous account references, an installation ID, your device model and the app version, with members referred to by hashed references. Message contents, profile names, group names and private keys are excluded. 1. Turn on **Share group diagnostic logs**. 2. Read the confirmation, then tap **Enable automatic sharing**, or tap **Cancel** to leave sharing off. If the sharing details change, the app asks you to review them before sharing resumes. ## Retention and turning sharing off White Noise servers delete group diagnostic logs after 30 days, telemetry after 90 days and product analytics after 180 days. When you turn sharing off, new recording and new uploads stop, though an upload already in progress may finish. Logs on this device remain until you clear them, and uploaded copies follow the retention periods above. ## Status messages | Status | Meaning | |---|---| | Ready to share | Sharing is configured. | | Permission needed | A permission is required first. | | Not configured, Unavailable in this build | Sharing is disabled in this build. | | Configuration rejected | The configuration was refused. | | Couldn't load or save settings | Tap **Retry**. | ## Export stored logs 1. Under **Stored Diagnostic Logs**, tap **Export Diagnostic Logs**. 2. Read the warning that logs contain technical identifiers and activity details, then tap **Continue**. 3. Choose **Save to device** or **Share**. The logs are packaged into one .zip file, which you should share only with someone you trust. If preparing or saving the file fails, the app shows an error and you can try again. ## Clear stored logs 1. Tap **Clear Diagnostic Logs**. 2. Confirm with **Clear Logs**. This permanently deletes the diagnostic logs for every profile from this device. Your sharing settings stay as they are, and copies already uploaded remain on the servers. ## Developer diagnostics In **Developer Tools > Diagnostics**, you can see Relay Health, runtime details and Events. **Send to self** sends a test ping to a chat. **Performance logs** collect privacy-safe timing events on this device for a limited time, stopping after 30 minutes or when White Noise restarts. **Copy performance logs** copies the events from the current or most recent session, and that session is also included in your next export of stored logs. ## Report a problem **Settings > Help > Report a bug** opens an empty public GitHub form. Everything you add there becomes public, so if you attach logs, export them first and remove anything you want to keep private. You can also use **Chat with support**. See [Report a problem](/docs/troubleshooting/report-problem). Source: https://www.whitenoise.chat/docs/settings/ios/diagnostics Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # iOS diagnostics and local logs White Noise for iOS has two optional sharing settings, and both apply to every profile on the device. Uploads start only after you turn sharing on, and you can export or clear the audit logs stored on your iPhone. See the [privacy policy](/privacy). ## Open the controls Open **Settings > Privacy & Security** and, under **Diagnostics**, tap **Diagnostics & Improvements**. The row shows a summary of your current choice. ## What each setting shares | Setting | What is uploaded | |---|---| | Share usage and telemetry | Feature usage counts and app performance metrics. Usage data uses temporary session identifiers, and telemetry uses an installation identifier you can reset. Account and group identifiers are left out. | | Share group diagnostic logs | Technical identifiers, timestamps and membership changes, with members referred to by hashed references. Message contents, profile names, group names and private keys are excluded. | > **Before you turn on log sharing:** Logs already stored on this device may also be uploaded. White Noise servers delete group diagnostic logs after 30 days, telemetry after 90 days and product analytics after 180 days. Turning sharing off stops new recording and new automatic uploads, though a batch already uploading may finish. Data on this device remains until you clear it, and data on the servers follows the retention periods above. ## Clear stored logs 1. Under **Stored Diagnostic Logs**, tap **Clear Diagnostic Logs**. 2. Confirm with **Clear Logs**. This permanently removes recorded diagnostic activity for all profiles from this iPhone. Copies already uploaded remain on the servers, and recording and automatic uploads continue while sharing is on. ## Export audit logs You can export audit logs from Developer Tools. 1. Open **Settings > Developer Tools** and turn on Developer Tools. 2. Under **Diagnostic Logs**, tap **Export Latest Audit Log**, or tap a specific file. 3. Choose **Share** or **Save to Files**. The export is the complete original JSONL file, including event details. Check it before you send it, and share it only with someone you trust. When the log list is empty, the screen says There are no logs. ## Other tools **Debug Events** and **Startup Diagnostics** in Developer Tools show technical information for testing. **Usage and diagnostics** has a **Refresh** action that reloads your sharing choice. ## Report a problem Use **Chat with support** in Settings to ask a question or report a problem. Describe what happened before you send any logs. See [Report a problem](/docs/troubleshooting/report-problem). Source: https://www.whitenoise.chat/docs/settings/relays Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Relays Relays let your profile publish information, receive chat invitations and deliver messages. Each profile has its own relay settings. Other people's apps read your published relay lists to find where to reach you, so if those lists are missing, people may be unable to invite you. ## Relay roles | Role | Android label | iOS label | Purpose | |---|---|---|---| | Posting | Where I post (Profile) | Account Relays | Publishes your profile and connection information. Edits are published as your NIP-65 relay list. | | Receiving | Where I receive (Inbox) | Inbox Relays | Where people send you chat and group invitations. Edits are published as your inbox relay list. | Relay URLs must start with wss://. ## Android
Published relay lists and Refresh status on Android.
Relay lists show where this profile posts and receives invitations. Select the image to enlarge.
Open **Settings > Relays**. ### Add a relay 1. Tap **Add relay**. 2. Enter a unique URL that starts with wss://. 3. Under **Use For**, choose at least one role, then save. ### Remove a relay If this is the only relay for a role, add another relay for that role first. Tap **Remove relay** to stop this profile using it. Existing chats keep their current relays. ### Relay lists The status shows Published, Missing or Status unavailable. **Refresh status** checks the status again. **Publish missing lists** publishes the missing lists so people can find where to reach you. If publishing fails, your relay settings are kept. A relay marked **Needs attention** was imported without a secure wss:// address, with its role assignments kept during import. Add a secure replacement or remove the imported relay. ### Restore defaults > **Warning:** **Restore Default Relays** replaces this profile's relay list and role assignments with the defaults, and your custom relays are removed. ### Support chat **Chat with support** needs a published receiving relay on the profile. If the support screen says the relays need attention, tap **Open Relays**. ## iOS Open **Settings > Relays**. An empty list shows No relays published. 1. In **Account Relays** or **Inbox Relays**, tap **Add Relay**. 2. Enter a relay URL that starts with wss://, then tap **Add**. **Published Relay Lists** shows whether each list is published. If the screen fails to load, tap **Retry**. ## Invitation keys Invitation keys, also called key packages, are published to relays so others can add you to groups. See [Identity and keys](/docs/settings/identity) and Groups for [Android](/docs/using/groups/android) or [iOS](/docs/using/groups/ios). Source: https://www.whitenoise.chat/docs/settings/identity Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Identity, keys and signing out Your profile is identified by a key pair. Share your **public key** so people can find and connect with you. Anyone who has your **private key** can use your profile, and White Noise can't recover it for you. > **Important:** Your private key restores your identity only. After a wipe, past groups, messages and media are gone from that device, even if you sign in again with the same key, and you need new invitations to rejoin groups. See Recovery for [Android](/docs/using/recovery/android) or [iOS](/docs/using/recovery/ios). ## Encrypted backup import White Noise exports identity backups as NIP-49 `ncryptsec1` strings protected by your passphrase. The current sign-in screens require a decrypted private key, shown as `nsec` in these guides. Before you delete an identity or its app data, keep the existing profile signed in on its device and keep the `ncryptsec1` backup and its passphrase available. Ask the runtime or app maintainers for a trusted method to decrypt NIP-49 locally, and confirm it produces your `nsec` before removing anything. Keep the key and passphrase on devices you trust; avoid online converters and web uploads. ## Invitation keys Invitation keys, also called key packages, are published to your relays so others can add you to groups. You need at least one published to receive new group invitations. On both platforms, **Developer Tools > Key Packages** has **Publish New Key Package**. On Android, **Republish** publishes the current key package again without replacing it, and **Delete key package** publishes a deletion event and clears that package from the local cache. See Groups for [Android](/docs/using/groups/android) or [iOS](/docs/using/groups/ios). ## Android: profile keys Open **Settings > Profile Keys**. The header shows whether the profile uses **Local signing** or an **External signer**. It also shows whether the account session is running, along with the connection status. - **Copy public key** copies your public key. - **Show private key** and **Copy Private Key** reveal and copy your private key. - If you signed in with Amber, Amber holds the private key, so manage backups in Amber. ### Export the private key 1. On the **Profile Keys** screen, tap **Export** to begin backing up the private key for this profile. 2. For an encrypted backup, choose **Export Encrypted Private Key** and enter a long, unique password twice. The app shows its strength, and you need this password to open the encrypted file. 3. Tap **View backup**, then copy or export it to a secure place. The backup hides after 30 seconds or when you leave the screen. **Export Private Key** shares the raw key and exposes it to whichever app you choose. An encrypted backup or a trusted password manager is safer. If the export expires, return to Profile Keys and start again; no key data was written. ### Sign out - **Stays on this device:** Your groups and message history are kept, and so are your drafts. The profile stays available on this device, so you can sign back in from the account picker. - **What changes:** Notifications for this account stop and temporary app data is cleared. - **Remove invitation keys from relays** (optional): Stops new group invitations while you are signed out. If the app says some invitation keys may still be on relays, you are signed out but those keys may still be published. ### Sign out and wipe > **Warning:** This permanently deletes this account's messages and group encryption data and removes its sign-in key from this device. Its published invitation keys are removed from relays as well. You can sign in again with the same key, but past groups, messages and media are gone from this device. Back up your private key first. 1. In **Profile Keys**, tap **Sign Out & Wipe** once your private key is safely backed up. 2. Type WIPE in the confirmation field, then tap **Wipe**. 3. The app leaves your groups and removes your invitation keys. It then wipes local data and reports how many groups were left and how many keys were removed. If the result is **Local data wipe incomplete**, some data may remain on the device. ## iOS: profile keys Open **Settings > Profile Keys**. Your public key is shown in Hex and npub formats. **Key Status** shows Online when this account's runtime is active and subscribed to its relays. That status describes the runtime only, so it says nothing about whether the key itself is accessible. - **Export Encrypted Private Key** creates an ncryptsec1 backup protected by your passphrase. Marmot never stores the passphrase. - **Export Private Key** asks you to confirm before it reveals the key in plaintext, and that key is then permanently marked as handled insecurely. ## iOS: sign out and delete profile Both actions are at the bottom of the main Settings screen and apply to the active profile. - **Sign Out** keeps this profile and its local data on this device. - **Delete Profile** is the iOS counterpart of Android's Sign Out & Wipe. It permanently removes this profile's local message database and MLS group state, together with its key material on this device. Its outstanding key packages on relays are removed too. Enter the profile name exactly to confirm. If it fails, the screen says Couldn't wipe profile. > **Warning:** If you sign back in with the same key, you keep your identity, but past groups, messages and media are gone from this device and you will need to be re-invited to any groups. Encrypted messages already delivered to other members, and copies kept by independent relays, stay where they are. > **Warning:** Back up the private key of every profile and confirm a working local recovery method for each encrypted backup before erasing all app data. **Erase App Data** in Privacy & Security removes every profile and all local data from the iPhone. See [iOS settings](/docs/settings/ios). Source: https://www.whitenoise.chat/docs/get-started/install/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Install and set up White Noise White Noise for Android runs on Android 11 or later. After you install it, you can create a new profile or sign in with a Nostr identity you already have. ## Get the app 1. On Android, we recommend installing White Noise from [Zapstore](https://zapstore.dev/apps/dev.ipf.whitenoise.android). 2. On the White Noise listing, choose **Download** and follow Zapstore’s installation instructions. If Zapstore cannot offer a build, use another download option. 3. If you'd rather use Google Play or download from GitHub, see [Download](/download) for those options. 4. Open White Noise. You should see the welcome screen. **Expected result:** the welcome screen shows **Sign Up** and **Sign In**. If the app reports a connection problem, connect to Wi-Fi or mobile data and tap **Retry**.
Welcome screen with Sign In and Sign Up choices.
Choose Sign Up for a new profile or Sign In for an existing identity. Select the image to enlarge.
## Create a new profile **Before you sign up, know that your profile is public.** Everyone on the network can see the details you publish, including your photo, so consider using a nickname in place of your real name. 1. Tap **Sign Up** on the welcome screen to open the profile form. 2. Enter the **Name** people will see. If you like, add **About** text or tap **Add Photo** to choose an image. 3. Continue, then wait while White Noise shows **Creating Identity** and publishes your new profile.
Sign Up form with Add Photo and an empty Name field.
Add a profile photo if you want one, then enter the name people will see. Select the image to enlarge.
If identity creation stops, check your connection and try again. If your identity was created but the photo upload or profile publishing stopped partway, tap **Retry**, which keeps the same identity. You can also keep the identity as it is and finish editing your profile later. ## Sign in with an existing identity For an encrypted backup, first follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import). A Nostr identity has two keys: your public key (npub) is the address you share with people, and your private key (nsec) signs you in. Keep your nsec private, because anyone who has it can act as you. 1. Tap **Sign In** on the welcome screen to open the private key form. 2. Paste or type your nsec into the field. To scan it instead, tap **Scan QR Code** and allow camera access. 3. Tap **Sign in** and wait for White Noise to finish setting up your account.
Sign in form with an empty private-key field and QR scanner button.
The private-key field accepts your nsec. The QR button opens the scanner. Select the image to enlarge.
To use the Amber signer app, tap **Sign in with Amber**, then approve the identity request in Amber and sign the identity proof it shows next. If Amber reports that sign-in was cancelled, start again from the welcome screen. If White Noise says you entered a public key, replace the npub with your nsec. If it says account setup is still finishing or stopped partway, tap sign in again to resume. ## Finish account setup If **Account setup** appears, review the checklist. It checks your profile, follow list, read and write relays, inbox relays, this device and messaging keys. A row marked **Needs attention** opens the explanation and the choices available for that step. Review any proposed change before approving it.
Account setup checklist with a profile needing attention and later checks waiting.
Account setup checks your profile, relays and messaging keys. Open a row that needs attention to review the next step. Select the image to enlarge.
If a relay step needs attention, inspect the proposed read and write lists. Recommendations keep existing relay entries, while a custom list removes entries you leave out. Changes can affect your other Nostr apps, so review the lists before choosing **Save changes**. Use **Finish later** if you want to leave the decision for another time.
Account-setup relay proposal with read and write lists and a warning about other Nostr apps.
Review the proposed read and write relay lists before saving changes. The displayed relay addresses are examples. Select the image to enlarge.
When all required checks show **Ready**, tap **Open Chats**. **Finish later** saves the unfinished setup so you can return to it; it does not make a waiting step ready.
Account setup checklist with all six checks marked Ready.
When every required check is Ready, choose Open Chats to continue. Select the image to enlarge.
## Recover an unfinished setup White Noise offers two recovery options, and neither one restores earlier conversation history. - **Recover** appears when an earlier sign-in stopped partway. It clears the unfinished setup and then retries the sign-in for you. Invitation keys that were already published may stay on relays. - **Recover setup** appears on a saved profile whose setup needs repair. It signs that profile out and resets its setup checkpoint, so you must sign in again yourself with the profile's private key. Earlier relay publications stay in place, and this step publishes nothing new. If sign-in stops because of an unexpected account state, White Noise leaves your account unchanged. See [Access problems](/docs/troubleshooting/access) for more help. Source: https://www.whitenoise.chat/docs/get-started/install/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Install and set up White Noise White Noise for iOS runs on iOS 18 or later. After you install it, you can create a new profile or sign in with a Nostr identity you already have. ## Get the app 1. Go to [Download](/download) and follow the iOS option listed on that page. 2. Open White Noise and review the Terms of Service and Acceptable Use Policy linked from the welcome screen. Using the app means you agree to them. **Expected result:** the welcome screen shows **Sign Up** and **Sign In**. ## Create a new profile **Before you sign up, know that your profile is public.** Anyone can see your name and photo along with your bio, including people using other apps on the same network. Photos may stay online even after you remove them, so consider a nickname and an image you are comfortable sharing. 1. Tap **Sign Up** on the welcome screen to open the profile form. 2. Enter the **Name** people will see. You can also add **About** text and a photo. 3. Save to publish your profile, or tap **Not Now** to add details later in Settings. If saving your sign-up progress fails, free up storage on your device and try again. When restoring an unfinished sign-up fails, tap **Retry** or **Discard draft**. Discarding removes only the saved sign-up form from this device and keeps your accounts, along with anything already uploaded or published. ## Sign in with an existing identity For an encrypted backup, first follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import). Your public key (npub) is the address you share with people, and your private key (nsec) signs you in. Keep your nsec private, because anyone who has it can act as you. **Before you approve any relay list:** saving one publishes it as your public relay list. It replaces the previous list and removes any entries you leave out, so check every address before you approve it. 1. Tap **Sign In** on the welcome screen to open the private key form. 2. Enter your **Private Key**, which starts with nsec. You can also scan a QR code that contains it. 3. Tap **Sign In** and wait while White Noise prepares your account. White Noise may then show setup proposals, such as relay settings or secure messaging preparation. Review each proposal as it appears and correct anything that looks wrong before you continue. Inbox relays receive invitations to new chats and groups. If White Noise can't find a usable relay list, you can use the defaults shown. You can also search a relay you have used with this profile; searching only reads from that relay. When setup is ready, tap **Open Chats**. Setup can stop at a few points: - **Secure messaging or device setup stops:** tap **Try Again**. - **Your key is rejected:** check it for missing or extra characters. - **A scanned code holds something other than a private key:** tap **Try Again** and scan the right code. ## Recover an unfinished setup White Noise offers two recovery options. Both repair setup only, and earlier conversation history stays unrestored with either one. - **Recover Identity** appears when an earlier sign-in stopped before setup finished. It removes that incomplete setup from this device and then tries the sign-in again. A KeyPackage from the failed attempt may stay published on relays. - **Recover Setup** appears when a saved profile shows “This profile's saved sign-in setup needs recovery”. It signs the profile out and replaces the unreadable setup checkpoint, so you must sign in again yourself with the private key. Earlier relay publications stay in place. For more help, see [Access problems](/docs/troubleshooting/access), or follow [Report a problem](/docs/troubleshooting/report-problem) if the issue continues. Once setup is complete, continue to [Send a message](/docs/get-started/first-message/ios). Source: https://www.whitenoise.chat/docs/get-started/first-message/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Send a message Both people need White Noise, or another compatible Marmot client, set up and connected. A Nostr public key (an address starting with `npub`) identifies the person. Their app also needs to publish invitation keys so you can start a chat. If that fails, see [Invitation problems](/docs/troubleshooting/invitations). Find the person using their Nostr public key or profile QR code, then start a direct chat.
New Message pencil button on the Chats screen.
On Chats, tap the pencil button in the lower-right corner to start a message. Select the image to enlarge.
## Find the person 1. On **Chats**, tap the pencil control labelled **New Message** to open the recipient search. 2. In **Name or npub**, type a name or Nostr address, or tap **Paste** to insert a copied npub or profile link. To scan a profile code instead, tap **Connect with QR**. 3. Choose the person from the results, where people you follow are marked “You follow”.
New Message screen with Name or npub outlined.
Search in Name or npub, or choose Connect with QR to scan a profile. Select the image to enlarge.
If White Noise marks an address as unverified, tap **Retry** or confirm the address with the person before you message them. If the network search fails or looks incomplete, check your connection and tap **Retry**; pasting their npub directly also works. ## Send your first message 1. Open the chat and wait while White Noise sets up encryption and shows an empty conversation. 2. Type your message in the composer and send it. **Expected result:** your text appears in the chat. A local send status reports progress on your device only, and the recipient may still be offline or yet to read it.
Message reading: The squirrels ate the meeting agenda.
Write in Message, then use Send. The sample conversation uses fictional test data. Select the image to enlarge.
If starting the chat fails, check your connection and tap **Retry**. If White Noise shows **Chat created** with **Open chat**, the chat exists and is still reaching your list, so wait a moment and tap **Open chat**. If a message shows **Send failed**, check your connection and see [Delivery problems](/docs/troubleshooting/delivery). ## Let others message you In **Settings**, tap your profile card (**Share & Connect**) to show your QR code or copy your npub for others. ## Invite someone new Tap **Invite a friend** to open your device's sharing options with a link to download White Noise. ## Accept or decline an invitation When someone starts a chat or group with you, it appears as an invitation in your chat list. Open it and tap **Accept** to join or **Decline** to turn it down. If the invitation is still being checked, wait for it to finish, and if checking fails, tap **Retry**. See [Invitation problems](/docs/troubleshooting/invitations) for more help. Source: https://www.whitenoise.chat/docs/get-started/first-message/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Send a message Both people need White Noise, or another compatible Marmot client, set up and connected. A Nostr public key (an address starting with `npub`) identifies the person. Their app also needs to publish invitation keys so you can start a chat. If that fails, see [Invitation problems](/docs/troubleshooting/invitations). You can start a direct chat from **New Message** using the person's Nostr address or npub. Scanning their profile QR code works too. ## Start a chat 1. In **Chats**, tap **New Message** to open the **New Chat** screen. 2. Enter the person's Nostr address or npub, or tap **Scan QR Code** to scan their profile code. 3. Choose the person from the results, where a **Verified** badge means their address has been verified. If you already have a chat with that person, White Noise asks you to pick an existing conversation or tap **Start new conversation**. If the lookup finds no profile, confirm the address with the person. If the lookup or chat creation fails, check your connection and tap **Retry**. ## Send your first message 1. Open the new chat and look for the prompt inviting you to send the first message. 2. Type your message in the composer and send it. **Expected result:** your text appears in the chat. A local send status reports progress on your device only, and the recipient may still be offline or yet to read it. If a message shows **Not delivered**, tap it, then choose **Try Again** to resend or **Delete** to discard it. If White Noise says you blocked this person, tap **View Profile** to check who it is, then tap **Unblock** to send messages. If the chat is still syncing, wait a moment and tap **Retry**. See [Delivery problems](/docs/troubleshooting/delivery) if messages keep failing. ## Invite someone new On the New Chat screen, tap **Invite to White Noise** or **Share Invite** to open your share options with an invitation to download the app. ## Accept or decline an invitation When someone invites you to a chat or group, the conversation shows **Accept** and **Decline**. Open it and tap **Accept** to join or **Decline** to turn it down. See [Invitation problems](/docs/troubleshooting/invitations) for more help. Source: https://www.whitenoise.chat/docs/using/profiles/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Your profile Your profile is how people recognize you in White Noise. The **Profile** screen shows the notice **Profile is public**, which means everyone on the network can see your profile information, so add only details you are comfortable publishing. ## Edit your details 1. Open **Profile** and tap **Edit**. 2. Update any of these fields: - **Name**: your display name. Tap **Restore saved name** to bring back the last saved name. - **NIP-05 address**: a Nostr address in the form name@domain. - **Lightning address**: for example you@walletprovider.com. White Noise shows **Checking…** while it confirms the address. - **About**: a short bio. 3. Tap **Save**. Expected result: **Saving profile…** appears while White Noise publishes your changes. A confirmed NIP-05 address shows **Verified Nostr address**. ## Add a photo or banner 1. Tap **Add Photo** or **Add banner**. If you already have one, tap **Change Photo** or **Change banner**. 2. Pick **Choose photos** or **Choose files** to use an image from your device, or pick **Find Image on Web**. Image links must be public HTTPS URLs. 3. To take an image off your profile, choose **Remove Photo** or **Remove banner**. **Uploading…** stays on screen until the image is stored. > **Privacy:** Before you tap **Find Image on Web**, know that your search goes to an image search service, and loading results contacts the sites that host them. Those services receive the request and your IP address, as the White Noise privacy policy describes. Choosing an image from your device avoids that exchange. Profile pictures and banners are public. Removing one updates your profile, but copies may remain on the independent servers that stored or relayed it. ## Check profile status White Noise shows **Set up your profile** until you add a name. After that it shows **Profile ready** or **Profile ready · Optional details available**. Tap **Details** for the checklist, where Display name is marked Recommended and the remaining items (picture, bio, banner, NIP-05 address, Lightning address) are Optional. ## Share your profile
Example profile QR code and Scan QR Code button.
Open your own Share & Connect screen so someone can scan your profile code. This image shows an example code. Select the image to enlarge.
Open **Share & Connect**: - Let someone scan your **Profile QR code**. - Tap **Copy public key** to copy your npub. - Tap **Share profile**, then **Share profile URL** or **Share profile card**. The card reads *On White Noise? Message me here.* - Tap **Save to Gallery** to keep the card image. Expected result: **Saved to gallery**. - Tap **Scan QR Code** to scan someone else's profile code. ## Switch or add profiles In **Settings**, tap the profile management row to switch to another signed-in profile or add a new one. Adding a profile lets you create a new identity or sign in with Amber.
Add Profile choices for signing in or creating a new identity.
Adding another profile offers the same Sign In and Sign Up choices. Select the image to enlarge.
If creating the identity or the Amber sign-in fails, start the step again. When Amber asks for approval, approve the request so sign-in can finish. For keys, signing out, and what wiping a profile removes, see [Identity settings](/docs/settings/identity). ## Fix common problems - If your profile fails to save, review each field and tap **Save** again. NIP-05 and Lightning addresses use the form name@example.com. - If a Lightning address fails to resolve, correct the spelling. When White Noise reports a network problem, reconnect and save again. - If an image upload or preparation fails, try again or choose another image. - If a scanned code is rejected as something other than a White Noise profile, ask the person to show the code from their **Share & Connect** screen. ## Related - [Identity settings](/docs/settings/identity) - [Contacts on Android](/docs/using/contacts/android) - [Your profile on iOS](/docs/using/profiles/ios) Source: https://www.whitenoise.chat/docs/using/profiles/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Your profile Your profile holds your name, verified Nostr address, and a short bio. People see these details when they find you or chat with you, so treat them as public. ## Edit your details 1. Open **Profile** and tap **Edit**. 2. Update **Name**, **Verified Nostr Address** (an address like name@example.com), and **About**. 3. Save your changes, or tap **Cancel** to discard them. Expected result: the Profile screen shows your updated details. If saving fails, check your connection and tap **Retry**. The same **Retry** button reloads the screen when it reports **Couldn't load this screen**. ## Share your profile 1. Open **Share & Connect**. 2. Use the **Mode** picker to switch views. Your QR code appears with the caption **Scan to connect.** 3. Tap **Share Profile**, then choose **Share Profile URL** or **Share Profile Picture**. A progress indicator appears while White Noise prepares the profile picture. If sharing fails, White Noise asks you to try again. ## Switch or add profiles Open **Settings** and find the profile management row. What it shows depends on how many other profiles are signed in on this device: - With only your current profile, the row reads **Add Profile**. Tap it to add another profile. - With one other profile, the row shows that profile's picture and name. Tap it to open **Accounts**, where you can switch or add a profile. - With several other profiles, the row reads **Switch Profile**. Tap it, then choose a signed-in profile or tap **Add Profile**. ## Sign out In **Settings**, tap **Sign Out**. This profile and its local data stay on this device. ## Delete a profile > **Warning:** **Delete Profile** permanently removes this profile from this device. Signing back in with the same key keeps your identity, but past groups, messages, and media can't be recovered on this device, and you'll need to be re-invited to any groups. White Noise cannot delete encrypted messages already delivered to other members or copies kept by independent relays. 1. Back up your private key and confirm the backup is saved. For an encrypted backup, follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import) and confirm you can recover your key before deleting anything. 2. Open **Settings** and tap **Delete Profile**. 3. Read the **What gets destroyed** section. 4. Under **Enter Profile Name**, type the profile name exactly as shown. 5. Confirm the deletion. Expected result: the profile is gone from this device. To clear the whole app, **Privacy & Security** has **Erase App Data**. It signs out every profile and permanently removes all White Noise data from this iPhone. For more on keys, signing out, and wiping data, see [Identity settings](/docs/settings/identity). ## Related - [Identity settings](/docs/settings/identity) - [Contacts on iOS](/docs/using/contacts/ios) - [Your profile on Android](/docs/using/profiles/android) Source: https://www.whitenoise.chat/docs/using/contacts/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Contacts Contacts help you find people and start conversations with them. You can also keep a private nickname and notes for anyone you talk to. ## Find someone 1. Open **New Message** and, in **Name or npub**, enter a name or an identifier such as an npub or a Nostr address. Tap **Paste** to drop in a key or link you copied. 2. To use a code instead, tap **Connect with QR** and scan the person's profile QR code. 3. Pick the person from the results. Results appear in four groups: **People in chats**, **Following**, **Network results**, and **On this device**. A **You follow** tag marks people you already follow. An address tagged **Address not verified** is still waiting for White Noise to confirm it, and if that check fails, tap **Retry** to run it again. To bring in someone new, tap **Invite a friend** and share the invitation. It includes the download link. ## Use a person's profile The **User Profile** screen shows the person's name, pictures, any **Verified Nostr address**, and Lightning address. Tap **Message** to chat or **Copy public key** to copy their key. Under **Profile Actions**: - **Add Contact** follows the person, and **Remove Contact** unfollows them. - **Start group** creates a group with them. **Add to a group** lists the groups you administer that they can still join; select groups and tap **Add to groups**. - **Groups in Common** lists the groups you share. - **Make admin in groups** promotes them in groups you administer where they are already a member. - **Block** and **Unblock** switch blocking on or off for this person. ## Add a nickname and notes 1. Tap **Nickname & notes**. 2. Enter a **Name** (up to 80 characters) and **Notes**, then tap **Save**. 3. To set a private picture, tap **Pick photo** under **Private picture**, then **Reposition / crop** if needed. Nicknames and notes stay on this device, visible only to you. The private picture applies only to this account on this device and is never uploaded. Clear the nickname to show the profile name again, or tap **Clear private picture** to go back to their public photo. ## Set notifications for one person Tap **Notifications**. Choose **Use defaults** or **Mute notifications from this person**, or fine-tune **Sound & system behavior** and **Vibration pattern**. The setting covers messages from this person in every conversation for this account, while delivery and unread counts stay the same. Chat mute and mentions-only rules apply first. ## Fix common problems - If a network search fails, check your connection and tap **Retry**. - If White Noise rejects a recipient as invalid, enter an npub, a profile link, or a hex public key instead. - A block can save on your device before the network confirms it. Repeat the same block or unblock action to finish it. - If following or unfollowing fails to update, reconnect and try again. - When **Groups in Common** reports that some memberships are unavailable, tap **Retry** on that screen. ## Related - [Your profile on Android](/docs/using/profiles/android) - [Contacts on iOS](/docs/using/contacts/ios) Source: https://www.whitenoise.chat/docs/using/contacts/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Contacts On iOS you find people and start conversations from the chat list. Search or scan a profile QR code to reach people already on White Noise, and send an invitation to everyone else. ## Start a chat with someone 1. In the chat list, tap **New Message** to open the **New Chat** screen. 2. Search for the person, or tap **Scan QR Code** and scan their profile code, then select them. 3. If you already have a conversation with this person, White Noise asks which one to continue. Tap it, or tap **Start new conversation**. Expected result: the conversation opens. When you search by Nostr address, a **Verified** badge marks an address White Noise has confirmed. ## Invite someone On the **New Chat** screen, tap **Invite to White Noise**. Then tap **Share Invite** and choose how to send it. ## Start a group 1. On the **New Chat** screen, tap **New Group**. 2. Select people. They appear under **Selected**. 3. Tap **Continue** to open **Set Up Group**. A group that starts with just you needs a name. Unnamed groups display their members' names instead, and you can add members after creating the group. ## Help others find you Open **Share & Connect** to share your profile URL or picture, or to show your QR code. See [Your profile on iOS](/docs/using/profiles/ios). ## Fix common problems - If an address search comes up empty, check the spelling or ask the person to share their profile URL or QR code. - If White Noise reports that it couldn't check an address, check your connection and tap **Retry**. - If a chat fails to start, tap **Retry**. - When a chat shows as unavailable, it may still be syncing. Wait a moment, then tap **Retry**. If **QR Scanning Unavailable** appears, follow its explanation. For denied camera access, tap **Open Settings** and allow camera access for White Noise. For a busy or interrupted camera, close the other camera app or wait, then tap **Try Again**. Use White Noise full screen if requested. Device restrictions or a missing camera require another way to connect, such as a profile URL. ## Related - [Your profile on iOS](/docs/using/profiles/ios) - [Contacts on Android](/docs/using/contacts/android) Source: https://www.whitenoise.chat/docs/using/groups/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Groups Groups let you chat with several people together. ## Create a group 1. Tap **New Message**, then tap **New Group** to start choosing members. 2. Find people by searching with **Name, Nostr address, or npub**. You can also tap **Paste** or **Scan QR Code**. An unconfirmed address shows **Address not verified**. 3. Review **Selected people** and tap **Continue**. To start alone, tap **Create without other members**. 4. On **Set Up Group**, enter a **Group name**, an optional **Description**, and a **Disappearing messages** setting. Tap **Add Photo** for an image. 5. Tap **Create Group**. Expected result: **Creating group…** appears, then **Chat created**. When setup fails, check your connection and tap **Retry**. To skip one person who is holding up setup, tap **Remove this person and continue**. A new chat can take a moment to reach your chat list; wait, then tap **Open chat**.
Group setup review with disappearing messages, sample members and Create Group.
Review the disappearing-message setting and selected members before choosing Create Group. Select the image to enlarge.
## Open group details Open the conversation and tap its header. Group details show **Group · N members** and quick actions for **Mute**, **Disappearing**, and **Search**. Admins also see management options.
Group quick actions for muting, disappearing messages and search.
Mute, Disappearing and Search open controls for this conversation. Select the image to enlarge.
## Edit group details Only admins can edit these details, and every member sees the result. Web image search sends your query and IP address to DuckDuckGo and image hosts. 1. In group details, tap **Edit group name and description**. 2. On **Edit Group**, change **Group name** or **Description (optional)**. 3. Tap **Add Photo** or **Change Photo**, then pick an image from Photos or Files. You can also tap **Find Image on Web**, or tap **Create from emoji** and pick one or two emoji. **Remove Photo** clears the current image. 4. Tap **Save Group**. When an image fails to upload, try a PNG or JPEG. ## Manage members and admins > Removed members lose access to the chat and aren't notified. Removal can't erase messages they already received. - **Add:** tap **Add Members** and choose people. In groups of 150 or more, extra invitations might not arrive reliably. Tap **Continue** to proceed. - **Remove:** on a member, choose **Remove member** and confirm. - **Transfer admin:** tap **Transfer administration** and pick a member. You step down right away. - **Step down:** tap **Step down as admin**. Another admin can restore you later. Rows show **Admin** or **Member**, and **Updating member…** during a change. The chat shows **Invite pending** or **Removal pending** until it completes. Tap **Retry** when members fail to load. From a person's profile, you can also open **Groups in Common** and tap **Add to a group**. ## Notifications and disappearing messages Tap **Sounds & notifications**. Under **Notify for**, choose **All messages**, **Only mentions**, or **Nothing**, and set a **Vibration pattern** if you like. To silence the chat for a while, tap **Mute** and pick a duration or **Custom time**. Direct mentions can still notify. These settings apply to this device. > Admins set the disappearing timer for everyone. New messages are permanently deleted after the chosen time; unread ones start when read. The timer can't stop saved copies or screenshots. 1. Tap **Disappearing**. 2. Pick a preset or **Custom time**, then tap **Save**. To turn the timer off, pick **Off** and save. 3. Tap **Set timer** to confirm. ## Export a conversation transcript You can share or save a copy of a conversation as a JSON file. > **Warning:** The transcript file is not encrypted. It contains the conversation's message content and identifiers as plain text. Anyone who receives or opens the file can read it. Only share it with, or save it to, a place you trust. The file contains the conversation's decrypted inner Marmot/Nostr events, including message content, in chronological order. Use it to read or process the conversation. It is not a backup. You can't use it to restore the conversation or the group's encryption state. **To share the transcript with another app:** 1. Open the conversation details. 2. Tap **Export Conversation Transcript**. 3. Choose the app you want to share the file with. **To save the transcript to a location you choose:** 1. Open the conversation details. 2. Tap **Save Conversation Transcript**. 3. In the Android file picker, choose where to save the file. ## Leave or remove a group > Leaving removes you, and you need a new invitation to rejoin. If you're the only member, the group is deleted. If you're the only admin, transfer admin first; White Noise can transfer and leave in one step. - **Leave:** tap **Leave group**, then **Leave**. - **Archive:** tap **Archive Chat** to hide it. **Unarchive Chat** restores it. - **Delete:** tap **Delete group**, then **Delete**. This affects this device only. > Disbanding permanently ends the group for everyone. Nobody can send or receive new messages. It can't be undone. Admins can tap **Enable disbanding**, then **Disband group**, then **Disband**. If it fails, check your connection and try again. ## Advanced: recover a group Use these steps only when a group stops syncing. For other diagnostics, see [Settings](/docs/settings/android). **Rejoin.** After **Unable to restore group synchronization.**, some invitations retry automatically. Re-invite anyone still missing from group details. When an invitation arrives, tap **Review invitation from**. > Rejoining replaces this device's encryption data for the group. History stays. Only rejoin if you trust the inviter; a newer group version alone isn't proof. Tap **Rejoin group** or **Decline invitation**, and tap **Retry** when the check fails. **Dismiss** closes a notice about missing earlier messages. **Reset this device's copy.** > Reset erases this group's history and encryption state on this device only. Nothing is sent to the group. In group details, tap **Reset and wait for a new invite**, then **Reset**. You rejoin when an admin sends an invite created after the reset. **Quarantined groups.** A group is quarantined when its stored encryption state can't load safely. Go to **Settings > Developer Tools > Quarantined groups** and tap **Retry recovery**. Tap **Refresh groups** when the list fails to load. Recovery reruns every check and keeps history; it doesn't rejoin you. On success the group returns to your chat list. If it stays quarantined, history is still kept; try again later. ## Related - [Messages](/docs/using/messages/android) - [Settings](/docs/settings/android) - [Groups on iOS](/docs/using/groups/ios) Source: https://www.whitenoise.chat/docs/using/groups/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Groups Groups let you chat with several people together. ## Create a group 1. In the chat list, tap **New Message**, then **New Group**. 2. Choose the people you want, then tap **Continue**. Your picks appear under **Selected**. 3. On **Set Up Group**, name the group and set **Disappearing messages**. A name is required when you start alone; unnamed groups show their members. 4. Tap **Create**. Expected result: the group opens. A group with only you shows **Only you are here**; tap **Add members** to invite people. Tap **Retry** when the chat fails to start. **Chat unavailable** may mean the chat is still syncing, so wait a moment and tap **Retry**. ## Open group info Open the conversation and tap its header. **Group Info** shows **Group · N members** and quick actions for **About**, **Mute**, **Disappearing**, and **Search**. Non-admins see **Only admins can add or manage members.** ## Edit group details Only admins can edit, and everyone in the group sees the name and description. 1. Tap **Edit**, or tap **Add Description**. 2. In **Edit Group Info**, change the name or description. Leave the description blank to remove it. 3. Tap **Save**. To change the picture, tap the group photo. If an update fails, check your connection and try again. ## Manage members and admins > Removed members lose access to new messages. Removal can't erase messages they already received. - **Add:** tap **Add People**, then tap **Invite** after selecting people. - **Remove:** open a member's actions and choose **Remove**. - **Change roles:** in the same actions, choose **Make Admin** or **Remove Admin**. - **Step down:** tap **Step Down as Admin**. If you're the last admin, make someone else admin first. - **From a profile:** under **Groups in Common**, tap **Add to Group**. It lists groups you administer that the person has yet to join. Admins are labeled **Admin** and listed first. If an action fails, check your connection and retry it. ## View group relays In the conversation details, open **Relays** to see the servers used by this conversation. The list is read-only. Changing your account relay list does not change an existing group's routing. ## Review group reports Active group admins can open **Moderation** from Group Info. Each entry shows the report and the message when it is available. Tap **Dismiss** to close the report without deleting the message, or **Delete** to review the **Delete Message** confirmation. > Deletion affects members using compatible clients. Older clients may retain the message, and saved copies remain outside your control. Tap **Retry** if the list fails to load, or **Load more** to see more reports. **Saved; delivery confirmation is pending.** means the action is still waiting for confirmation. ## Notifications and disappearing messages Tap **Notifications**. Under **Notify me about**, choose **All messages**, **Only mentions**, or **Nothing**. Tap **Mute** to silence the chat and **Unmute** to restore it. Tap **Retry** when settings fail to load. > Admins set the disappearing timer for everyone, and expired messages are permanently removed. The timer can't stop saved copies or screenshots. 1. Tap **Disappearing messages**. 2. Choose a preset or **Custom**, then tap **Save**. 3. Tap **Set Timer** to confirm. ## Leave or remove a group > Leaving stops new messages. History stays on this device until you delete it. - **Leave:** in Group Info, choose the leave action and confirm at **Leave this group?** In the chat list, you can also choose **Leave Chat**. The row then shows **Left chat**, or **Removed from chat** if someone removed you. **Filter** finds these chats. - **Archive:** tap **Archive**. It hides the chat from your main list and doesn't notify anyone. > Deleting permanently removes the chat and its messages from this device. Signing in again won't restore them. - **Delete:** tap **Delete Local Copy**. In the chat list, choose **Delete Chat**. To delete several, tap **Select chat** and choose **Delete Chats**. > Ending a group removes everyone permanently. No one can send messages or make changes afterward. - **End (admins):** tap **End Group** and confirm. **Ending group…** shows while it processes, then **Group ended**. ## Advanced: recover a group Use these steps only when a group stops syncing. For other diagnostics, see [Settings](/docs/settings/ios). **Rejoin.** After **Unable to restore group synchronization.**, some invitations retry automatically. Re-invite anyone still missing from Group Info. Then tap **Review Rejoin Invitation**; **Invited by** names the inviter. > Rejoining replaces this device's group state with the invited copy. Saved history is kept. Only rejoin if you trust the inviter; a newer group version alone isn't proof. Tap **Rejoin Group** or **Decline Invitation**, or **Cancel** to decide later. If the check fails, tap **Retry**. **Delete local group.** > This deletes the group's local history, state, draft, and downloaded media on this device. Other members are unaffected. Rejoining needs a fresh invitation from someone still in the group. In Group Info, open **Chat Developer Tools**, tap **Delete Local Group**, and confirm. **Quarantined groups.** White Noise quarantines a stored group when it can't safely load the encryption state. Go to **Settings > Developer Tools > Quarantined Groups** and tap **Retry Recovery**. Tap **Retry Loading** when **Load Failed** appears. A retry keeps your history. Validation and membership also stay as they are. If **Recovery retry failed** appears, try later. The screen reports when every stored group loads. ## Related - [Messages](/docs/using/messages/ios) - [Settings](/docs/settings/ios) - [Groups on Android](/docs/using/groups/android) Source: https://www.whitenoise.chat/docs/using/messages/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Messages Use this page to start chats and send messages, then work with any message in a conversation. ## Start a chat 1. Tap **New Message** to open the screen where you pick who to talk to. 2. Search in **Name or npub**, which accepts an npub or a profile link as well as a hex public key, or tap **Connect with QR** to scan someone's code instead. 3. Choose a person from the results, and the chat opens with a **Chat created** confirmation. If the person isn't on White Noise yet, tap **Invite a friend** and share the invite, which includes the White Noise download link. ## Type and send 1. Type in **Message**, then tap **Send** when your text is ready to go. 2. For a long message, tap **Expand message composer** or drag the composer to resize it, and tap **Collapse message composer** to make it small again. 3. In groups, mention someone by choosing them from the mention picker, where each entry reads **Mention** *name*. To add something other than text, tap **Add attachment**. The menu offers **Camera**, **Photos and videos**, **Files**, **Location**, **Contact**, **Device contact**, and **Create poll**. For media, see [Media and downloads](/docs/using/media/android). Location and contact items share those details with everyone in the chat, so check them before you send. **Dictate text** turns your speech into text that you can review and then **Paste** or **Send**, so it never sends a recording. To send audio, hold the voice control instead, as described in Media and downloads. See [Dictate text](/docs/settings/android/dictation) for provider setup and dictation options. ### Read a message aloud Touch and hold a text message, then choose **Read Aloud**. Review [speech-engine settings](/docs/settings/android#read-aloud) first: a separate engine may receive decrypted message text. Use **Pause reading** and **Resume reading** to pause or continue. The sentence arrows and message-skip buttons move between passages; the rate control changes playback speed. **Stop reading** ends playback. Tap the control bar’s body to return to the spoken message when it is still available.
Read-aloud controls showing previous message, previous sentence, pause, next sentence, next message, rate and stop.
The controls move between messages or sentences, pause reading, change its rate and stop it. Select the image to enlarge.
### Translate a message You can translate the text of a message into another language. This feature translates written message text only. It does not transcribe voice messages or other audio. 1. Touch and hold the message, then tap **Translate** to open the translation form. 2. Choose **Detect language** to let the app identify the original language, or choose a specific **Source language**. 3. Choose a **Target language**, then tap **Translate**. When the translation appears, tap **Show original** to see the original text. Tap **Show translation** to switch back. If translation is unavailable or fails, see [Translate messages](/docs/settings/android/translation) in the Settings guide to install a translation provider and fix problems. ## Create and vote in a poll > Polls are not anonymous, and every group member can see who chose each option. 1. In a conversation, tap **Add attachment**, then **Create poll**. 2. Enter a question and between 2 and 10 options, making each option different. 3. Choose **Single choice** for one answer or **Multiple choice** for several answers. 4. Under **Poll closes**, choose **No deadline**, a preset, or **Custom time**. A custom time can be anywhere from 1 second to 30 days. 5. Tap **Post poll**. Tap an option in the poll to send your vote right away. In a **Single choice** poll, tapping a different option replaces your previous choice. In a **Multiple choice** poll, tapping an option selects or deselects it, but you can't remove your last remaining choice. Tap **View votes** to see who chose each option. A closed poll no longer accepts votes. ## Act on a message Touch and hold a message to open **Message actions**. The list depends on the message type and its state as well as your role, so you only see actions that apply. They can include: - **Reply**: your next message quotes this one. - **React**: tap a reaction, or tap **Open emoji picker** and use **Search emoji**; **Configure Reactions** changes your quick reactions. - **Edit**: the composer shows **Edit message**, where you change the text and tap **Send**, or tap **Cancel edit** to stop. Edited messages show **edited**, and **Edit history** lists the **Original** and each **Revision**. - **Copy**, **Select text**, **Share**, and **Save**. - **Forward**: in **Forward to**, find chats with **Search chats** or **Recent chats**, or switch to **Select by folder**. Pick one or more chats, then tap **Forward**. Progress shows as, for example, **Forwarded to 2 of 3 chats**, where you can **Retry** or **Cancel**, or **Dismiss** the progress message. If an attachment has to finish uploading or be downloaded first, the action tells you. - **Keep on screen**: pins the message as a **Kept on screen** card. **Kept message options** include **Go to Message**, **Move to top**, **Move to bottom**, **Move to other side**, **Remove this message**, and **Clear all kept messages**. - **Info**: opens **Message Details**, which shows **Status**, **Sent**, **Received**, **Disappears**, and **Reactions**, plus **Copy Message ID** and **Copy Sender Public Key**. - **Read Aloud** (with a code-reading option listed right after it) and **Translate**. Voice and translation options are in [Settings](/docs/settings/android). Long messages show **Read More**, and the full-screen view offers **Reply**, **React**, **Copy text**, and **Delete**. ## Select several messages Choose **Select**, then tap more messages to add them. The **Select messages** bar can offer **Reply**, **Info**, **Copy**, **Forward**, **Save**, and **Delete selected messages**. If **Forward unavailable** appears, it gives the reason, and tapping **Close** stops selecting. ## Removing messages > **Before you delete:** deleting for everyone can't be undone, and it can't remove copies that others have already saved or forwarded, or captured. Disappearing messages have the same limits. 1. Choose **Delete** on the message you want to remove to open the delete prompt. 2. Tap **Delete for me** to remove it from this device only, or tap **Delete for everyone**; group admins may see **Delete message from** *name*, which removes it for everyone in the group. Deleted messages show **You deleted this message.** or **An admin deleted this message.** ## Report a message in a group > Your report goes to the group's admins, encrypted like any other message, and they will see who reported it. Choose **Report**, add a note for the admins if you want, then tap **Send report**. If the chat is offline, the report is saved and sent once it reconnects. ## Troubleshooting - **Send failed** or **This message didn't reach the group**: tap **Retry**, or tap **Discard failed message**. - Search: **No matches** means you should check the spelling, and after **Couldn't verify this address.** you can tap **Retry**. **Some network results may be missing.** means the list may not be complete. - **Couldn't start chat**: check your connection and try again; **Copy** copies the error details. - If you blocked the person, tap **Unblock** to message them again. - A notice can replace the composer when you're no longer a member or the group was disbanded. It also appears while a group is temporarily frozen as White Noise repairs it. - Group event rows: tap **Show details** or **Hide details**. To remove a row, use **Message actions** and tap **Delete for me**. ## Related - [Media and downloads](/docs/using/media/android) - [Groups](/docs/using/groups/android) - [Messages on iOS](/docs/using/messages/ios) Source: https://www.whitenoise.chat/docs/using/messages/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Messages Start chats and manage the messages in a conversation, including voice messages and polls. ## Start a chat 1. In the chat list, tap **New Message** to open the new chat screen. 2. Search for a person or tap **Scan QR Code**, and note that an address that has been confirmed shows **Verified**. 3. Choose the person, and if you already have chats with them, either pick one to continue or tap **Start new conversation**. A new chat shows **Send the first message to get started.** In a group that shows **Only you are here**, tap **Add members**. If someone isn't on White Noise yet, tap **Invite to White Noise**, then **Share Invite**. ## Write and send Type in the composer and send. To reply, choose **Reply** from the message's actions; a reply preview appears above the composer, and **Cancel reply** removes it. For photos, video, GIFs, and files, see [Media and downloads](/docs/using/media/ios). ### Record a voice message 1. Touch and hold **Voice message**; recording starts after a short hold, and a quick tap doesn't start recording. 2. Release to add the recording to your draft. For a longer recording, drag up while holding to lock it, then tap **Finish recording** when you're done, and the recording is added to your draft. 3. Listen back before you send, and tap **Cancel recording** to discard a recording in progress or **Remove attachment** to drop a finished recording before sending. ## Message actions Touch and hold a message to open its actions. The list depends on the message and its state as well as your role, so you only see actions that apply. They can include: - **React**: tap one of your quick reactions, or tap **More reactions**. In **Customize reactions**, tap a reaction to replace it; these six appear first in message actions. **Reset** restores the defaults, and **Done** saves your choices. - **Reply** adds a reply preview to the composer, and **Copy** copies the message text. - **Edit**: change the text and tap **Save**, after which the message keeps an **Edit history** with the **Original** and **Current** versions. - **Forward**: pick a chat to send a copy to, and tap **Retry** if chats don't load. - **Message info**: shows **Status**, **Sent**, **Received**, and **Expires**, along with the message's **Reactions**. With several messages selected, **Delete selected messages** and **Copy selected messages** are available, and **Forward selected messages** sends them to another chat. Tapping a link in a message opens a sheet of options, so check where the link goes before you open it; **Cancel** closes the sheet. ## Create a poll > **Before you send or vote:** votes aren't anonymous, and every group member can see who voted for each option. 1. Open **New Poll** from the composer to start a poll in this chat. 2. Enter a **Question**, then tap **Add Option** once for each choice you want to offer. 3. Set **Allow Multiple Answers** and **Ends** to suit the poll, then tap **Send**. **Votes** lists who chose each option. It shows **No votes yet** until someone votes, and **Poll unavailable** if the poll was deleted. ## Report a message Choose **Report** in the message actions. Pick a **Reason** and add an **Explanation (optional)**, then review the destination notice before tapping **Report Message**. > In a group, members can read your report and explanation. When **Send to White Noise** is available, it starts on: turn it off if you want to leave out the team copy. A team report includes your report and the sender's public key; the message itself is not shared with the team, and the sender is not notified. The available destinations depend on the conversation and your role. In a direct chat, a report can go to the White Noise team without a group copy. Read the notice on the form. **Saved and waiting to send.** or **Saved; delivery confirmation is pending.** means delivery is unfinished; follow the screen's instructions before submitting again. Group admins review group reports in [Moderation](/docs/using/groups/ios#review-group-reports). A message's **Reports** section shows the reports you are allowed to read; **Retry** reloads it and **Load more** shows more entries. ## Delete a message > **Before you delete:** removing a message for everyone can't erase copies others have already saved or forwarded, or captured. **Older clients may retain this message.** Expiring messages have the same limits. The delete prompt asks whether to remove the message from this device only or for everyone. Some messages can only be removed from this device, while group admins can remove a message for everyone. ## When things go wrong - **Not delivered. Tap for options.**: tap the message, then **Try Again**; **Delete** discards the unsent message. - Draft conflict: the saved draft changed while you were typing, and your text is kept. Choose **Keep my draft**, or tap **Use saved draft** to replace your text. - **You blocked this user. Unblock them to send messages.**: tap **Unblock**, or tap **View Profile**. - **Couldn't load conversation**: tap **Retry**. - **Couldn't load reactions** or **Couldn't load votes**: tap **Retry** to load them again. ## Related - [Media and downloads](/docs/using/media/ios) - [Groups](/docs/using/groups/ios) - [Messages on Android](/docs/using/messages/android) Source: https://www.whitenoise.chat/docs/using/media/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Media and downloads Send photos, videos, files, and voice messages, view what you receive, and choose what downloads automatically. ## Before you share - Photos always have location and device details removed. Videos and files are sent unchanged, along with any location or device details stored in them. - **Share** and **Open in another app** give the content you choose to that app. - GIFs marked **via GIPHY** are loaded from GIPHY when you download them. ## Send attachments from the composer
Attachment menu with Camera, Photos and videos, Files, Location, Contact, Device contact and Create poll.
Add attachment opens choices for media, files, location and contacts, plus Create poll. Select the image to enlarge.
1. In the composer, tap **Add attachment**, then choose **Camera** to take something new or pick existing items from **Photos and videos** or **Files**. 2. Review the preview, where you can: - Write a caption in **Add a caption…** if you want text alongside the media. - Tap **Add more** to pick from **Photo library** or **Document**. - Mark each item **Included** or **Excluded**, and check its **Send position**. - Play a video with **Play**, **Back 10 seconds**, **Forward 10 seconds**, **Playback Speed**, and **Mute**. - Tap **Remove attachment** to drop an item. 3. Tap **Send** and watch progress move from **Preparing** and **Encrypting** to **Uploading**; if you see **Upload failed**, tap **Retry**. ### Photo editing In the preview, tap **Edit photo** to open the editor: - **Crop**: drag the handles, or choose **Free**, **1:1**, **4:3**, **3:4**, **16:9**, or **9:16**. **Adjust crop** lets you set the edges precisely. - **Rotate clockwise 90 degrees**. - **Draw**: pick a colour (**Red**, **Yellow**, **Green**, **Blue**, **White**) and a size from **Small** to **Extra large**. **Erase** removes drawing marks only. - **Undo** and **Redo** step through your edits, while **Reset** starts over. - **Photo quality**: **Low**, **Standard**, **High**, or **Original**. Tap **Save** when you're finished. Edited photos use High quality, and the original image is kept for further editing. Closing the editor with unsaved changes asks **Discard changes?**, and **Keep editing** lets you continue. If you see **This image cannot be edited safely.**, send the photo without editing it. ## Voice messages
Message composer with separate microphone and voice-waveform controls.
Tap the microphone to dictate text; hold the waveform control to record a voice message. Select the image to enlarge.
Voice messages send audio, while **Dictate text** sends text instead (see [Messages](/docs/using/messages/android)). 1. Touch and hold **Hold to record voice message** to start recording. 2. Release to review, or slide off to cancel; while the recording is **Locked**, tap **Stop recording** when you're done. 3. In **Review voice message**, tap **Play voice message** to listen back, then tap **Send** or **Record again**, or **Discard** the recording. If you see **Recording unavailable**, tap **Record again**. ## Viewing and saving received media - Tap **Tap to download** on media that hasn't downloaded yet, then tap it to open. The full-screen viewer shows **Media 1 of 3** and offers **Save**, **Share**, **Forward message**, **Go to message**, and **More options**. Group admins may also see **Set as group picture**. - Voice messages: **Play voice message**, with an adjustable playback speed. - Files: tap **Open**. If you see **No app installed to open this file**, save the file instead. Text files open in a reader with **Read Aloud**, **Copy text**, **Save**, and **Open in another app**. - **Too large to preview**: save or share the file to view it in another app. - APK files: only install them from a source you trust. If you see **This build can't install APK attachments.**, save the file and open it from a trusted installer. ## Browse shared media Open a conversation’s details and find **Shared in Chat**. Choose **Photos and videos**, **Documents** or **Voice**; **Links** appears when links are available. Photos and videos can be filtered by **All**, **Images** or **Videos**.
Shared in Chat categories for photos and videos, links, documents and voice.
Open a shared-content category from the conversation details. Links appear when available. Select the image to enlarge.
Use **Load more** to browse older attachments when offered, or **Retry** after a loading failure. A partial or loading result means more history may remain. Open an item to view or play it; opening an external link contacts that site. ## Download controls While a download is running, tap **Cancel download**. After **Download cancelled. Tap to download again** or **Tap to retry**, tap the item again. The labels **Queued for download** and **Download paused** come from your Data Usage settings, as does **Download blocked by policy**. ## Data Usage settings
Android Data Usage settings for photos, videos, audio and files.
Choose automatic-download rules for each media type. The displayed values illustrate one profile’s settings. Select the image to enlarge.
Open **Settings**, then **Data Usage**. - **Automatic downloads**: for **Photos**, **Audio**, **Videos**, and **Files**, choose which networks are allowed (**Wi-Fi**, **Mobile data**, **Roaming**, or **Metered network**), then tap **Done**. A download starts automatically only if every rule that matches your connection allows it. **Reset download settings** restores the default rules for all types. - **Download queue**: **Stop automatic downloads** clears waiting automatic downloads for this profile, while downloads you started yourself keep going. **Restart automatic downloads** resumes the queue. - **Sent media**: **Media quality** sets the size of new photos and voice notes you record: Low (about 150 KB per photo), Standard (about 500 KB), High (about 1.5 MB), or Original (full resolution). ## Related - [Messages](/docs/using/messages/android) - [Media and downloads on iOS](/docs/using/media/ios) Source: https://www.whitenoise.chat/docs/using/media/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Media and downloads Send photos, videos, voice messages, and GIFs, view what you receive, and control downloads and storage. ## Before you share - Identifying photo metadata, such as location, is always removed before sending. Check videos and files for embedded details before you send them. - GIF search sends your search and IP address to GIPHY. Opening a received GIF also contacts GIPHY. - Sharing media to another app gives that app the content you choose. ## Take a photo or video 1. Open the camera from the message composer in the conversation where you want to share the capture. 2. Tap for a photo, or hold for video. Video includes sound when microphone access is allowed. Otherwise, tap **Videos record without sound** to open Settings and allow microphone access. **Switch Camera** changes cameras, and **Close Camera** leaves the camera. 3. The capture appears in your draft. Tap it to preview it, or tap **Remove attachment** to drop it. Then send. If you see **Camera Access Is Off**, tap **Open Settings**, allow camera access for White Noise, and return. ## Add a GIF or other attachment Use the composer's attachment controls. In GIF search (**Powered by** GIPHY), the privacy notice above appears before you search. **Cancel** closes the search. Attachments wait in your draft until you send. Tap **Remove attachment** to drop one. ## Record a voice message 1. Touch and hold **Voice message** until recording starts; a quick tap leaves the recorder idle. 2. Release to add the recording to your draft. For a longer recording, drag up while holding to lock it, then tap **Finish recording** when done. 3. Review the draft before sending, or use **Remove attachment** to discard the finished recording. You can also discard a recording in progress with **Cancel recording**. ## View, play, and save media - Tap media in a message to open it full screen. Use **Save**, **Go to Message**, or **More** for other actions. - Videos and voice messages have a **Playback speed** control. - For files, tap **Open attachment**. - If media doesn't load, use its **Retry** action to try loading that item again. To retry an unsent message, tap its delivery warning and choose **Try Again** from the options. Choose **Delete** to discard that unsent message instead. ## Browse shared media Open the conversation details and, under **Shared in Chat**, choose **Photos & Videos**, **Links** or **Documents**. The **Shared Media** screen has **Media**, **Voice**, **Files** and **Links** views. Open an item to view or play it. Use **Refresh**, **Retry** after a loading error, or **Load more** when more items are available. ## Manage a single download Open **Message info** for the message. Under **Downloads**: - **Cancel download** stops a download in progress. - **Download again** retries it. - **Remove download** deletes the downloaded file from this device. It doesn't affect anyone else's copy. ## Data Usage settings Open **Settings**, then **Data Usage**. - **Auto-Download**: choose which media downloads automatically. Other media shows a download button in the conversation. **Reset Auto-Download Settings** restores the defaults. - **Remote Media**: when this is on, opening a conversation can tell GIPHY your IP address and which GIF was requested. When it's off, received GIFs load only when you tap them. - **Sent Media**: opens **Sent Media Quality**. Under **Photos and Videos**, higher quality uses more data. ## Download storage On the **Download Storage** screen, set limits for this profile and tap **Save**. When storage is full, downloads pause and existing files are kept. If the screen doesn't load, tap **Retry**. ## Related - [Messages](/docs/using/messages/ios) - [Notifications on iOS](/docs/using/notifications/ios) - [Media and downloads on Android](/docs/using/media/android) Source: https://www.whitenoise.chat/docs/using/notifications/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Notifications Set how White Noise delivers alerts and check the Android settings that can block or delay them. Open **Settings**, then **Notifications**. ## Allow notifications 1. Tap **Allow notifications**. 2. Accept the Android permission prompt. Expected result: under **Device status**, **Notification permission** shows **Allowed**. If you decline, White Noise shows **Notification permission denied**. When the screen shows **Notifications are off**, turn notifications on for White Noise in Android Settings, then return to this screen.
Notification settings with Show notification previews outlined.
Show notification previews controls whether alerts include names and message content. Select the image to enlarge.
## Choose a delivery method Under **Delivery**: - **Push notifications** wakes White Noise briefly when new activity may be available, then checks securely for messages. - **Local notifications** keeps a persistent connection while notifications are enabled. Push can be unavailable. The row explains why: the build has no push server configured, the device lacks compatible Google Play services, or Firebase could not initialize. Use **Local notifications** in those cases. ## Hide names and message content Turn off **Show notification previews** to hide names and message content in notifications. This applies to all accounts on the device. If saving fails, a **Retry** row appears with the note that changes may be lost after restarting. Tap **Retry** until it disappears. ## Check device status **Device status** shows two items: - **Notification permission**: **Allowed** or **Blocked**. Alerts appear only while it is allowed. - **Battery policy**: **Optimized**, **Unrestricted**, **Restricted** or **Unavailable**. Battery policy may delay background delivery with either delivery method. Tap an item to open the matching Android settings. If White Noise reports **Couldn't open notification settings**, open Android Settings and find White Noise yourself. The status refreshes when you come back. ## Notification categories White Noise sorts alerts into categories: Direct messages, Group messages, Mentions, Reactions, Invites, Group membership changes, Agent activity, App updates and Notification summary. Android controls sound, vibration and importance for each one. Adjust them in Android's notification settings for White Noise. ## Related - [Media and downloads on Android](/docs/using/media/android) - [Notifications on iOS](/docs/using/notifications/ios) Source: https://www.whitenoise.chat/docs/using/notifications/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Notifications Allow alerts, choose how White Noise checks for messages, and decide what appears on the Lock Screen. Open **Settings**, then **Notifications**. ## Allow notifications 1. In the **Status** section, tap **Allow Notifications**. 2. Accept the iOS permission prompt. Expected result: the delivery options become available. If the screen shows **Notifications are off**, tap **Open Settings**, turn on notifications for White Noise in iOS Settings, then return. If **Try Again** appears under **Status**, tap it to check once more. ## Choose how messages arrive - **Local Notifications** creates message notifications on this iPhone. With Native Push off, delivery may wait until White Noise is active. - **Native Push** uses a generic wake-up signal so White Noise can check for new messages in the background. Message details stay on this iPhone. To be alerted while White Noise is in the background, turn on both toggles. ## Mentions in muted chats With **Mentions in Muted Chats** on, mentions of you still notify in muted chats, including chats set to **Nothing**. The setting applies to all profiles on this device. Turn it off to keep muted chats fully silent. ## Lock Screen previews Under **Preview**, use **Notification Preview** to choose how much message information appears on the Lock Screen. Pick a smaller preview if other people can see your phone. ## Developer tools Some builds show a **Developer** section with **Request APNS Token**, **Refresh APNS Token** and **Sync Native Registration**. These tools are for diagnosing push registration. Ordinary notification setup needs only the toggles above. ## If notifications are late or missing 1. Confirm notifications are allowed for White Noise in iOS Settings. 2. Check that **Local Notifications** is on. 3. Turn on **Native Push** so checks can run in the background. 4. Open White Noise. Messages that were waiting arrive while the app is active. ## Related - [Media and downloads on iOS](/docs/using/media/ios) - [Notifications on Android](/docs/using/notifications/android) Source: https://www.whitenoise.chat/docs/using/recovery/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Back up and recover your account Your private key is how you sign in to this profile again, and only you hold it. White Noise has no way to recover it for you, so back it up before you sign out, wipe an account, or change phones. ## What a key backup restores A private key backup restores your identity: your profile and the ability to sign in as yourself. Message history and group encryption (MLS) state live on the device where they were created and stay out of the backup. If you move to a new phone with only your key, your identity moves with you and your conversations remain on the old device. To rejoin groups from a new device, ask members to invite you again. ## Encrypted backup import White Noise exports identity backups as NIP-49 `ncryptsec1` strings protected by your passphrase. The current sign-in screens require a decrypted private key, shown as `nsec` in these guides. Before you delete an identity or its app data, keep the existing profile signed in on its device and keep the `ncryptsec1` backup and its passphrase available. Ask the runtime or app maintainers for a trusted method to decrypt NIP-49 locally, and confirm it produces your `nsec` before removing anything. Keep the key and passphrase on devices you trust; avoid online converters and web uploads. ## Back up your private key
Encrypted Private Key dialog with empty password and confirmation fields.
Use a long, unique password and confirm it before exporting your encrypted private key. Select the image to enlarge.
1. Open Settings, then **Profile Keys**. 2. Under **Export**, tap **Export Encrypted Private Key**. 3. Enter a **Password** and repeat it in **Confirm password**. Choose a long, unique password; the **Strength** meter rates it from Too short to Strong passphrase. 4. Tap **Export** to save the backup, or tap **View backup** to see it first. 5. Finish the save in the file location or sharing app you picked. Expected result: an encrypted backup stored in the destination you chose. Tapping **Export** starts the process, and your backup exists only once that destination has saved it, so check it’s there. Keep the password somewhere separate from the backup, because you need both to restore. The **Your encrypted backup** preview hides after 30 seconds or when you leave the screen. **Export Private Key** produces the unencrypted key. Anyone who has it can use your profile, and sharing it exposes it to the app you choose. Use the encrypted backup, or keep the raw key only in a trusted password manager. If Profile Keys shows **Signed in with Amber**, Amber holds this profile’s private key. Manage backups in Amber. ### If an export stops - **Export expired**: return to Profile Keys and start again. The export ended before any key data was written. - If saving to a file fails, pick another location and try again. - If sharing fails to open, choose another app or save the backup to a file instead. ## Sign out On Profile Keys, under **Account session**, tap **Sign Out**. Sign-out keeps this account’s local data on the device, including groups, message history, drafts, and this profile's saved sign-in information. Notifications for this account stop while you’re signed out. To block new group invitations as well, turn on **Remove invitation keys from relays**. Sign back in from the account picker to return. A notice that some invitation keys may still be on relays means sign-out finished while relay cleanup is incomplete. ## Sign out and wipe > **Warning:** **Sign Out & Wipe** permanently deletes this account’s messages and group encryption data, removes its sign-in key from this device, and removes its published invitation keys from relays. You can sign in again later with the same key. Past groups, messages, and media are gone from this device for good, and rejoining groups requires new invitations. 1. Back up your private key first, and confirm the backup is saved. 2. Under **Account session**, tap **Sign Out & Wipe** and review **What gets destroyed**. 3. Tap **Sign Out & Wipe** to continue. 4. Type WIPE in **Confirmation**, then tap **Wipe**. Expected result: progress moves from leaving groups and removing invitation keys through to wiping local data, ending at **Account wiped from this device**. If the outcome shows **Local data wipe incomplete** or **Couldn’t wipe account**, read the outcome list and write down what it reports before you tap **Close**. Use a recovery action only if the app explicitly offers one. Then contact support with those details. Leave reinstalling, clearing app storage, or starting the wipe again until support advises it, since repeating destructive steps can make the remaining state harder to sort out. ## Related - [Privacy and security settings](/docs/using/privacy/android) Source: https://www.whitenoise.chat/docs/using/recovery/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Back up and recover your account Your private key (nsec) is how you get back into this profile. Back it up before you sign out, delete the profile, or move to another iPhone. ## What a key backup restores A private key backup restores your identity: your profile and the ability to sign in as yourself. Message history and group encryption (MLS) state live on the device where they were created and stay out of the backup. If you move to a new iPhone with only your key, your identity moves with you and your conversations remain on the old device. To rejoin groups from a new device, ask members to invite you again. ## Encrypted backup import White Noise exports identity backups as NIP-49 `ncryptsec1` strings protected by your passphrase. The current sign-in screens require a decrypted private key, shown as `nsec` in these guides. Before you delete an identity or its app data, keep the existing profile signed in on its device and keep the `ncryptsec1` backup and its passphrase available. Ask the runtime or app maintainers for a trusted method to decrypt NIP-49 locally, and confirm it produces your `nsec` before removing anything. Keep the key and passphrase on devices you trust; avoid online converters and web uploads. ## Back up your private key 1. Open Settings, then **Profile Keys**. 2. Under **Export**, tap **Export Encrypted Private Key**. 3. Enter a passphrase and tap **Export**. 4. The share sheet opens with your encrypted backup as ncryptsec1 text. Pick a safe destination, such as a password manager, and finish saving it there. Expected result: the ncryptsec1 text is stored in the place you picked. Tapping **Export** only hands the text to the share sheet, so open the destination and check the backup arrived. Marmot never stores the passphrase. Keep it safe and separate from the backup, because you need both to restore. > **Warning:** **Export Private Key** reveals your private key in plaintext and permanently marks it as handled insecurely. Use the encrypted export unless you need the raw nsec. Profile Keys also shows your **Public Key** as Hex and npub. Share it so people can find and connect with you. Under **Key Status**, Online means this account’s runtime worker is active and subscribed to its relays; it reflects relay activity, separate from key access. ## Sign in with your key 1. On the **Sign In** screen, paste your key into **Private Key**. It starts with nsec. 2. Tap **Sign In**. If the app reports the key as invalid, check that you copied the whole key, then try again. ### If setup was interrupted Two recovery actions can appear here, and they work differently: - **Recover Identity** covers a legacy case: an earlier sign-in that stopped before setup finished. It removes that incomplete local setup and retries. A KeyPackage from the failed attempt may remain published on relays. - **Recover Setup** appears when a saved setup checkpoint can’t be read. It resets that checkpoint and returns you to signing in. Enter your key and tap **Sign In** again yourself to start a fresh setup. ## Sign out In Settings, tap **Sign Out**. This profile and its local data stay on this device. ## Delete a profile > **Warning:** **Delete Profile** permanently removes this profile from this device. Signing back in with the same key restores your identity only: past groups, messages, and media on this device are gone, and you’ll need to be re-invited to groups. Encrypted messages already delivered to other members, and copies kept by independent relays, are beyond White Noise’s reach to delete. 1. Back up your private key and confirm the backup is saved. 2. In Settings, tap **Delete Profile**. 3. Review **What gets destroyed**. 4. Under **Enter Profile Name**, type the profile name exactly, then confirm. Expected result: the profile is signed out and its local data is removed from this iPhone. To remove every profile and all White Noise data at once, use **Erase App Data**, described in Privacy and security settings. ## Related - [Privacy and security settings](/docs/using/privacy/ios) Source: https://www.whitenoise.chat/docs/using/privacy/android Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Privacy and security settings These controls limit what other people and apps can see on your phone. Open Settings, then **Privacy & Security**. ## Device protection
Android device protection controls, with authentication unavailable until a screen lock is set.
Device protection includes screen security, keyboard privacy and device authentication. Set a device screen lock before enabling authentication. Select the image to enlarge.
- **Screen security** blocks screenshots and hides previews in Recents. - **Incognito keyboard** asks your keyboard to skip learning from what you type in White Noise. Keyboards may ignore this request, so treat it as best effort. - **Require device authentication** asks for your device screen lock when you return to White Noise after the **Auto-lock** period has passed. - **Auto-lock** sets the grace period before White Noise locks. ### Turn on device authentication 1. Under **Device protection**, find **Require device authentication**. 2. If it says **Set a device screen lock first**, tap **Open Android security settings**, set a screen lock, and come back to White Noise. 3. Turn the setting on, then choose an **Auto-lock** period that suits you. Expected result: once you’ve been away longer than the Auto-lock period, White Noise asks for your screen lock on return. A quick switch within that period may open the app without a prompt. ## Blocked users Blocking stops a person from messaging you directly. Shared groups keep working, and group history stays on this device. 1. Under **Blocked users**, tap **Blocked users**. 2. Tap a person, then **Unblock**. Sometimes White Noise saves your request before it can confirm it; repeating the same action finishes it. When the block list is unavailable, try again later. A failed change can be retried. ## Default disappearing messages Under **Message privacy**, **Default disappearing messages** sets how long messages remain in chats and groups this profile starts. It applies to new conversations only, and you can change each conversation later. > **Warning:** Disappearing messages limit how long messages stay in White Noise. Recipients can still keep copies, for example with screenshots or another camera, and expiry leaves anything already saved untouched. ## Diagnostics Under **Diagnostics**, open **Diagnostics & Improvements** to control optional usage sharing and technical logs for this device. The row summary shows On, Usage, Logs, or Off. ## Related - [Back up and recover your account](/docs/using/recovery/android) Source: https://www.whitenoise.chat/docs/using/privacy/ios Platform: ios Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"} # Privacy and security settings Most of these controls are in Settings under **Privacy & Security**. ## App security - **Hide Screen in App Switcher** hides app content in the app switcher and while iOS detects screen recording or sharing. Regular screenshots are still possible. - **App lock** asks for Face ID, Touch ID or your iPhone passcode when you return. Set an iPhone passcode first; the toggle names the method available on your phone. - **Auto-Lock** sets when White Noise locks. See [iOS settings](/docs/settings/ios#privacy--security) for the available delays. ## Diagnostics Open **Diagnostics & Improvements** to configure or clear diagnostic logs on this device. ## Blocked users Blocking hides a person’s messages and stops you sending to them in direct chats. Existing history is kept. 1. On **Blocked Users**, tap **Unblock** next to the person. 2. Confirm **Unblock this user?** Expected result: their messages appear again and you can send to them. ## Notifications and link previews - In **Notifications**, **Native Push** uses a generic wake-up signal to check for new messages. Message details stay on this iPhone. With only **Local Notifications**, delivery may wait until White Noise is active. - In **Appearance**, link previews show a link’s title and image. Loading a preview reveals your IP address to the linked website and to the site hosting its image. ## Your profile is public Anyone can see your name, photo, and bio, including people using other apps on the same network. A nickname works fine. Photos may stay online after you remove them. ## Erase app data > **Warning:** Erase App Data signs out every profile and permanently removes all White Noise data from this iPhone, including chats, media, drafts, keys, and settings. This is irreversible. Back up each profile’s private key first and confirm each backup is saved. The current sign-in screens require a decrypted private key, shown as `nsec` in these guides. Before erasing, follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import) and confirm a trusted local decryption method produces each profile’s `nsec` while its existing profile stays signed in. Keep each encrypted backup and its passphrase available. 1. In **Privacy & Security**, under **Device Data**, tap **Erase App Data**. 2. Enter the three words shown, exactly as written. 3. Confirm. If you see “Erasure didn’t finish. Some data may remain,” keep that message on screen and note its details. If the screen offers a retry or recovery action, use that action. Otherwise, contact support with the details before taking other steps, such as deleting the app. ## Related - [Back up and recover your account](/docs/using/recovery/ios) Source: https://www.whitenoise.chat/docs/troubleshooting/access Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Account access **Outcome:** You can use your White Noise identity again, and you understand exactly what your private key restores. **Prerequisites:** The device that holds the account, or a secure backup of your private key. **Before you act:** White Noise cannot reset or recover your private key, so keep your backup secure. Your key restores your identity only. Message history and group encryption state live on the device that holds them, and reinstalling the app or clearing its data deletes the conversations stored on that device. For an encrypted backup, first follow [Encrypted backup import](/docs/settings/identity#encrypted-backup-import). ## Diagnose 1. Start on the device that already has the account. If the app opens but misbehaves, restart it and work through [Connection](/docs/troubleshooting/connection) before you change anything else. 2. Keep the existing installation. Conversation data lives on the device, so treat reinstalling or clearing storage as a last resort. 3. Moving to a new device? Import your private key there to keep the same identity, and expect to start fresh. Earlier conversations and their encryption state stay on the old device. Use the profile on one device; White Noise does not synchronize conversation history between installations. 4. If your device or key may have been stolen, treat the identity as compromised and warn your contacts through another trusted channel. Messages already stored on the stolen device remain there, because encryption cannot erase them. 5. Share only your public key (`npub`). Keep your private key out of chats and support requests, and keep it out of agent prompts as well. ## Expected result The account opens with the same public key. On a new installation, contacts may need to invite you to conversations again. ## Escalation If the account still fails to load, note your app version and platform. Copy the exact error label too, then follow [Report a problem](/docs/troubleshooting/report-problem). Before sharing screenshots, remove any keys and contact names. Remove message content as well. Source: https://www.whitenoise.chat/docs/troubleshooting/invitations Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Invitations **Outcome:** Both people see the conversation and can exchange messages. **Prerequisites:** White Noise installed for both people. You also need the other person's public key or profile link; their QR code works too. Your public key is safe to share. Keep your private key secret, including in conversations about troubleshooting. ## Diagnose 1. Confirm the identity. Compare the `npub` you entered with the one shown in the other person's profile, using a channel you trust. A single changed character points to a different account. 2. Ask the recipient to open White Noise and stay connected for a few minutes. An account has to publish the key material others need before anyone can invite it. 3. Check relays. Everyone in a conversation needs a shared way to exchange messages. If either of you uses a custom relay list, make sure you can both reach at least one relay in common. 4. Check both people’s invitation lists before starting another conversation. Use a retry action if White Noise offers one. Starting again can create a duplicate conversation. 5. For an agent, add the agent's public key in New Message. Send a short test message from the account you authorized during setup. If the agent stays silent, confirm the connector is running and that your account is on its allowed senders list. 6. If you were removed from a group, ask an admin to add you again. Messages sent while you were out stay out of your reach. ## Expected result The conversation appears for both people and a test message arrives. ## Escalation Record the app version and platform. Add the time of the invitation and any error label. Redact contacts' keys and names, then follow [Report a problem](/docs/troubleshooting/report-problem). Source: https://www.whitenoise.chat/docs/troubleshooting/delivery Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Message delivery **Outcome:** You can trace a message from your device to its recipient and find the point where it stalled. The status on your device tracks local send progress only. Only the recipient can confirm that the message was fetched and decrypted, and the same applies to whether they read it. ## Diagnose 1. Check the status on your device. A message stuck as pending usually points to a connection or relay problem, so work through [Connection](/docs/troubleshooting/connection) first. 2. Ask the recipient whether it arrived, either in the conversation or through another trusted channel. Delivery slows down while a participant is offline or while the participants lack a relay they can all reach. 3. Before resending, find out whether the original arrived, since duplicates clutter a group and can make an agent repeat an action. Keep the exact text of the message along with its error label. 4. Confirm the recipient is still a member of the group. Once a removal takes effect, the removed member loses the ability to decrypt new messages. 5. For an agent, send a harmless roundtrip, such as asking it to reply with a fixed word. Check that the answer comes from the expected runtime and account, and that it matches the expected group and project. Give each environment a dedicated group of its own. 6. If an agent task may have run partway, check its external results before asking it to try again. Look at changed files and commits, along with any services the task touched. ## Expected result The recipient confirms receipt, or you have identified the participant or relay that fails to connect. ## Escalation Collect your version and platform. Add timestamps and error labels, then follow [Report a problem](/docs/troubleshooting/report-problem). **Before sharing logs:** group diagnostic logs are opt-in and include group and message identifiers. On iOS and Android, turning on log sharing automatically uploads eligible logs to IPF. Ask other participants for consent before sharing logs or screenshots that reveal them. Source: https://www.whitenoise.chat/docs/troubleshooting/notifications Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Notifications **Outcome:** New messages trigger an alert while White Noise runs in the background. Notifications are alerts only. A missing alert does not mean a message failed, and an alert does not prove delivery. ## Diagnose 1. Open White Noise and look for the expected message. If it appears, focus on the alert settings below. If it is missing, check [message delivery](/docs/troubleshooting/delivery) too. 2. Make sure your operating system allows notifications for White Noise. You manage this permission in your device's system settings. 3. Check background conditions. Battery saving, data saving, focus modes and background app restrictions can delay or hide alerts. 4. Make sure the device stays connected in the background. VPNs and restrictive networks can block the services that alerts depend on. 5. Check the chat’s mute and mention settings. See Groups for [Android](/docs/using/groups/android#notifications-and-disappearing-messages) or [iOS](/docs/using/groups/ios#notifications-and-disappearing-messages). 6. Check the delivery options for [Android](/docs/using/notifications/android) or [iOS](/docs/using/notifications/ios). Push notifications have their own data flows, described in the [privacy policy](/privacy). 7. Keep your installation. Reinstalling to fix alerts can delete the conversations stored on the device. ## Expected result With the app in the background, a test message from a contact produces an alert, and the message is there when you open the app. ## Escalation Report the app version, platform, operating system version and any settings you changed. Hide message previews and contact names in screenshots. Source: https://www.whitenoise.chat/docs/troubleshooting/media Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Media and files **Outcome:** Attachments send and open correctly, and you handle received files safely. In encrypted conversations, media is encrypted before it is uploaded to media servers. Treat received attachments as untrusted, especially when an agent will process them. ## Diagnose 1. Retry with a small, common image. That tells you whether the problem is the original file or the connection. 2. Check your connection. Uploads need a reachable media server as well as relays. See [Connection](/docs/troubleshooting/connection). 3. A filename or preview can appear while the file is still on your device. Check upload and message status, then ask the recipient whether the attachment opens. 4. File support for agents varies by runtime and connector version. Read your runtime's connector guide and check file type, size and version before relying on it. The Claude Code setup starts with a text-only test, so confirm text works first. 5. **Before sending files to an agent:** the agent decrypts what it receives, and its model and tools then process the content under their own policies. A cloud model sends that content to its provider. Treat instructions found inside a file, repository or web page as data, not as requests from you. 6. Before resending a large file, confirm the first attempt failed. ## Expected result The recipient opens the file, or the agent describes its content accurately. ## Escalation Report the version, platform, file type, approximate size and error label. Share the attachment itself only with consent from everyone it concerns. Source: https://www.whitenoise.chat/docs/troubleshooting/connection Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Connection **Outcome:** White Noise reaches relays again, so messages can send and arrive. White Noise cannot guarantee connectivity. Network providers and governments can block servers or restrict internet access. Encryption protects message content, but relay operators can still see connection details such as your IP address. ## Diagnose 1. Check that the device has internet access by trying another app. 2. Switch networks, for example from Wi-Fi to mobile data, to see whether one network blocks relays. 3. If you use a VPN or proxy, test with it on and with it off, but only where that is safe for you. Some VPNs block relay connections, and some networks only work through one. 4. Review [relay settings](/docs/settings/relays) if invitations fail. Profile and inbox relay changes help people reach you, while existing conversations keep their current relays. Changing your account list alone does not reroute an existing group. 5. Running your own compatible Nostr relay gives you control of that server. Copies held on other relays stay outside your control. 6. For an agent, make sure the computer running the connector has network access and that the connector is running. ## Expected result Once the connection recovers, check pending messages and retry any marked as failed. Confirm delivery with the recipient; see [Delivery problems](/docs/troubleshooting/delivery). ## Escalation Report the version, platform, network type, whether a VPN was on and the relays involved. Relay addresses can reveal information about you, so share them only where you are comfortable doing so. Source: https://www.whitenoise.chat/docs/troubleshooting/report-problem Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Report a problem A good report describes what happened and where, then compares it with what you expected. It shares as little conversation data as possible. **Privacy first.** Screenshots and logs can expose your contacts' names and keys. Copied messages expose their words as well. Crop or redact other people's details, and ask them before sharing anything they wrote. Group diagnostic logs are a separate opt-in choice and include group and message identifiers. On iOS and Android, turning on log sharing uploads eligible logs to IPF automatically. ## Where to report Open **Settings > Chat with support** for help inside White Noise. For a reproducible bug, choose the affected project: - [Android issues](https://github.com/marmot-protocol/whitenoise-android/issues) - [iOS issues](https://github.com/marmot-protocol/whitenoise-ios/issues) - [Agent connector issues](https://github.com/marmot-protocol/mdk/issues) - [Website issues](https://github.com/marmot-protocol/whitenoise-web/issues) ## Android bug-report screen Open **Settings > Help > Report a bug**. First, White Noise shows a review screen explaining that nothing is attached: messages, media, contacts, profile details, keys and logs stay out of the form. Tap **Open GitHub** to open the public issue form, then review anything you add. If no browser is available, return to Help or try again after installing one. ## Before you report 1. Note your platform and device. Add your White Noise version too; [Compatibility](/docs/compatibility#find-your-version) explains where it appears. 2. Write down the steps that led to the problem and when it happened. Copy the exact error label as well, if one appeared. 3. Keep two kinds of status apart. A message marked as sent on your device has a local status that reflects your side only, so confirm receipt or reading by asking the recipient through another channel. 4. Check your connection with [Connection](/docs/troubleshooting/connection). A relay or VPN can block or delay traffic. Network providers can do the same, and White Noise relies on all of them for connectivity. 5. For missing notifications, confirm the operating system allows White Noise to notify you and to run in the background. Treat a notification as a convenience; delivery is confirmed by the recipient. ## Keep local data intact Clearing storage or resetting the app can remove the local state your conversations depend on, and reinstalling has the same effect. Your identity key alone does not restore MLS conversation history. Report the problem before trying any of these steps. ## Agent problems For a connected agent, include the runtime name (for example Hermes or Claude Code) and what the agent replied. Add connector errors with private content removed. Connector guides live in the MDK repository. ## Expected result Maintainers can reproduce or narrow the problem while your private conversations stay private. Source: https://www.whitenoise.chat/docs/agents/access Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"hostOS":["macOS","Linux"],"evidence":"source-reviewed runtime setup guides; runtime execution pending","guideSource":"2acf71acc07b3e514e6a50b5094362e66ba46820","connectorSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d"} # Agent access A connector lets an agent on your Mac or Linux computer read and answer White Noise messages. Plan its access before you approve installation. **What encryption covers.** Messages are encrypted between White Noise and the connector, so relays cannot read them. The connector then decrypts each message it receives. From that point your agent runtime, its model provider, tools and logging settings handle the content under their own policies. A cloud model stays a cloud model when you reach it through White Noise. Only a model running on your own computer keeps inference local. ## Prerequisites - White Noise on your phone and your account's public key (`npub`) - A working agent runtime, signed in, on a Mac or Linux computer. Windows support is not confirmed. ## Set access 1. Give the setup prompt only the `npub` of each account that should be allowed to message the agent. Keep this list as short as possible. 2. Read the installation plan the agent proposes. Check which files, directories, accounts and tools it will be able to use, and which host it runs on. 3. Approve only when that scope matches what you want the agent to do. 4. Treat received attachments, repository files and web pages as untrusted data. Instructions inside them can try to steer the agent. 5. From an authorized account, send a harmless test message. ## Expected result The agent replies to the authorized account, and its tool scope matches what you approved. The connector guide describes how allowed senders are configured. ## If access looks wrong Stop the connector before sending sensitive requests, then review the setup with the runtime's guide. See [Stop an agent](/docs/agents/stop). Source: https://www.whitenoise.chat/docs/agents/routing Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"hostOS":["macOS","Linux"],"evidence":"source-reviewed runtime setup guides; runtime execution pending","guideSource":"2acf71acc07b3e514e6a50b5094362e66ba46820","connectorSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d"} # Agent routing Before asking an agent to change files or act for you, confirm where your messages go. A wrong project directory or account can send work to the wrong place. ## Prerequisites - A connector installed and approved for your account - The agent's public key, added through New Message in White Noise ## Check the route 1. Open the conversation with the agent from the account you authorized during setup. 2. Choose the working location. With Codex, send a message containing the directory path, such as `/path/to/project`. With Claude Code, select a trusted project directory under your home folder. With OpenCode, choose the project directory you want it to use. Other runtimes follow their own guide. 3. Send a harmless roundtrip request, such as asking which runtime and directory it is using. Claude Code setup asks for a text-only test message. 4. Compare the reply with what you expect: runtime, computer, conversation and project. 5. Repeat the check after changing directory, conversation, account or connector settings. ## Expected result The agent answers in the same conversation and reports the runtime and project you chose. ## If the route is wrong - Stop sending task requests until the route is fixed. - Keep each conversation and project separate. Reusing another group's environment as a workaround can expose that group's files or context to the wrong people. - Recheck the setup against the runtime's guide in the MDK repository. - If replies never arrive, follow [Recover an agent](/docs/agents/recovery). Source: https://www.whitenoise.chat/docs/agents/files Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"hostOS":["macOS","Linux"],"evidence":"source-reviewed runtime setup guides; runtime execution pending","guideSource":"2acf71acc07b3e514e6a50b5094362e66ba46820","connectorSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d"} # Agent files Some connectors handle media, others are best used with text. Check support before relying on file exchange. **Before you share.** Media in encrypted conversations is encrypted before upload to media servers. After the connector decrypts a file, the agent's model, tools and logs may process or store it. Share only files you are comfortable giving to that runtime and its provider. ## Check support - Hermes and OpenClaw connectors list media support. - Claude Code setup uses a text-only test message. - For Codex, OpenCode and Pi, read the runtime's guide in the MDK repository. Support can change between connector versions, so check the guide for the version you installed. ## Send a file 1. Confirm the route with a text message first. See [Agent routing](/docs/agents/routing). 2. Check the file type and size against the runtime's guide. 3. Send the file and ask for a specific detail from its contents, such as a heading or a value. 4. Compare the answer with the file. ## Expected result The agent reports content that only appears inside the file. An upload status, or a reply that repeats the filename, does not show that the agent read the contents. ## Files the agent receives Treat attachments sent to the agent as untrusted data, including files from other group members. Text inside a document can contain instructions meant to redirect the agent. Review any action it proposes based on a file before approving it. ## If files fail Send the content as text when possible. Report the runtime, connector version, file type and size, with private content removed. Source: https://www.whitenoise.chat/docs/agents/recovery Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"hostOS":["macOS","Linux"],"evidence":"source-reviewed runtime setup guides; runtime execution pending","guideSource":"2acf71acc07b3e514e6a50b5094362e66ba46820","connectorSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d"} # Recover an agent When an agent stops replying or fails mid-task, an action may already have happened. Find out what happened before you retry. **Before retrying.** Repeating a request can repeat its effects, such as a second commit, message or purchase. Confirm the outcome of the first attempt first. ## Diagnose 1. Save the exact request you sent, the time, and any error the agent or connector showed. 2. Separate White Noise status from agent activity. A sent message on your phone shows local status, not that the connector received it. 3. On the computer, check that the agent runtime is running and still signed in. 4. If you use Hermes or OpenClaw, confirm the gateway was restarted as the guide instructs after installation or changes. 5. Check external effects directly: the project files, repository, or service the agent was using. 6. Check your network. A relay, VPN or provider can block or delay traffic. ## Retry safely 1. Note what completed and what did not. 2. Send a harmless test message and wait for a reply. See [Agent routing](/docs/agents/routing). 3. Ask for only the remaining steps, and name what is already done. ## Expected result The agent answers the test message, and the remaining work finishes without duplicates. ## Escalate If the connector still fails, follow the troubleshooting in the runtime's guide in the MDK repository. Avoid reinstalling or clearing state as a first step. Report the problem with your saved errors and private content removed. Source: https://www.whitenoise.chat/docs/agents/stop Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"hostOS":["macOS","Linux"],"evidence":"source-reviewed runtime setup guides; runtime execution pending","guideSource":"2acf71acc07b3e514e6a50b5094362e66ba46820","connectorSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d"} # Stop an agent There are three separate paths, and each one changes something different. Pick the one that fits your goal, or combine them. - **Pause** stops the connector. The agent keeps its group memberships and credentials. - **Remove from groups** ends the agent's access to new messages in those groups. - **Revoke access** retires the connector and the credentials it uses. ## Pause the agent 1. Stop the connector or gateway on the computer using its recorded launch method, such as its terminal session or service manager. 2. Send a harmless test message in a group the agent belongs to. **Expected result:** the stopped connector sends no reply. Group memberships and credentials stay in place, so you can start the connector again later. If replies keep coming, another instance may be running with the same identity. Check your other computers and processes for one, then see [Connection problems](/docs/troubleshooting/connection). ## Remove it from groups 1. Remove the agent from each group you want it to leave. Group admins can remove it directly; for any other group, ask one of its admins. 2. Stop starting new conversations with the agent's public key. **Expected result:** once the removal takes effect, the agent loses access to new messages in those groups. Removal applies only to messages sent after that point. Anything the agent already received stays with it, and so does anything it saved or logged. Changes it already made to files and repositories also stay in place, as do its actions in outside services. ## Revoke access 1. Use your saved installation plan to disable the connector's startup entry and remove its installed integration. For installation-specific removal steps, ask the installer or runtime maintainer. 2. Review the API keys and accounts the runtime uses with model providers and tools. Stopping the connector leaves these intact, so revoke or rotate them through each provider as needed. 3. Check the runtime's logs and stored data. Delete anything you want gone, following the runtime's own settings. **Expected result:** the connector is uninstalled from that computer, and only the credentials you chose to keep remain active. ## Clean up effects Review the agent's recent work. Revert its changes, or contact affected services directly. ## If compromise is suspected Stop the connector first, then revoke credentials. Tell affected group members through another trusted channel. To escalate, follow [Report a problem](/docs/troubleshooting/report-problem). Source: https://www.whitenoise.chat/docs/build/quickstart Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"mdkSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d","rustToolchain":"1.97.1","exampleCommand":"cargo test --locked -p cgka-engine --lib message_processor::store::tests","exampleResult":"3 passed; 0 failed","evidence":"local focused storage tests; full suite, network and device qualification pending","typescript":"marmot-ts alpha; execution qualification pending","protocolSource":"d181ce1c4661ca985e8fb12a48a962dbe76fec6c","typescriptSource":"74541744a26aadc1618e0a547ade078584bfa1cd"} # Build quickstart This quickstart gets you a pinned copy of the Marmot Development Kit (MDK) and runs one small local test group. It confirms that your toolchain can build and test part of the engine before you start on a client. ## Prerequisites - git - Rust 1.97.1, the version set in the toolchain file at the pinned commit ## Steps 1. Clone MDK and check out the pinned commit: ```sh git clone https://github.com/marmot-protocol/mdk.git cd mdk git checkout d20329e9ac6337294a9b4414a55f97bc76b6581d ``` 2. Run the focused storage tests: ```sh cargo test --locked -p cgka-engine --lib message_processor::store::tests ``` The `--locked` flag makes Cargo use the dependency versions in the committed lockfile. ## Expected result At this commit, the command ran 3 tests and 0 failed. That result covers a small group of engine storage tests and nothing more. It does not qualify the full test suite, network delivery, or any device. ## If it fails 1. Run `git rev-parse HEAD` and check that it prints the full commit shown above. 2. Run `rustc --version` and compare the result with 1.97.1. 3. Save the complete command output without editing it. 4. Open an issue in the MDK repository. Include the commit, your Rust version, your operating system and the output. The Contribute page lists what to remove before you post. ## Next steps For an app, start with `marmot-app`. Language bindings are in `marmot-uniffi`. For TypeScript there is marmot-ts, which is in alpha; its maintainers advise against using it in production. Read the client flow on the Build page before you choose a library. Source: https://www.whitenoise.chat/docs/build/state-and-errors Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"mdkSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d","rustToolchain":"1.97.1","exampleCommand":"cargo test --locked -p cgka-engine --lib message_processor::store::tests","exampleResult":"3 passed; 0 failed","evidence":"local focused storage tests; full suite, network and device qualification pending","typescript":"marmot-ts alpha; execution qualification pending","protocolSource":"d181ce1c4661ca985e8fb12a48a962dbe76fec6c","typescriptSource":"74541744a26aadc1618e0a547ade078584bfa1cd"} # State and errors A Marmot client stores local state so conversations can continue after a restart. That state holds the MLS group data your client needs to decrypt and send messages, so handle it with care when something breaks. ## What local state means - The identity key identifies the account. On its own it cannot restore message history or MLS group state. - Clearing storage or reinstalling can permanently remove conversations from that device. Keep both out of first-step troubleshooting. - Group changes can arrive out of order. Process them with the library's group and message operations so your state stays consistent with other members. ## Track status separately Show local send status and recipient status as two different things. When a relay accepts an event, that shows your client published it. It does not show that the recipient received, decrypted or read it. Push notifications depend on OS permission and background conditions, so they cannot prove delivery either. ## Diagnosing an error 1. Before you change anything, save the exact request, the error text, and the library version and commit. 2. Work out which layer failed: identity, invitation, group processing, storage or transport. 3. For transport errors, check whether the relays can be reached. Relays, VPNs and network providers can all block traffic. 4. If you are unsure whether something reached the network, such as a message or a group change, confirm that first. Check the relays or ask the recipient. 5. Retry only after you know the earlier attempt failed. Blind duplicate sends can cause repeated messages or conflicting group changes. ## Logs and screenshots Logs can contain other people's identifiers and content. Before you share a log, redact peer keys, group and message identifiers, and message text. Never include private keys. ## Escalation If state still looks inconsistent, open an issue in the library repository with the details you saved. Ask maintainers before you delete any local data. Source: https://www.whitenoise.chat/docs/build/compatibility Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"mdkSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d","rustToolchain":"1.97.1","exampleCommand":"cargo test --locked -p cgka-engine --lib message_processor::store::tests","exampleResult":"3 passed; 0 failed","evidence":"local focused storage tests; full suite, network and device qualification pending","typescript":"marmot-ts alpha; execution qualification pending","protocolSource":"d181ce1c4661ca985e8fb12a48a962dbe76fec6c","typescriptSource":"74541744a26aadc1618e0a547ade078584bfa1cd"} # Client compatibility Two Marmot clients can work together when they handle identities, invitations and group changes in the same way. The specification defines those rules and libraries implement them. Each library or app version may cover a different part of the specification. ## Before you claim compatibility 1. Write down the exact specification, library and app commits or versions you are testing. 2. Check identity. Accounts use Nostr public keys, and each client must verify that the account authorized every device's MLS membership key. 3. Check invitations. From each client, publish key material, send an invitation and accept one. 4. Check group changes. Add and remove members, and process updates that arrive out of order. 5. Check delivery across more than one relay. Marmot transport must not depend on a single server. 6. Send a harmless test message from each side. Judge each step by what the recipient sees, not by local send status. ## Expected result You end up with a written record of which flows worked between which versions. Claim compatibility only for those flows and versions. ## Known limits - Compatibility testing between MDK, marmot-ts and White Noise releases remains pending for these guides. - marmot-ts is in alpha. Check what it currently supports before you rely on it. - Linked-device support is still in development. Importing the same identity on another device does not sync history or encryption state. ## Escalation If two clients disagree about group state, save both clients' versions and errors. Then report it against the specification or the library, with steps to reproduce it. Source: https://www.whitenoise.chat/docs/build/contribute Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"mdkSource":"d20329e9ac6337294a9b4414a55f97bc76b6581d","rustToolchain":"1.97.1","exampleCommand":"cargo test --locked -p cgka-engine --lib message_processor::store::tests","exampleResult":"3 passed; 0 failed","evidence":"local focused storage tests; full suite, network and device qualification pending","typescript":"marmot-ts alpha; execution qualification pending","protocolSource":"d181ce1c4661ca985e8fb12a48a962dbe76fec6c","typescriptSource":"74541744a26aadc1618e0a547ade078584bfa1cd"} # Contribute Marmot work is spread across several public repositories. Pick the one that matches your change, and read its README first for build and contribution notes. | Area | Repository | |---|---| | Protocol specification | [marmot-protocol/marmot](https://github.com/marmot-protocol/marmot) | | Rust MDK and agent integrations | [marmot-protocol/mdk](https://github.com/marmot-protocol/mdk) | | TypeScript library | [marmot-protocol/marmot-ts](https://github.com/marmot-protocol/marmot-ts) | | Website content | [marmot-protocol/whitenoise-web](https://github.com/marmot-protocol/whitenoise-web) | If you hit a problem while using the app, start with [Report a problem](/docs/troubleshooting/report-problem). ## Before you share anything Issues are public. Remove these details before you post: - Private keys and tokens - Peer public keys - Group and message identifiers, plus message text - Screenshots that show other people's conversations If you think you have found a security vulnerability, look for a security policy in the repository before you post any details. ## Writing a useful report 1. Name the repository and give the full commit SHA. 2. Include your toolchain version and operating system, along with the exact command you ran and its complete output. 3. Describe what you expected, then what happened instead. 4. Note any external effects, such as messages that may already have been sent. ## Changing code or docs - Keep each change focused on one problem. - Report only results you saw yourself. Label a focused test group as focused, and list it apart from any full-suite or device results. - In documentation, link to the public source behind each claim and say what is still untested. ## Expected result Maintainers can reproduce the problem using only the public details in your report. Source: https://www.whitenoise.chat/docs/compatibility Platform: shared Verification: source-reviewed; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"android":{"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"},"ios":{"source":"d7186efa4123ba5ad7addd9a964b419e6a2282da","version":"2026.10.13 (45)","minimumOS":"iOS 18","channel":"TestFlight; installed release availability not independently checked","evidence":"source-reviewed","screenshots":"Delegated in issue14","behaviorQualification":"Device validation pending"}} # Compatibility This page lists the release and source baselines these guides were checked against. Other guides link here to keep version details in one place. To get the app, go to [Download](/download). ## Platform baselines | Platform | Channel | Source baseline | Evidence | Missing checks | |---|---|---|---|---| | iPhone, iOS 18 or newer | TestFlight beta | Version 2026.10.13, build 45, source `d7186efa4123ba5ad7addd9a964b419e6a2282da` (release commit on the GitHub default branch) | Source review | TestFlight availability of this build is unconfirmed; iOS screenshots are still missing (tracked in [issue14](https://github.com/marmot-protocol/whitenoise-web/issues/14)) | | Android 11 or newer | Zapstore (recommended), Google Play or GitHub; see [Download](/download) | Latest public release `android-v2026.10.14`, source `6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09`; current source `63524b750b934d72e0f832805128cd84d3a92155` | Screenshots from CI preview 4551, source `81fb0947d51169093ac2d2661a3c2244a1eff8da`, Android SDK 37, synthetic test data, navigated on a device | Full delivery testing; which current-source features are in the public release | | Desktop app | Unconfirmed | Unrecorded | Unrecorded | Whether a desktop app is available | | Agent connector computer | Mac or Linux | Current website setup guide | The website lists Mac and Linux | Windows support unknown | ## What this means - Android instructions use the current source listed above. Some controls may be unreleased; compare your app version with this table if a control is missing. - Device screenshots use synthetic test data and show how to move through the app. Message delivery between real devices was outside their scope. Additional app illustrations use the Android project’s checked-in UI reference renders at the current source baseline. They illustrate controls without claiming that those features ran on a device. - The guides were checked against these sources and remain untested end to end on each release. - Mixed app versions and mixed clients remain untested together as a whole. - Linked devices are still in development. A second installation does not sync your history. - Agent connectors run on your Mac or Linux computer, separately from the phone app. For the pinned MDK source, Rust toolchain and focused test result, see [Build quickstart](/docs/build/quickstart). ## Find your version On iPhone, TestFlight shows the version and build of the beta you have installed. On Android, open the system app details for White Noise and compare the version there with the release names on GitHub Releases, such as `android-v2026.10.14`. ## Report a problem When you report a problem, include your platform and OS version, plus your app version and build. Remove other people's details from any screenshots first. Then follow [Report a problem](/docs/troubleshooting/report-problem). Source: https://www.whitenoise.chat/docs/settings/android/translation Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Translate messages Translation is handled by **Offline Translator**, a separate app that runs translation on your device. White Noise passes message text to that app, and you manage language packs inside it. > **Privacy:** Offline Translator can write message text and translations to Android system logs. White Noise can't guarantee the security of text handled by another app. ## Set up Offline Translator The current reviewed White Noise Android build only works with Offline Translator signed by its original developer, versions 0.8.3, 0.8.4, and 0.8.5. White Noise does not automatically accept newer versions. Each new version must be checked for compatibility before White Noise supports it. 1. Install [Offline Translator](https://f-droid.org/packages/dev.davidv.translator/). 2. Open Offline Translator and install the language packs you need. Install a pack for each language you want to translate from and into. 3. Return to White Noise. Touch and hold a text message, then tap **Translate**. 4. Choose a **Source language** and **Target language**, then tap **Translate**. You can use **Detect language** for the source. When the translation appears, tap **Show original** to see the original text. Tap **Show translation** to switch back. See [Translate a message](/docs/using/messages/android#translate-a-message) for the message controls. ### Troubleshooting - **Translator is unverified or unsupported:** White Noise did not send any text to it. Install a supported version from the link above. - **The language can't be detected:** Choose the source language yourself, then try again. - **The source language pack is missing:** Open Offline Translator, install the pack for that language, then try again. - **The translation engine fails:** Open Offline Translator, check that the language packs you need are installed, then try again. ## Global settings
Translation privacy notice, automatic translation switch, target language and Open engine control.
Review the privacy notice before enabling automatic translation. The target language shown here is an example. Select the image to enlarge.
Open **Settings > Translate**. | Control | Effect | |---|---| | Automatically translate messages | Turns automatic translation on or off for every chat that uses the global setting. It starts off. | | Target language | The language messages are translated into. It starts as English. Choosing a language from the list leaves its language pack uninstalled until you add it in Offline Translator. | | Open engine | Opens Offline Translator, where you install and manage language packs. | If you turned on automatic translation in an earlier preview build, White Noise switched it off once, along with any chat set to On, so you can read the logging notice before you turn it back on. ## One chat Each chat has its own **Automatically translate messages** dialog, saved separately for each profile. Changes apply as soon as you make them, and **Close** dismisses the dialog. - **Use global setting** follows Settings > Translate. **On** or **Off** overrides it for this chat only. - **Use global target language** starts checked. Clear it to pick a different **Target language** for this chat. - **Open engine** opens Offline Translator. These settings store your choices only. Message text and translations are kept out of them. [Android settings](/docs/settings/android) Source: https://www.whitenoise.chat/docs/settings/android/dictation Platform: android Verification: source-reviewed; selected preview screens navigated on device; release and device limits at https://www.whitenoise.chat/docs/compatibility Baseline: {"minimumOS":"Android 11","channel":"GitHub Releases; screenshots use the separate CI preview channel","releaseSource":"6c7cc4bf70ab0de7eae29e13c5ed75e0d6cd3e09","evidence":"source-reviewed; selected preview screens navigated on device","behaviorQualification":"Full end-to-end release validation pending","currentSource":"63524b750b934d72e0f832805128cd84d3a92155","releaseVersion":"2026.10.14"} # Dictate text To use dictation, install a speech service first. ## Set up a speech service 1. Install [Offline Speech to Text](https://zapstore.dev/apps/naddr1qqtkzurs9ehkvenvd9hx2umsv4jkx6r5da6x27r5qyv8wumn8ghj7un9d3shjtn6v9c8xar0wfjjuer9wcpzpys5pkhzxd9dqp4ger8du6p5f6y43tcnzqktjzmwvahq5vumtay4qvzqqqr7pv8t57pf), available on Zapstore. 2. After you install it, open it and follow its setup steps, including any model download. 3. Then go back to White Noise, open **Settings > Dictation**, and select a service listed as available. Which services appear depends on what is installed on your device. The table below shows how each type of service works with White Noise. ## Dictate a message With Offline Speech to Text, audio is processed on this device. Other speech services may send audio to their provider. In a conversation, tap **Dictate text**. It turns your speech into text that you can review and then **Paste** or **Send**, so it never sends a recording. To send audio, hold the voice control instead, as described in [Voice messages](/docs/using/media/android#voice-messages). ## Dictation controls
Dictation settings with provider, pause-other-audio and finish-dictation controls.
Choose a speech provider and how dictation finishes. The service notice explains where audio may be processed. Select the image to enlarge.
| Control | Effect | |---|---| | Get Offline Speech to Text | Opens the Zapstore page for an app that transcribes speech on this device. It is unavailable on Google Play. | | Speech provider | Automatic or a specific provider. Android's selected speech service takes priority. If none is selected, White Noise uses the provider you choose here or, when there is only one engine, that engine. Each provider is labeled Works inside White Noise, Opens provider window, Keyboard only, or In-app support not verified. Choosing a provider leaves your audio and draft untouched. After you choose one, tap dictation again to start. | | Pause other audio | Pauses music and podcasts while you dictate. White Noise speech and voice messages always pause. | | Finish dictation | **When I choose Paste or Send**, or after a set number of seconds of silence. | | When finished | **Paste into draft** lets you review the text first. **Send message** sends only if the chat and the draft are unchanged. | If sending is blocked, any recognized text is put back into the original draft, so review it before you send again. [Android settings](/docs/settings/android)