cassette-discord-rpc

July 19, 2026 · View on GitHub

A standalone macOS daemon that reads what Cassette is playing and displays it in Discord via Rich Presence.

Requirements

  • macOS 13+
  • Cassette
  • Discord or Vesktop running in the background

How it works

Cassette sends HTTP requests to localhost:47832 on every track change. The daemon receives them, fetches the album artwork from MusicBrainz / Cover Art Archive, and updates your Discord Rich Presence through the local IPC protocol (Unix socket).

Installation

1. Create a Discord application

Go to discord.com/developers/applications, create a new application, and copy the Application ID.

2. Build

git clone https://github.com/CassetteLab/cassette-discord-rpc.git
cd cassette-discord-rpc
swift build -c release
cp .build/release/CassetteDiscordRPC /usr/local/bin/

3. Create the config file

mkdir -p ~/.config/cassette-discord-rpc
nano ~/.config/cassette-discord-rpc/config.json
{
  "clientId": "YOUR_APPLICATION_ID"
}

If port 47832 is already taken on your machine, add the optional port field:

{
  "clientId": "YOUR_APPLICATION_ID",
  "port": 47832
}

4. Launch at login (optional)

cp Resources/fr.mathieu-dubart.cassette-discord-rpc.plist ~/Library/LaunchAgents/
launchctl load ~/Library/LaunchAgents/fr.mathieu-dubart.cassette-discord-rpc.plist

5. Run manually

CassetteDiscordRPC

Uninstall

launchctl unload ~/Library/LaunchAgents/fr.mathieu-dubart.cassette-discord-rpc.plist
rm ~/Library/LaunchAgents/fr.mathieu-dubart.cassette-discord-rpc.plist
sudo rm /usr/local/bin/CassetteDiscordRPC
rm -rf ~/.config/cassette-discord-rpc

Documentation

Design decisions and notes on how this daemon fits the wider ecosystem live in the CassetteLab knowledge vault — an Obsidian vault versioned with Git.

Anything that explains why a choice was made lives there rather than in this repo.

The vault is private to the organisation — open an issue if you need access.


License

MIT