Activity Monitor tells you a process is busy. Mac Vitals tells you your machine throttled for fourteen minutes and that is why qwen3 is generating 18% slower than it did yesterday. System vitals and LLM telemetry on one timeline.
Widgets in whichever style suits the metric — sparkline, gauge, value, icon or stacked pair. Click one and you get that module, not an undifferentiated list of eleven cards.
Every metric on one time axis with a synced crosshair. Hover a spike in CPU and see what memory, disk and the GPU were doing at that exact instant.
Rules read as WHEN · FOR · THEN and fire a notification, a shell command or a webhook. Anomaly cards compare against a baseline bucketed by hour of day, so 90% CPU at 3am is not treated like 90% CPU during a build.
Every other monitor stops at the hardware. If you run models locally, the interesting question is not "is the GPU busy" but "why is this generating slower than it did an hour ago" — and answering that needs inference telemetry and machine telemetry on the same axis.
:11434 and LM Studio on :1234, found automatically. A server running with nothing loaded is reported honestly as no model, not as an error.ollama run command, without leaving the menu bar.Activity Monitor ships with your Mac and is genuinely good at listing processes. Stats is free, open source and well made. Here is where each one stops, measured on the same M2 Pro on the same afternoon.
| Activity Monitor | Stats 3.0.11 | Mac Vitals | |
|---|---|---|---|
| Lives in the menu bar | partial | yes | yes |
| History and timeline | no | minutes | 30 days |
| Correlates metrics on one axis | no | no | yes |
| Local LLM telemetry | no | no | tok/s, TTFT, context |
| Container stats | no | no | yes |
| Listening ports with repo context | no | no | yes |
| Anomaly detection with baselines | no | no | hour-of-day |
| Alert rules with webhooks | no | no | yes |
| Idle CPU, one core | — | 1.82% | 1.36% |
| Memory footprint | — | 143 MB | 26 MB |
| Helper processes | — | 5 | 1 |
Both apps were launched on the same machine and measured over 90-second windows using CPU-time deltas, with memory read as phys_footprint. Activity Monitor is left blank on cost because it is not a comparable resident menu bar app.
One caveat we will state rather than bury: Stats was displaying more menu bar modules than Mac Vitals during the measurement, so part of its cost is doing more work. A module-for-module test would be stricter.
That is the contradiction we designed around. Idle cost is about 1.3% of a single core — on a 12-core machine, roughly 0.1% of total capacity — and 0.33% if none of your widgets is a live chart. Samplers pause when nothing is displaying them, and the menu bar only redraws when the pixels would actually differ.
The six system modules, 24 hours of history and two menu bar slots are free forever. Pro is a one-time $29 for the developer tier: LLM monitor, containers, dev processes, port map, remote agents, the alerts engine, 30-day history, reports and fan control. No subscription, no account, and the licence is verified offline.
No. There are no accounts, no analytics and no crash reporting. In its default configuration the app opens no outbound connections at all, and you can verify that with its own connection table or lsof -i. The only traffic is what you configure: a webhook you wrote, or servers you listed yourself.
The Mac App Store requires the App Sandbox, which blocks reading other processes, running lsof, opening the Docker socket and talking to AppleSMC. We measured each one rather than assuming. Mac Vitals Lite keeps everything the sandbox permits — including the LLM monitor — and the direct edition keeps the rest.
No. Swift and SwiftUI with AppKit where AppKit is better, which is why it is 26 MB rather than 300.
You get an em-dash and an explanation, never a fabricated number and never a frozen stale one. A reading older than five seconds dims to show it is stale.
The free tier is not a trial — it does not expire. If Pro turns out not to be for you, email us within 30 days and we will refund it.
The Mac App Store requires the App Sandbox, and the sandbox blocks per-process inspection, listening-port lookup, container sockets and hardware sensors. Rather than pretend otherwise, there are two editions and this table tells you exactly what the sandbox costs.
Direct download · notarized · free core, Pro $29 one-time
Mac App Store · sandboxed · free
Measured on an M2 Pro with CPU-time deltas over 60-second windows — not ps %cpu, which is a decaying average — and phys_footprint rather than resident size, which counts shared framework pages.
| Measurement | Result | Budget | |
|---|---|---|---|
| Idle CPU, three widgets, live chart | 1.36% | < 1.8% | pass |
| Idle CPU, no live chart | 0.33% | < 0.5% | pass |
| Dropdown open | 2.4% | < 3% | pass |
| Memory, idle | 26 MB | < 60 MB | pass |
| Dropdown open latency | 74 ms | < 100 ms | pass |
| Outbound connections, default config | 0 | 0 | pass |
For comparison, measured in the same session on the same machine with the same method: a well-regarded free monitor used 1.82% of a core and 143 MB. We are not claiming it is a bad program — it does more work per tick. We are claiming we measured both rather than guessing.