SLT
ProjectsWritingContact
All posts
Product

Why We Built Vitals

My Mac's fans were spinning at full speed and Apple's Activity Monitor had no idea why. Vitals is the free app that shows the numbers Apple decided you didn't need to see.

July 5, 2026
6 min read
By Abdul Rafay

The fans on my MacBook Pro spun up hard one afternoon, stayed loud for twenty minutes, and Activity Monitor showed nothing unusual — CPU usage looked normal, no runaway process, nothing red. I had no way to answer the actual question, which was "why is this thing hot." Apple's own tools tell you what your CPU is doing in terms of percentages and processes. They don't tell you the chip temperature, the actual fan RPM, or the state of your battery's health beyond a vague "Normal" badge in System Settings. That gap — a Mac that clearly knows this information internally, refusing to show it to you — is what Vitals is for.

What existed, and why it wasn't enough

There are third-party menu bar utilities that show system stats, and some of them are genuinely good. The problem, consistently, was that they were bundled into "system optimization suites" — a stats widget wrapped around a junk-file cleaner, a RAM "booster" (not a real thing on macOS), a battery "optimizer," and a nag screen asking you to upgrade to Pro to unlock the one graph you actually wanted. I didn't want a suite. I wanted the numbers.

The other option was digging into powermetrics and istats-style command-line tools directly, which work, but which meant building my own dashboard on top of raw sensor output just to get a glanceable menu bar reading — a reasonable one-off script, a bad way to spend a recurring afternoon every time I got a new Mac.

What we built

Vitals is a free, open-source menu bar app for Apple Silicon Macs that reads directly from hardware sensors and shows what's actually happening: chip temperature (per-core where the hardware exposes it), fan speed, and battery health metrics beyond Apple's one-word summary — cycle count, actual maximum capacity versus design capacity, and charging state history.

A few decisions we made on purpose:

Apple Silicon only, and we're not sorry about it. Supporting Intel Macs would have meant a completely different sensor access path (SMC key enumeration is different across the transition), doubling the maintenance surface for hardware that's increasingly rare in anyone's current lineup. Vitals targets macOS 15+ on Apple Silicon and does that well instead of doing two platforms adequately.

The UI looks like it belongs on your Mac. This sounds like a small thing and it isn't — most system utilities from smaller developers have a look that reads as "third-party tool," with custom chrome, off-system fonts, or a dashboard aesthetic borrowed from a Windows-era systray app. Vitals uses native macOS UI conventions deliberately, because a menu bar app you glance at ten times a day should feel like it was designed by someone who actually uses macOS, not like it's fighting the platform's own design language.

No account, no telemetry, no network calls for the stats themselves. Everything Vitals shows comes from local sensor APIs. There's nothing to sign into and nothing being sent anywhere, because the entire point was answering "why are my fans loud" without adding a new thing to trust.

It's distributed via Homebrew and direct download, with three release channels — stable, nightly, and dev — so people who want the latest sensor support don't have to wait for a stable release, and people who just want it to work don't have to think about channels at all.

The honest tradeoffs

Apple doesn't document these sensor APIs, which means some of this is reverse-engineered. Chip temperature and fan data come through interfaces Apple uses internally but doesn't publish as stable public API. That's workable — plenty of good utilities have shipped this way for years — but it means an OS update can, in principle, change or restrict what's readable, and we've had to chase small breakages after point releases more than once. This is a real, ongoing maintenance cost of building a tool like this, not a one-time integration.

Battery health numbers are only as good as what the hardware reports, and we don't editorialize them. We show cycle count and capacity numbers directly; we don't tell you "your battery is bad, replace it" with some invented threshold, because Apple's own thresholds for what counts as degraded aren't public and guessing at one felt worse than just showing the raw number and letting you decide.

We kept the free feature set genuinely complete on purpose. There's no "Pro" tier holding back the fan speed graph. Vitals exists because paid system-utility suites felt like the wrong shape for "show me a number my computer already knows." Charging for that would have been the exact thing we built this to avoid being.

Where it's useful

If you've ever wondered why your fans are loud, whether your battery is actually degrading or just old-looking in System Settings, or what your chip is running at under a sustained workload, that's Vitals' whole job. It's not a performance suite and it doesn't try to fix anything — it shows you the truth so you can decide what to do about it, which was the entire motivation: I didn't want a tool that claimed to solve the heat, I wanted to know what was causing it.

It's free, open source under GPL-3.0, and contributions — especially around new sensor support as Apple ships new chip generations — are genuinely welcome at rafay99-epic/Vitals.

vitals.rafay99.com

On this page

  • What existed, and why it wasn't enough
  • What we built
  • The honest tradeoffs
  • Where it's useful

Ask AI

Ask ChatGPTAsk Claude

From Syntax Lab Technology

envpilot.dev →wryte.xyz →ourtrail.xyz →lumocash.com →
All posts

On this page

  • What existed, and why it wasn't enough
  • What we built
  • The honest tradeoffs
  • Where it's useful

Ask AI

Ask ChatGPTAsk Claude
Syntax Lab Technology

© 2026 · Independent software organization

ProjectsWritingContactPrivacyTerms
envpilot.dev — live
wryte.xyz — live
ourtrail.xyz — live
LUMO on Google Play — live
support@syntaxlabtechnology.org