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.