Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

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.

Source

I built Cremeplay in Rust and Tauri v2.

Source

RAM (Tray / Background) ~60 MB for Cremeplay vs ~400‑500 MB for Pear Desktop.

Source

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.

Source

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.

Source

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.

Source

  • Record date: 2026-10-07T05:41:05.251Z