Performance Monitor
A lightweight macOS menu bar app that gives you real-time system metrics at a glance (CPU, memory, network, disk, GPU, battery, and Bluetooth), all in a clean popover interface. More at perfmon.knhome.nl.
Requirements
- Apple Silicon (M1 or later): this build is arm64-only and will not run on Intel Macs
- macOS 14 (Sonoma) or later
What's new
v1.3.1 — the menu bar readout was drawn in white whatever the menu bar looked like, so it was unreadable on a light one and never followed a theme change. It is now drawn the way system status items are, and macOS retints it per appearance. Found and fixed by @aleksanderprokofiev-cmd. The Shortcuts actions that v1.3.0 announced never ran and have been withdrawn; the changelog explains why.
v1.3.0
- A process glossary: 231 entries in seven languages explaining what a process actually is.
oahd reads as Rosetta, ecosystemd as Continuity, wdavdaemon_unprivileged as Microsoft Defender
- An app and its helpers are one row: Firefox with 17 processes reads as one row, not seventeen. Open a row to see the individual processes
- A plain-language verdict at the top of the overview: not just what is happening, but what it means and what you can do about it
- Listening ports and open connections in the Network window. Read-only; blocking is a firewall's job
- Sleep, wake and throttling marked on the history graphs, so an hour of high CPU has an explanation next to it
- A floating panel that stays visible over full-screen apps
- A JSON file of the current readings for SwiftBar, xbar and SketchyBar, off by default
- Lighter again: idle CPU from 2.29% to 1.86% on an M3 Pro, with the spread between runs down from 1.20 to 0.08 points
How the idle cost is measured, and the three ways I measured it wrong first, is written up in what a system monitor costs.
See CHANGELOG.md for the full version history.
Features
CPU
- Overall usage percentage updated every second
- Per-process breakdown (Top CPU) with usage normalized across all logical cores
- An app and its helper processes shown as one row, expandable to the individual processes
- A readable name and a one-line explanation for 231 known processes, in every supported language
- Performance and Efficiency core counts (Apple Silicon)
- Historical usage chart
Memory
- Real-time breakdown: Used, Wired, Compressed, Free
- Memory pressure indicator
- Historical usage chart
Network
- Live upload and download throughput
- Butterfly chart in detail view: download up, upload down, shared scale with axis labels
- VPN indicator: shield icon always visible, green (VPN on), blue (FortiClient), grey (off)
- Connection type indicator: WiFi and/or Ethernet icon; primary connection is green, secondary is white
- Local IP address (tap to copy)
- Public IP address (tap to copy)
- Wi-Fi SSID and signal strength in dBm with visual bar indicator
- Listening ports and open connections per app, read-only (same coverage as
lsof without sudo)
- Historical speed chart
Disk
- Read and write throughput per second
- Free and total disk space
- Historical I/O chart
GPU & Displays
- Live GPU utilization % via IOAccelerator (same source as Activity Monitor)
- Switchable card view: chart sparkline, ring gauge, or display info
- Connected display names with native pixel resolutions and Retina badge
- Quick link to Display Arrangement settings
Battery
- Charge percentage and charging state
- Time remaining / time to full
- Battery health percentage and condition
- Cycle count and design cycle count
- Temperature, voltage, and amperage
Bluetooth
- Connected and paired device list
- Battery percentage per device:
- AirPods: Left, Right, and Case shown separately
- BLE devices (e.g. Logitech MX Master): battery read via GATT Battery Service
Automation
- JSON snapshot: optionally writes the current readings to
~/Library/Application Support/PerformanceApp/snapshot.json every five seconds, for status bar tools such as SwiftBar, xbar and SketchyBar. Off by default, and deleted when you turn it off
History
- Tiered storage: one second, one minute and one hour resolutions, kept for one hour, 48 hours and 90 days
- Sleep, wake and thermal throttling marked on the graphs, with the wake reason where the system log gives one that means something
- A weekly summary notification on Monday morning, off by default
Floating panel
- A small always-on-top readout that stays visible over full-screen apps, for watching temperature during a game or a render
- Remembers where you put it; holds nothing at all while hidden
Installation
Homebrew
brew install --cask inequitas/tap/performance-monitor
Gatekeeper note: The app is ad-hoc signed (no Apple Developer ID). On first launch, right-click the app → Open to bypass the unidentified developer warning.
Manual
- Download the latest
Performance Monitor.app from Releases
- Unzip and drag to
/Applications
- Launch, and the app appears in your menu bar
- Grant Bluetooth permission when prompted to see Bluetooth device info
This is the beginning of the README. Read the rest at the original. Read the full README ↗