Privacy Policy for WaveLink Pro
Effective Date: June 2026
App Version: v1.6.0
WaveLink Pro ("the App") is a serverless, decentralised mesh communication platform. This policy describes exactly what data is processed, how it is stored, what is transmitted, and the controls available to you.
1. Core Architecture: Zero-Cloud, Zero-Server
WaveLink Pro operates without any central infrastructure. We do not own or operate servers, databases, cloud storage, or remote analytics endpoints. All communication is peer-to-peer, confined to the mesh network formed by devices physically nearby. No traffic from your device routes through systems controlled by the developer.
2. Data Processed by the App
A. Voice and Audio
- Capture: Audio is recorded at 16 kHz using Android's
VOICE_COMMUNICATION source with hardware Acoustic Echo Cancellation (AEC), Noise Suppressor, and Automatic Gain Control (AGC) enabled where the device supports them.
- On-device AI processing: Before transmission, audio passes through a local noise gate and optionally the on-device YAMNet classifier (see Section 3). No audio is sent to an external AI service.
- Codec: Audio is compressed with the AMR-WB codec (~10× reduction) if supported by the device, or transmitted as raw PCM. A single-byte codec prefix is prepended to each packet.
- Transmission: The encoded audio payload is encrypted and transmitted directly to peers in your active channel over the mesh link. It is not relayed through any third-party server.
- Storage: Audio is streamed in real time. No audio is written to the device's permanent storage or to any external system by default.
B. Text Messages
- Processing: Text typed in the App is serialised, encrypted, and broadcast to peers in the same channel.
- Local storage: Messages are persisted in an on-device Room database so that conversation history is available within the App while the channel is active.
- Transmission: Messages are sent only to authenticated peers in your channel; they are not relayed to any external server.
C. Location Data
- Collection: When location sharing is enabled, the App reads GPS coordinates (fine and coarse) and stores the most recent latitude, longitude, and timestamp in the on-device DataStore.
- Sharing: Location is shared only with other authenticated members of the same mesh channel for the Radar feature.
- Control: Location sharing can be toggled off at any time in Settings. When disabled, no location data is transmitted to peers.
- Retention: Location is stored locally as a single cached point (last known position). It is overwritten on each update and is removed when the App is uninstalled.
D. Display Name and Status
- You choose a display name during onboarding. This name, along with an optional status message, is transmitted to mesh peers to identify your device. It is not linked to any external account, email address, or legal identity.
E. Device Vitals (Battery and Movement)
- Battery level: Polled from the Android
BatteryManager to populate the HUD and shared with peers as part of vitals updates.
- Accelerometer: The device accelerometer is monitored to derive a simple movement/stationary indicator, also shared with peers as part of vitals. Raw accelerometer values are not logged or stored.
- Scope: Vitals data is used only within the active mesh session and is not persisted to permanent storage.
F. Profile Picture
- An optional profile picture URL can be set in the user profile. This URL is stored locally in the on-device DataStore. If the URL points to an external image host, your device will fetch that image directly; the developer has no involvement in that transaction.
3. On-Device AI Processing (YAMNet)
WaveLink Pro includes Google's YAMNet audio classifier, running entirely on-device using the MediaPipe Tasks framework.
- What it does: Classifies incoming microphone audio into up to 521 sound categories (e.g., Speech, Wind, Machinery, Alarm) to provide Voice Activity Detection and environment awareness labels shown in the HUD.
- What it does not do: YAMNet is not speech-to-text. It cannot transcribe words. It identifies types of sound, not linguistic content.
- Data handling: Audio windows processed by YAMNet never leave the device. The model (
yamnet.tflite) is bundled with the App.
- Control: Environment scanning can be disabled in Settings, which stops YAMNet inference.
4. Encryption
All message payloads and voice data transmitted over the mesh are encrypted end-to-end before leaving the device.
- Algorithm: AES-256-GCM with a random 12-byte IV per message and a 128-bit authentication tag.
- Key derivation: PBKDF2-HMAC-SHA256 (10,000 iterations, 256-bit output). The key is derived from the channel code. The salt is deterministic (first 16 bytes of SHA-256 of the channel ID), so all devices with the same channel code independently derive the identical key without any key exchange.
- Routing fields: Message routing metadata (ID, type, hop count, sender ID) remains in plaintext so that mesh relay and deduplication can operate without decrypting payloads.
- Boundary: Encryption is applied to the message payload only. No data outside your channel can be decrypted by parties who do not possess the channel code.
5. Local Data Storage
The following data is stored on-device only and is never transmitted to external servers:
| Store | Contents |
| Room Database | Channel records, message history |
| DataStore (Preferences) | Display name, last channel ID, mission mode, location sharing toggle, last known coordinates and timestamp, haptic intensity, subtitle/modulation/pro-audio settings, profile picture URL, AI and update preferences |
All local data is removed when the App is uninstalled. Android's backup and data extraction rules (data_extraction_rules.xml, backup_rules.xml) are configured to limit what the system backs up from this App.
6. Camera
The App requests camera access solely for QR code scanning when joining a channel by code. Camera data is processed locally by the on-device scanner; no images or frames are stored or transmitted.
7. Notifications
WaveLink Pro uses Android's POST_NOTIFICATIONS permission to display a persistent foreground service notification while the mesh is active. This notification is required by Android for background microphone and connected-device services. No notifications are sent to external notification servers.
8. Wake Lock
The App holds an Android WAKE_LOCK while the mesh service is running to prevent the CPU from sleeping during active voice sessions. This is a local device resource; it has no privacy impact.
9. Third-Party Services
| Service | Purpose | Their Privacy Policy |
| Google Nearby Connections API | Peer discovery and mesh data transport over Bluetooth and Wi-Fi Direct | Google Privacy Policy |
| Google MediaPipe (YAMNet) | On-device audio classification — runs locally, no data sent to Google | Google Privacy Policy |
- Internet permission: Declared in the manifest but used only by the Google Nearby Connections and MediaPipe libraries for their internal operation. WaveLink Pro itself makes no outbound network requests to any developer-controlled server.
- No analytics: The App contains no third-party analytics SDKs, advertising SDKs, crash reporters, or behavioural tracking.
- No update server: Version update checks are performed locally by comparing the installed version to a value cached in the on-device DataStore; no remote endpoint is contacted.
10. Permissions Summary
| Permission | Reason Required |
ACCESS_FINE_LOCATION / ACCESS_COARSE_LOCATION | Mesh peer discovery (required by Nearby Connections) and Radar feature |
ACCESS_WIFI_STATE / CHANGE_WIFI_STATE | Wi-Fi Direct mesh transport |
NEARBY_WIFI_DEVICES | Android 13+ peer discovery over Wi-Fi |
BLUETOOTH / BLUETOOTH_ADMIN / BLUETOOTH_SCAN / BLUETOOTH_ADVERTISE / BLUETOOTH_CONNECT | Bluetooth mesh discovery and transport |
RECORD_AUDIO | Push-to-talk voice capture |
CAMERA | QR code scanning for channel join |
FOREGROUND_SERVICE / FOREGROUND_SERVICE_CONNECTED_DEVICE / FOREGROUND_SERVICE_MICROPHONE | Background mesh service and microphone access |
POST_NOTIFICATIONS | Foreground service notification (Android 13+) |
VIBRATE | Haptic feedback and incoming panic alerts |
WAKE_LOCK | Keeps CPU active during active voice sessions |
INTERNET | Used internally by Google Nearby Connections and MediaPipe libraries |
11. Data Retention
Because there are no central servers, the developer has no ability to retain, access, or delete your data. All data lives on your device. Leaving a channel ends the mesh session; uninstalling the App removes all local storage including the database, DataStore preferences, and cached location.
12. Children's Privacy
WaveLink Pro is not directed at children under the age of 13. The App does not knowingly collect data from children.
13. Changes to This Policy
Material changes will be noted in the App's release notes and reflected by an updated Effective Date at the top of this document.
14. Contact
For questions about the privacy architecture of WaveLink Pro, contact:
JbTecWiz@outlook.com