mectrics - Your Mac's vitals in the menu bar. Free and open source.
by•
CPU, memory, battery, network, disk, GPU, temperature and fans in your menu bar. You pick which ones show, and a click opens the detail behind it. Compact Health folds the whole machine into one item that stays quiet until something's off. MIT, macOS 15+.


Replies
mectrics
@faruk_kamcici Really like the Compact Health idea - quiet until something's actually wrong is exactly right.
Quick question: your description mentions "temperature and fans" alongside CPU/memory/battery/etc., but the menu bar picker only has 6 modules (CPU, Memory, Battery, Network, Disk, GPU) - no temp or fan module. I see CPU temp does show up as an alert rule, but fans don't appear anywhere.
Are those planned, or just described a bit early?
mectrics
@nikita_upadhayay Good catch, thanks for flagging it. Temperatures are available as menu bar options inside CPU, Memory, and GPU rather than as a separate module.
Fans should appear as a separate module on Macs with fan hardware.
I found an issue in that detection and fixed it for the next release, also made this behavior clearer in the picker. Thanks again!
mectrics
Compact Health is the bit I'd use. I've got a Mac Mini sitting headless running agent jobs, so the menu bar is exactly where I never look. Is there a way to get the same alert rules out over CLI or JSON so I could pipe them somewhere else, or is it menu bar only for now?
mectrics
@dalemooney That’s a really good use case. There’s no CLI or JSON output for alerts right now, but we can build it. I’ll work on adding it in the next release. Thanks for the idea, Dale!
@faruk_kamcici Nice one, thanks for taking it seriously. If it helps scope it small: the thing I'd want is exit codes rather than something to parse. A `mectrics check` that returns non-zero while a rule is firing, plus `--json` for the detail when I actually want it. That drops straight into a cron or an existing monitoring check without anyone writing a parser, and it's a much smaller job than a daemon or a proper API.
Will keep an eye out for the release.
mectrics
@dalemooney Quick update: the CLI you mentioned is now available in Mectrics v1.4.0. If you get a chance to try it on your headless setup, I’d love to hear your feedback. Thanks!
@faruk_kamcici That was fast. Exit codes plus --json is exactly the right shape, and I will get it onto the Mini and report back properly rather than just guessing at it.
One thing worth settling before the contract hardens, because it is the failure that will bite whoever wires this into a cron.
What does mectrics check exit when it cannot read the sensor? Permission missing, the app not running, a fan module absent on that hardware, a reading that exists on Intel and not on Apple Silicon. If any of those return 0, then "everything is within limits" and "I could not look" are the same exit code, and a monitoring check that cannot separate those will sit there green while the machine cooks.
Three codes rather than two fixes it. 0 for checked and fine, 1 for a rule firing, and something distinct for could not determine. A cron can then treat unknown as its own alert instead of as success, which is most of the reason to run this headless at all.
Same question for alerts watch. If the stream dies, whatever is consuming it sees silence, and silence is indistinguishable from no alerts. A heartbeat line on an interval, even an empty one, is what lets a consumer tell "nothing is wrong" apart from "nothing is running".
Neither is a big change today. Both get painful once people have scripts that depend on 0 meaning fine.
The Compact Health mode is a really thoughtful touch, surfacing issues only when something actually needs attention instead of cluttering the menu bar with constant noise.
mectrics
@titus_gan Thanks. It's off by default too, so it only shows up if you decide you want it.
@faruk_kamcici Thanks for the clarification! That makes it even better — the fact that it's opt-in rather than forced shows you really thought about user experience and respect people's preference for a clean workspace. Smart design choice!
Love that Compact Health folds everything into one quiet menu bar item that only speaks up when something is actually wrong, which is exactly how a monitoring tool should respect your attention.
Seems very reminiscent of iStat Menus. What would you say is the biggest difference?
mectrics
@minimaldesign Fair comparison. iStat Menus goes much deeper, and I would not claim Mectrics replaces all of it.
The biggest difference is the approach. Mectrics is built to stay quiet, with Compact Health and alerts that only speak up when something persists. It is also free, open source, and has zero telemetry.
Compact Health staying quiet until something's actually off is the detail that matters. Every other menu bar monitor I've used just dumps every number on you all the time and you tune it out.
mectrics
@irahimiam Hey, thanks for the comment!
That's exactly why I built it. I had six numbers up there and had stopped
looking at any of them.
It only speaks up if something stays off for a while, not on a quick spike.
Otherwise it just sits there being boring.
Let me know if it ever nags you when it shouldn't.
Dial
the GPU and temperature tracking is what caught my eye - I've had my mac silently throttle during long batch jobs before and only noticed afterward from how long everything took. would compact health actually flag sustained thermal throttling, or just raw temperature being high? those aren't quite the same thing and the throttling itself is usually the real problem, not the number on the sensor.
mectrics
@omri_ben_shoham1 Right now it's the raw number, so you'd catch a hot sensor but not the
throttling. You're right that the throttling is the part that costs you.
The app already reads ProcessInfo's thermal state, but only to back off its own
sampling. It never surfaces it.
Going into the next release, good contribution. Thanks!
mectrics
Dial
congrats on the launch. I run a Mac mini headless most of the day for local model work, so it's basically always on and I'm sensitive to anything that adds its own background load. for a tool that's polling CPU, memory, GPU, temp and fans continuously, what's mectrics' own footprint look like - is the sampling itself negligible, or is there a tradeoff between poll frequency and how much it costs you to run the monitor in the first place?
mectrics
@galdayan Thanks, Gal! That tradeoff was one of my main concerns too. The main app currently settles around 60 to 65 MB of memory. Lightweight metrics update every second on AC and every two seconds on battery, while GPU, temperature, and fan readings run every third cycle.
The planned read-only CLI for the next release should have a lower footprint on headless setups because it skips the UI and samples only what each command needs. If you try Mectrics and see a very different footprint, let me know and I’ll dig into it.
Dial
@faruk_kamcici 60-65MB is very reasonable, that's not what I was worried about honestly. good to know the CLI skips the UI layer entirely for headless, that's the part that actually matters for my setup. will give it a try and report back if the numbers look off.
Love that Compact Health folds the whole machine into one item that stays quiet until something is actually wrong, that is the opposite of how these apps usually behave. Free and MIT licensed is a generous move too. Does the compact item still show enough at a glance on a notched MacBook where menu bar space is tight?
mectrics
@doganakbulut Thanks, Dogan! Compact Health takes up only the space of a single icon. It shows the overall state at a glance, and clicking it opens a popover with the details. It works especially well on notched MacBooks where menu bar space is limited.