▶ TuneStatus_

How it works

v2.8 · macOS 13+

TuneStatus is a menu-bar app that does one loop: ask the music app on your Mac what's playing, write it to your Slack status, wait, repeat. There is no Spotify login, no account to connect, and no server of ours in the path.

The loop

Every fifteen seconds the app asks Spotify — or the Music app, with Pro — for the title and artist of the current track, using AppleScript over macOS's built-in automation. Both apps publish that themselves; it's a supported thing for a Mac app to ask. If the answer changed, TuneStatus calls Slack's users.profile.set with the new status and stops. If nothing changed, it does nothing. When the music stops, or you quit, the status clears.

Why there's no Spotify login

Because it isn't asking Spotify's servers — it's asking the Spotify app on your desk. That's the whole trick, and it's why free and Premium accounts behave identically, why there's no permission screen, and why TuneStatus has no access to your library, playlists or history. The tradeoff is honest: you need the desktop app running, not the web player, and it only sees what that Mac is playing.

What it asks Slack for

Three user-level scopes, and here's what each is for:

users.profile:write — set your status. This is the feature.
users.profile:read — read your status, so it can tell when you've set one by hand and leave it alone.
emoji:read — list your workspace's custom emoji, so it can use :spotify: or :applemusic: when they exist and fall back to 🎵 when they don't.

All three are user scopes: they act as you, on you. There is no bot, nothing posts, and nothing can read a message, a file, a channel or another person. Installing it does nothing to your workspace.

The sign-in

Standard Slack OAuth with PKCE. When you click "Sign in with Slack", Slack issues the token directly to the app on your Mac; this website only bounces a single-use authorization code back to a loopback listener on 127.0.0.1 that's alive for those few seconds and closed afterwards. The code is worthless without a verifier that never leaves your machine, so your token never touches our servers and we keep no record of who signs in.

Where things live

One file on your Mac — ~/.tunestatus-mac.json, readable only by your user account — holding your Slack token and your settings. Delete it, or click "Disconnect Slack", and nothing is left. There is no database of users, because there are no user accounts.

What leaves your Mac

Requests to slack.com to set your status. On launch and once a day, a request to tunestatus.com/version carrying the app's version number and nothing else, so it can tell you about an update. If you own Pro, a check every few hours that your Slack account owns it. That's the list. Track names go to Slack, which is the point, and nowhere else.

Signed, notarized, and self-updating

The app is signed with an Apple Developer ID and notarized by Apple, so it opens by double-click without a Gatekeeper fight. It checks for updates on launch and daily; an update is only installed after verifying the download carries the same Developer ID team, so an update can't be swapped for something else in transit.

The controls

A pause switch in the menu bar, an optional work-hours schedule (off by default), an emoji picker, and start-at-login. When your displays sleep the status clears itself, and it comes back when you're back. Podcasts are never shared. Your own status always wins.

What it can't do

macOS only, 13 or newer. Desktop apps only, not web players. It reads Spotify and Apple Music; Tidal, YouTube Music and Amazon Music don't expose what they're playing to other Mac apps, so nothing can read them. And it reads the Mac it's running on.

↓ Download for Mac — Free