What Vitals measures, and what each number means.
A system monitor is only useful if you know what to do with the readings. This page walks through every section of Vitals — what it measures, where the number actually comes from, what counts as normal, and the point at which it's worth acting on. No jargon left undefined.
01The four ways to read Vitals
Vitals shows the same data at four depths. Which one you use depends on how much you want to know right now.
| Layer | What it shows | Best for |
|---|---|---|
| Menu bar | Just the Vitals mark by default. Optionally live CPU, GPU, RAM and network readouts with mini-graphs, in the order you choose. | Ambient awareness — you notice a spike without looking for it. |
| Popover | Click the menu-bar icon for a one-screen snapshot: load, memory, disk, network, temperature, battery. | "Why is the fan on?" answered in two seconds. |
| Desktop widget | A floating always-on-top panel refreshed every second. Drag it anywhere; compact or full layout. | Watching a long build, render or model run without switching windows. |
| Dashboard window | Seven monitor pages plus History and Reports — every card described below. | Actually diagnosing something. |
The menu bar, popover and desktop widget are free forever. The dashboard pages below are Pro, and every one of them is open during your first 14 days.
02Overview & the health score
One page that answers "is anything wrong right now?" — and, when something is, names it instead of making you hunt.
How the 0–100 health score is calculated
The score is not a vibe. It's the plain average of the components below that apply to your Mac — a desktop has no battery component, and SSD endurance only appears when your drive reports an estimate. Each component is scored 0–100 on its own, then averaged.
| Component | How it scores | What drags it down |
|---|---|---|
| Thermals | 100 when macOS reports a nominal thermal state, 78 fair, 45 serious, 15 critical. | Sustained heavy load, a blocked vent, a hot room, or a charger and an external display together. |
| Memory | 100 at normal memory pressure, 60 at warning, 30 at critical. | Too many apps for the RAM you have, a leaking app, or a model loaded that doesn't fit. |
| Disk | Free space on your fullest local volume, not just the startup disk. 20% free or more scores 100 and it falls linearly from there. | A nearly-full external SSD counts here too — and Vitals names the drive when it's the problem. |
| Battery | Laptops only. 100% design capacity scores 100, 75% scores 50, and 50% or below scores 0. | Age and cycle count. This one only ever moves slowly. |
| SSD life | 100 minus the estimated share of write endurance used, when your drive reports one. | Years of heavy writes. Most Macs never get near the limit. |
The rest of the Overview page
Storage and memory at a glance, processor load split into user versus system time, graphics load with VRAM in use, and live network throughput. It's the popover's information with room to breathe.
03Performance
CPU, GPU, memory, processes and heat. This is the page you open when something feels slow.
Processor host_processor_info
Total load, split into user (your apps doing work) and system (the kernel doing work on their behalf — file I/O, networking, memory management).
Memory & memory pressure vm_statistics64
"Used" is how much of your RAM holds something. Memory pressure is the number that actually matters, and it is not the same thing. macOS deliberately fills unused RAM with cached file data — high usage with normal pressure means your Mac is working efficiently, not struggling.
Per-core clusters hw.perflevelN
Apple Silicon cores are not interchangeable. Vitals reads the tier names macOS itself publishes rather than guessing from the core count, so each core is labelled with the tier it actually belongs to — Performance and Efficiency on M1 through M4, and the third tier that M5-generation chips introduced where present.
Graphics & VRAM IOKit
GPU load, plus how much of your unified memory is currently committed to the GPU. On Apple Silicon there is no separate video RAM — the GPU and CPU share the same pool, which is exactly why local AI models can starve the rest of the system.
Top processes & top memory
The heaviest processes by CPU and by memory, live. Each row can be acted on directly rather than sending you to Activity Monitor.
Memory growth
Watches individual processes for memory that climbs and never comes back down — the signature of a leak. A browser growing over an afternoon is normal; a menu-bar utility doing it is not.
Temperatures & fan SMC
Per-sensor temperatures and fan speed in RPM, read from the System Management Controller. Vitals reads fan speed; it does not set it. Fan control is deliberately not implemented — writing SMC keys is a good way to cook a machine.
Thermal throttling
A timeline of when macOS stepped performance down to manage heat, with the busiest process named at the moment throttling began.
04Local LLM
For running models on your own Mac. Everything here talks only to servers already running on your machine — nothing is uploaded, and no model is downloaded.
Detected runtimes
Vitals probes the default ports that Ollama, LM Studio, llama.cpp, vLLM, Jan, GPT4All, KoboldCpp and others ship with, over loopback. In the direct-download build it also reads the ports that running model-server processes are actually listening on, so a server moved to a custom port is still found. Ports that are obviously something else — SSH, web, databases, screen sharing — are never treated as a model server.
Tokens per second
A one-tap speed test that sends a fixed prompt and reports generation speed. Where the server reports its own timing — Ollama does — Vitals uses that number rather than wall-clock guessing, so it's comparable to what you'd read from the runtime directly.
VRAM headroom & model fit
How much unified memory is free for a model right now, and whether a given model will fit before you load it. Headroom is not the same as total RAM — macOS, your apps and the window server all hold some.
Model watch, sessions & library
What's loaded right now, a log of recent model sessions, and the sizes of the model folders on disk across LM Studio, Ollama, Jan, GPT4All and the Hugging Face cache. Left a model resident after you finished with it? One tap unloads it and gives the memory back.
05Network
Connection quality, per-app traffic, and tools you run on demand.
Internet health TCP handshake to 1.1.1.1
Latency, jitter and packet loss, measured by timing a TCP handshake to Cloudflare's resolver every five seconds over a rolling 40-probe window. A probe that times out counts as a drop. No data is sent in the handshake, and it runs only when Pro is unlocked.
Speed test macOS networkQuality · Apple servers
Download and upload throughput plus a ping figure, measured by the speed-test tool built into macOS against Apple's servers (it keeps up with gigabit connections), and it notes whether the test ran over Ethernet or Wi-Fi. If that tool isn't available, Vitals falls back to a few small transfers with Cloudflare's public speed endpoint, averaged so one unlucky transfer can't set the number. Runs only when you press it.
DNS benchmark
Times name resolution against several public resolvers — Cloudflare, Google and others — plus whatever your router hands you. Slow DNS feels exactly like a slow connection but isn't one, and it's often the cheapest thing to fix.
Wi-Fi link, scan & history
Your current signal and noise figures, the networks and channels around you, and a rolling history of link quality. The scan asks macOS for location access — not because Vitals wants your location, but because since Sonoma, Apple only reveals nearby network names, bands and channels to a location-authorised app. Vitals never reads, stores or sends the location itself.
Ping & traceroute
Run against any host you type. Both run in-process on an unprivileged ICMP socket rather than shelling out to system binaries.
Network by app & data this month
Which applications are moving data right now, running totals for today, and a monthly counter for capped or metered connections.
06Storage
Disks, backups, and space you can get back.
Disk health
Drive type and capacity on every build. In the direct-download build this also includes S.M.A.R.T. status and endurance readings from the drive's own controller — the App Store sandbox blocks the device-level access those require.
Disk writes & SSD wear
A running total of bytes written and an endurance estimate derived from it. Direct-download build only, for the same reason.
Disk activity by app
Which processes are reading and writing right now. The usual answer to "why is my Mac loud and idle" lives here — indexing, a backup, or a sync client.
Reclaim space
Measures what caches, developer build folders and similar reclaimable directories are costing you. Vitals only measures — it never deletes anything. On the sandboxed App Store build it asks once, through a standard macOS Open panel, for the folder it needs to size; it can read nothing outside what you grant, and never writes there.
Time Machine & disk speed test
When your last backup completed and whether it succeeded, plus an on-demand read/write throughput test for any volume — useful for telling a slow external enclosure from a slow drive.
07Energy & Power
Where your watts and your battery are going.
Power draw IOReport
Live system power in watts, read from Apple Silicon's own energy telemetry rather than estimated from CPU load.
Energy by app
Accumulated energy impact per application over your session, so a process that spikes briefly doesn't outrank one that has been quietly burning power for an hour.
Battery vampires
Catches a single app quietly pinning the CPU and draining your charge. Watches while you're on battery by default, or always, if you turn that on. Each one can be Tamed (deprioritised so it stops dominating), Frozen (suspended, and resumable later with nothing lost) or force quit.
Battery health & longevity
Current capacity against design capacity, cycle count, and habits that affect how the cell ages. This is the component that feeds the battery part of your health score.
Bluetooth battery
Charge levels for connected keyboards, mice, trackpads and headphones, next to your Mac's own.
08System
Uptime, sleep, startup, and the things that happened while you weren't looking.
Uptime & sleep · sleep blockers
Every sleep and wake, what the battery cost while the lid was closed, and — critically — what was still holding a wake lock at the moment it shut. This is the answer to the hot-backpack, empty-battery mystery.
Anomaly watch
Learns your Mac's normal ranges and flags genuine departures from them, rather than firing on every spike.
Camera & mic
Which application is using the camera or microphone, and when. Read locally; nothing about it leaves the Mac.
Startup items
What launches when you log in. The direct-download build additionally lists background launch agents and daemons; the App Store sandbox does not permit reading those directories.
Crashes & panics
Recent application crashes and kernel panics with a plain-English explanation of what actually happened. Direct-download build only — the sandbox has no access to the system diagnostic reports directory, and the App Store build says so rather than showing an empty list.
Benchmark a task & run recorder
Record what your Mac did during a specific job — a build, an export, a model run — so you can compare two runs properly instead of going on feel.
Alert history
Every threshold alert that has fired. Alerts can also push to your phone through a webhook you supply, such as an ntfy.sh topic. Leave the field empty and nothing is ever sent.
09History & Reports
Thirty days of every metric, and a weekly summary you can keep.
History is written to a plain JSON file in your user Library at ~/Library/Application Support/Vitals — local to your Mac, never synced to iCloud, never uploaded. You can open it, move it, or delete it; deleting it simply clears your charts. Reports summarise the week and export to CSV.
10App Store build vs direct download
Same app, same price, same 14-day trial. Apple's App Sandbox blocks a handful of system-level reads, and Vitals says so in the interface rather than showing you a blank card or a wrong answer.
| Feature | Mac App Store | Direct download |
|---|---|---|
| Crashes & panics | Not available | Full |
| S.M.A.R.T. health & SSD wear | Drive type & capacity only | Full |
| Launch agents & daemons | Login items only | Full |
| Open-port listing | Not available | Full |
| LLM servers on custom ports | Default ports only | Any port |
| Reclaimable space | Excludes Trash; asks once for folder access | Full |
| Everything else on this page | Identical | Identical |
Now go read your own Mac.
Free to monitor forever. Every Pro page above is open for your first 14 days — no card, no account.
Get Vitals How it's built