I wanted a system monitor that stays out of the way but still gives me useful information at a glance. PulseBar lives entirely in the menu bar, opens quickly, and uses native macOS APIs—no Dock icon, analytics, or background database.
PulseBar was inspired by Vitals, the excellent system-monitoring extension for GNOME Shell.
- Live CPU usage, load averages, and per-core utilization
- Activity Monitor-style memory accounting
- A sortable process explorer with per-process resource details
- Performance history for CPU, memory, disk, and network activity
- A searchable TCP and UDP connection inspector with process ownership
- Network speed, packet rates, and session totals
- Disk read/write activity and storage usage
- Battery level and macOS thermal state
- Smooth menu-bar values with fixed or dynamic width
- Up to five menu-bar statistics, freely reordered in Settings
- A pin option to keep the dashboard visible
- System, light, and dark appearances with Liquid Glass controls
The menu-bar labels can be compact or descriptive. Changes are saved automatically.
Open the system explorer for a deeper look at live performance, processes, network connections, and storage without leaving PulseBar.
Open Settings to reorder statistics, choose which monitors run, change the refresh speed, keep values at fixed positions, or customize the global dashboard shortcut.
The default shortcut is ⌥ ⌘ P. Press it once to open PulseBar and again to close it—even when another app is active.
Install the latest release with one command:
curl -fsSL https://raw.githubusercontent.com/markylaredo/pulsebar/master/install.sh | bashThe installer verifies the release checksum and code signature, copies PulseBar to /Applications, and opens it. macOS may ask for your administrator password when installing into /Applications.
See the installation guide for updates, custom install locations, uninstalling, and troubleshooting.
curl -fsSL https://raw.githubusercontent.com/markylaredo/pulsebar/master/uninstall.sh | bashThe uninstaller disables Launch at Login and moves PulseBar to the Trash. Your preferences are kept if you decide to reinstall later.
PulseBar currently requires macOS 14 or later and Xcode 16 or later.
git clone https://github.com/markylaredo/pulsebar.git
cd pulsebar
open PulseBar.xcodeprojIn Xcode, select the PulseBar scheme, choose your Mac, and press Run. PulseBar will appear in the menu bar.
Launch at Login: macOS expects a normally signed copy in
/Applications. Xcode debug builds may be rejected by login-item registration.
Release maintainers can find the required archive and checksum steps in the release guide.
xcodebuild -project PulseBar.xcodeproj \
-scheme PulseBar \
-configuration Debug \
-derivedDataPath .build \
CODE_SIGNING_ALLOWED=NO testPulseBar keeps lightweight system sampling separate from detailed inspectors:
| Component | Responsibility and lifecycle |
|---|---|
SystemMonitor |
The single app-owned source for CPU, memory, disk/network throughput, thermal state, battery, storage, and bounded chart histories. It remains active for menu-bar metrics and resets rate baselines after wake. |
ProcessMonitor |
Actor-isolated process enumeration and PID/start-time-aware metadata caching. It runs only while the Processes page is visible. |
NetworkInspectorProvider |
Actor-isolated interface and socket enumeration. Full socket scans run only while the Network page is visible; System Information requests interfaces only. |
StorageReader |
Mounted-volume metadata with APFS implementation volumes removed. Refreshes are event-driven with a slow recovery refresh. |
SystemInformationReader |
Shared, cached hardware and operating-system metadata. Displays refresh on display events; battery, storage, and network values reuse dynamic providers. |
SwiftUI view tasks own the detailed process, network, and system-interface loops, so navigating away cancels expensive enumeration. MetricHistory bounds every live history to 180 samples.
PulseBar is currently intended for direct distribution. Process inspection, cross-process socket ownership, and process termination use supported macOS libproc interfaces but do not fit the restrictions of the Mac App Sandbox. The project therefore does not claim Mac App Store compatibility or request Full Disk Access, Accessibility, Screen Recording, Location, or other unrelated permissions.
Metrics stay on the Mac. PulseBar has no telemetry, analytics, remote metric storage, DNS history, or background database. The copied system report deliberately excludes computer and host names, mount paths, MAC addresses, hardware serial identifiers, and public IP addresses.
PulseBar reads macOS system counters through Mach APIs, IOKit, and other public system interfaces. Its accounting follows Activity Monitor where practical, although live values can differ slightly when the two apps sample at different moments.
Temperature and fan RPM are not available in V1. Apple does not provide a stable public API for those sensors, and PulseBar intentionally avoids private SMC APIs.
If PulseBar is useful to you, a ⭐ helps other Mac users find it. Bug reports and focused improvements are welcome through GitHub Issues.
If you would like to support continued development, you can buy me a coffee or send a tip through PayPal.
PulseBar is source-available under the PolyForm Noncommercial License 1.0.0. Personal and other non-commercial use is welcome. Selling PulseBar, including modified copies, requires a separate written commercial license from the copyright holder.







