MacVitals
A lightweight macOS menu bar app for monitoring system vitals — CPU, memory, storage, battery, thermals, network, and GPU.
macOS 15+ · Free · Open SourceDownload Latest Release
Installation
Download the DMG from the latest release
Drag MacVitals to Applications
Launch — it appears in the menu bar
Features
CPU Monitoring
Total, user, and system usage with per-core breakdown. View top processes by CPU consumption and history sparklines.
Memory
Usage breakdown (active, wired, compressed), memory pressure indicator, and top memory consumers at a glance.
Storage
Disk usage with a visual progress bar and real-time read/write speeds measured via IOKit.
Battery
Charge level, health percentage, cycle count, charging state, time remaining, and battery temperature.
Thermals
CPU and GPU temperatures read directly from the SMC, plus fan speeds for every detected fan.
Network
Real-time upload and download throughput using system network interface statistics.
GPU
GPU utilization percentage via IOKit IOAccelerator, shown when a compatible GPU is detected.
Alerts
Threshold-based notifications for sustained high CPU, critical memory pressure, low battery, and near-full disk.
How It Works
MacVitals lives in your menu bar and periodically samples system metrics using low-level macOS APIs. Click the icon to open a popover with live stats organized in expandable sections.
Data Collection
| Metric | API |
|---|---|
| CPU | host_processor_info() delta sampling |
| Memory | host_statistics64() VM info |
| Storage | FileManager + IOKit disk I/O |
| Battery | IOKit IOPSCopyPowerSourcesInfo |
| Thermal | SMC via IOKit (AppleSMC) |
| Network | getifaddrs interface statistics |
| GPU | IOKit IOAccelerator |
| Processes | proc_pidinfo with delta-based CPU |
Architecture
MVVM with @Observable view models. A singleton SystemMonitor orchestrates all collectors on a configurable timer. The popover is managed by NSPopover via an AppDelegate, and the settings window uses a dedicated WindowManager.
Settings
- Refresh Rate: 1s, 2s (default), or 5s sampling interval
- Menu Bar Display: Icon only, icon + CPU%, icon + temperature, CPU bar graph, or memory ring
- Temperature Unit: Celsius or Fahrenheit
- Launch at Login: Native macOS integration via
SMAppService - Visible Sections: Show or hide CPU, memory, storage, battery, network, and thermal sections individually
- Global Hotkey: Toggle the popover with Option + Shift + V
Tech Stack
| Layer | Technology |
|---|---|
| Language | Swift 6 |
| UI | SwiftUI with AppKit bridging |
| Hardware Access | IOKit (SMC, battery, GPU, disk I/O) |
| Process Info | Darwin proc_pidinfo |
| Login Item | SMAppService (ServiceManagement) |
| Architecture | MVVM with @Observable ViewModels |
| Minimum macOS | 15.0 (Sequoia) |
Permissions
MacVitals runs outside the App Sandbox to access hardware sensors (SMC) and enumerate system processes. It does not require any special user-granted permissions in System Settings.
- Non-sandboxed: Required for SMC temperature reads and
proc_pidinfoprocess enumeration - No network entitlements: The app makes zero network requests
- Notifications: Optional — used only for threshold alerts (CPU, memory, disk, battery). Requested on first alert trigger, not at launch
Privacy Policy
Last updated: March 17, 2026
The Short Version
MacVitals collects zero personal data. Everything stays on your Mac. Nothing is ever transmitted anywhere.
Data Collected
MacVitals reads only transient system metrics (CPU usage, memory stats, temperatures, etc.) for real-time display. No data is persisted to disk beyond user preferences stored in UserDefaults.
Data NOT Collected
- Personal information, identifiers, or account data
- Application usage, browsing history, or screen content
- Location, contacts, or any sensitive data
- Keystroke content or input events
Data Storage & Transmission
- The app makes zero network requests — no analytics, no telemetry, no crash reporting
- No server, no cloud sync, no third-party service integration
- The app has no network entitlements
- User preferences are stored locally via
UserDefaults
Third-Party Services
MacVitals uses no third-party dependencies, SDKs, or libraries. It is built entirely with Apple frameworks.
Children
MacVitals does not collect personal information from anyone, including children under the age of 13.
Changes
If this policy changes, the updated version will be posted on this page with a new date.
Contact
Questions about this policy? Open an issue on GitHub.