Show who’s streaming from Jellyfin in your Mac menu bar

Before you restart the server or kick off a big download, glance up: the meter counts sessions that are playing something right now.

Recipe tested October 29, 2026 with Multimeter 1.1. Source: Script.

Preview: the Signal Bars face and two alternatives, with sample values like the ones this recipe returns.

What you need

  • Multimeter for macOS 13 or later, $19.99 once.
  • The direct download version of Multimeter from this site (the Script source isn’t in the Mac App Store version).
  • An API key: Jellyfin Dashboard, API Keys, the plus button.
  • jq for picking numbers out of JSON. It comes with macOS 15 and later; on macOS 13 or 14 run brew install jq.

Set it up

  1. Save the API key in your login Keychain, so it never sits in the command or a file. Run this in Terminal; it asks for the value and hides what you type.
    Terminal (once)
    security add-generic-password -U -a "$USER" -s jellyfin -w
  2. Run it in Terminal with your server’s address:
    Command
    curl -s -m 5 -H "Authorization: MediaBrowser Token=\"$(security find-generic-password -s jellyfin -w)\"" "http://jellyfin.local:8096/Sessions?activeWithinSeconds=300" | jq '[.[] | select(.NowPlayingItem)] | length'
  3. Add a Script meter with the command, refreshing every minute.
  4. Set the range to 0 to the number of streams your server handles well, and a warning one below it.

Multimeter settings

In Customize This Meter… (from the meter’s menu):

Settings for this meter
SettingValue
SourceScript
Commandthe curl … | jq line above
Refresh every1 minute
Range0 to 4
AlertsHigh values: warning 3, critical 4
LabelJF
FaceSignal Bars, Hearts or Stack

Tested: Run on October 29, 2026 against demo.jellyfin.org (Jellyfin 12.4): 2 sessions playing, in under half a second.

Script meters need the direct download version of Multimeter from this site, which is the one on sale now. How commands run, the PATH they see and the 10 second limit are in the Script meters guide.

Limits

  • The demo server running Jellyfin 12.4 didn’t accept the key as api_key= in the address for this call, which is why the recipe sends it as a header from a Script meter.

Variations

Everyone connected, playing or not

Change the jq filter to length.

Troubleshooting

What the meter says, why, and what to do
SymptomCauseFix
The script didn’t print a numberThe command failed or printed an error message instead.Run the exact command in Terminal. If it works there, check for tools that live outside the meter’s PATH and use their full path (which tool).
The script took longer than 10 secondsA slow network call. Multimeter stops scripts after 10 seconds.Keep the -m timeout on curl, and refresh less often.
Scripts need the version from multimeterapp.comThis copy of Multimeter came from the Mac App Store, which can’t run scripts.Use the direct download version, or run the command from cron or launchd and point a File meter at its output.
Prints 0 while someone is watchingThe client paused or went idle for more than five minutes.Raise activeWithinSeconds in the address.

Questions

What about Plex?

Plex has a similar sessions call, but we haven’t tested a recipe for it yet, so it isn’t here.

Is it safe to keep the token in the Keychain?

It is the safest place on a Mac for it: encrypted, unlocked with your login, and never written into the command, a dotfile or your shell history. The meter reads it with the security tool each time it runs.

Related

Put it in your menu bar

$19.99 one-time. No subscription. Needs macOS 13 Ventura or later.