cproducts.
all writing
April 20, 2026
Wavee

On reimplementing Spotify, in public.

Why Wavee talks to Spotify itself instead of wrapping the official app.

Most unofficial Spotify clients are wrappers.

They take the official desktop client, repackage it, and add stuff around it. That can work, but it is still the same app underneath. A few others use old third-party libraries that slowly break every time Spotify changes something.

Wavee is not that. It is a clean-room reimplementation of Spotify's own protocols: Access Point, Connect, Mercury, and the metadata APIs. It is written from scratch by watching what the clients do on the wire. No Spotify SDK, no copied client code, nothing like that.

Why bother

The official desktop client works.

So yeh, fair question: why spend months building another one?

The short version is that I wanted control over the stack.

  1. The official client does not feel like a Windows app. It feels like the website in Chromium. Thats fine, but it is not what I want to use.
  2. Owning the protocol stack lets me build different things. A 10-band EQ, on-device AI on Copilot+ PCs, custom Connect targets, scripting hooks, all of that gets way harder if the real app is still Spotify's React app.
  3. The protocol work is just interesting. Shannon ciphers, Mercury requests, access point handshakes, weird edge cases that only show up after hours of testing. That is the fun part.

What "clean room" means here

It means I have not shipped code from Spotify's clients, public or otherwise.

When something was unclear, the answer was "open Wireshark" or "test another client", not "look at their source." That matters legally, but it also matters because code built on leaked stuff usually dies the second the binary changes.

The protocols are not really secret anyway. People have documented parts of them for years. What Wavee adds is a current .NET implementation that is tied to an actual WinUI 3 app, not just a library demo.

Where it goes from here

Wavee is still in development. The protocol stack is in a good spot now, so most of the work is UI, polish, and fixing the annoying edge cases.

If that sounds interesting, or if you find a bug, the repo is the place to be.