I built Cremeplay, a YouTube Music desktop client in Rust and Tauri that uses ~60MB RAM
Description and use
Cremeplay is a lightweight YouTube Music client built with Rust and Tauri that uses ~60 MB RAM in the background and ~150 MB with an open window, achieved through direct Innertube API access, working set trimming, and Windows Job Object process grouping.
Problem
Most YouTube Music desktop apps built on Electron or heavy web wrappers consume 500–800 MB of RAM, leaving background processes and large buffers in memory.
Outcome
Cremeplay achieves a ~60 MB RAM footprint in background and ~150 MB with an open window, compared to 400–800 MB for Electron wrappers, while providing full YouTube Music discovery, SponsorBlock, Discord Rich Presence, and OBS Tuna integration.
Workflow
- Built a Rust Innertube client to avoid loading the Google Polymer web app
- Implemented recursive working set trimming via K32EmptyWorkingSet to drop stale memory pages
- Bundled WebView2 child processes into a Windows Job Object with JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE
- Hooked into IAudioSessionManager2/IAudioSessionControl to label the audio stream as Cremeplay
Evidence
Most YouTube Music desktop apps are built on Electron or heavy web wrappers. Every time I had Pear Desktop or a browser wrapper open in the background while working or gaming, it was sitting at 500 MB to 800 MB of RAM just to play audio.
I built Cremeplay in Rust and Tauri v2.
RAM (Tray / Background) ~60 MB for Cremeplay vs ~400‑500 MB for Pear Desktop.
Direct Rust Innertube client: Instead of loading the bloated Google Polymer web app and all its tracking scripts, Cremeplay talks directly to YouTube Music's Innertube API from asynchronous Rust.
Recursive Working Set Trimming: Chromium-based webviews love holding onto inactive page caches forever. Cremeplay traverses its process tree and calls K32EmptyWorkingSet periodically to drop stale memory pages back to the OS.
Windows Job Object bundling: All child WebView2 processes are attached to a parent Windows Job Object (JOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE), so they group cleanly under Cremeplay and never leave orphan processes behind when you quit.
- Record date: 2026-10-07T05:41:05.251Z