How It Works
This page explains the flow from media detection to display in Discord, and what data is sent to external services.
Overview
Section titled “Overview”【Desktop version (Windows)】 App in WSA ──(ADB / 127.0.0.1:58526)──▶ WSA RPC Bridge ──IPC──▶ Discord client dumpsys every 5 seconds │ └─ App name resolution (APK pull + cache) Thumbnail resolution (supported apps only)
【Android version】 Music app's MediaSession ──▶ NotificationListenerService ──JNI▶ Rust ──Discord Social SDK──▶ Discord app (notification access) On-device only, event-drivenDesktop Version (WSA)
Section titled “Desktop Version (WSA)”- ADB connection — Connects to the local ADB server (
127.0.0.1:5037) targeting127.0.0.1:58526, which WSA’s developer mode exposes. All communication stays within the same PC - Media retrieval — Runs
adb shell dumpsys media_sessionevery 5 seconds and parses track title, artist, playback state, and playback position from active sessions - App name resolution — The display name of the playing app is resolved by pulling its APK over ADB and parsing it, cached in
%LOCALAPPDATA%\wsa-rpc-bridge\ApkCache - Send to Discord — Only when detected content changes, connects to a logged-in Discord client via IPC and updates Rich Presence
Android Version
Section titled “Android Version”- Media session monitoring — Uses notification access permission (
NotificationListenerService) to obtain active sessions fromMediaSessionManager. Only whitelisted apps are targeted, preferring sessions that are actively playing - On-device processing — Retrieved information is passed to the Rust side via JNI and delivered to the UI as events (normally event-driven, with a 30-second safety polling interval as backup)
- Keep-alive — A foreground service (type
mediaPlayback) keeps the process alive. The persistent notification can be toggled in settings - Send to Discord — Connects directly to the Discord app on the device using the Discord Social SDK (bundled library) and updates Rich Presence. You never log in to Discord from this app
Data Sent to Discord
Section titled “Data Sent to Discord”Only when Rich Presence is enabled is the following sent:
| Item | Content |
|---|---|
| Track title | Shown as the details line |
| Artist name | Shown as the thumbnail image caption |
| Playing app name | Shown as the player name |
| Playback position & duration | Shown as an elapsed-time bar (timestamps) |
| Thumbnail image URL | Supported apps only (see below) |
- Album names are detected but not sent to Discord (used only for duplicate detection and the persistent notification)
- Displayed content follows Discord’s specifications and may also be visible to other users such as friends
Thumbnail Image Resolution
Section titled “Thumbnail Image Resolution”Through the plugin structure for supported apps (ArtworkResolver), the thumbnail URL is resolved depending on the playing app.
- Currently supported:
- Vocalo Collection (
jp.nicovideo.nicobox) — sends the track title to Niconico’s search API and retrieves the thumbnail URL of the matching video - YouTube / YouTube Music family (
com.google.android.youtube,com.google.android.apps.youtube.music,app.morphe.android.youtube,app.morphe.android.apps.youtube.music) — sends search queries derived from the title and artist names to YouTube’s search API (www.youtube.com/youtubei/v1/search) and retrieves the thumbnail URL (i.ytimg.com) of the matching video
- Vocalo Collection (
- The image itself is never downloaded or saved; only the URL is held temporarily in memory and passed to Discord
- This request occurs only while a supported app is playing; details are described in the Privacy Policy
Data Stored Locally
Section titled “Data Stored Locally”| Data | Windows | Android |
|---|---|---|
| Settings | %APPDATA%\wsa-rpc-bridge\config.json |
Internal storage |
| Whitelist | ― (feature not present; all sessions are targeted) | Internal storage |
| APK name resolution cache | %LOCALAPPDATA%\wsa-rpc-bridge\ApkCache |
― |
| Operation logs | %LOCALAPPDATA%\com.wsarpcbridge.app\logs (rust.log / webview.log) |
App internal storage (files/logs) |
There is no telemetry, automatic crash reporting, or advertising.