Show Uptime Kuma in your Mac menu bar

Uptime Kuma watches your services; this puts its verdict where you can see it. A status page in Uptime Kuma publishes a small JSON API, which is all Multimeter needs: no login, no token.

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

Preview: the Plant 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.
  • A status page in Uptime Kuma with your monitors on it (Status Pages, New Status Page). Its slug is the last part of its address.

Set it up

  1. Look at the status page’s data in Terminal. The keys under uptimeList are monitor ids with _24 for 24 hours:
    Terminal
    curl -s http://kuma.local:3001/api/status-page/heartbeat/home
  2. For one monitor’s uptime, add a Web Address meter with that address and the key path uptimeList.1_24 (use your monitor’s id).
  3. Set the range to 0.9 to 1 so small dips show, and alerts on Low values: warning 0.99, critical 0.95.

Multimeter settings

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

Settings for this meter
SettingValue
SourceWeb Address
Web addresshttp://HOST:3001/api/status-page/heartbeat/SLUG
Key pathuptimeList.MONITORID_24
Refresh every1 minute
Range0.9 to 1
AlertsLow values: warning 0.99, critical 0.95
Labelthe service, like NAS
FaceRing, Plant or Gradient Track

Tested: Run on October 29, 2026 against Uptime Kuma 1.23 in Docker with two monitors: uptimeList.1_24 returned 1, and the down count below returned 1 for the monitor pointed at a missing page.

More on this source, including every format it reads, in the Web Address guide.

Limits

  • The uptime is a fraction from 0 to 1, not a percentage.

Variations

How many monitors are down

A Script meter that counts monitors whose last check failed. Alerts on High values: critical at 1.

Command
curl -s -m 5 http://kuma.local:3001/api/status-page/heartbeat/home | jq '[.heartbeatList[] | last | .status] | map(select(. != 1)) | length'

From the metrics endpoint instead

Uptime Kuma’s /metrics uses an API key as the password (Settings, API Keys). This counts monitors that are down:

Command
curl -s -m 5 -u ":$(security find-generic-password -s uptime-kuma -w)" http://kuma.local:3001/metrics | grep -c '^monitor_status{.*} 0$'

Troubleshooting

What the meter says, why, and what to do
SymptomCauseFix
No number found in the responseThe key path doesn’t match the reply.Run curl -s with the address and read the JSON. Dots walk into objects, numbers pick array items (items.0.count).
Couldn’t reach the addressNo network, a typo in the host, or the service is down.Open the address in your browser. Multimeter tries again at the next refresh.
The server answered 404The slug doesn’t match a published status page.Open the status page in your browser; its address ends with the slug.

Questions

Is the status page public?

It is readable by anyone who can reach your Uptime Kuma, which on a home network is usually just you. Leave monitors you consider private off it.

Related

Put it in your menu bar

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