Skip to content

Repository files navigation

PulseBar app icon

PulseBar

A small, native macOS system monitor that keeps the numbers I care about in the menu bar.

macOS 14+ Swift 5 Latest release PolyForm Noncommercial


PulseBar live statistics updating in the macOS menu bar

PulseBar dashboard showing live CPU, memory, and network statistics

PulseBar system explorer cycling through Overview, Performance, Network, and Storage

Why PulseBar?

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.

What it shows

  • 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.

Explore your Mac

Open the system explorer for a deeper look at live performance, processes, network connections, and storage without leaving PulseBar.

PulseBar System Overview with CPU, memory, network, disk, thermal, and uptime metrics
System Overview — essential metrics at a glance.
PulseBar Performance view showing CPU history and system statistics
Performance — live history and detailed resource statistics.
PulseBar Network Inspector showing listening TCP and UDP sockets
Network Inspector — filter sockets and trace them back to processes.
PulseBar Storage view showing volumes, capacity, and disk activity
Storage — volume capacity and disk activity in one view.

Make it yours

PulseBar settings with the global keyboard shortcut and appearance controls

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

Install the latest release with one command:

curl -fsSL https://raw.githubusercontent.com/markylaredo/pulsebar/master/install.sh | bash

The 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.

Uninstall

curl -fsSL https://raw.githubusercontent.com/markylaredo/pulsebar/master/uninstall.sh | bash

The uninstaller disables Launch at Login and moves PulseBar to the Trash. Your preferences are kept if you decide to reinstall later.

Build from source

PulseBar currently requires macOS 14 or later and Xcode 16 or later.

git clone https://github.com/markylaredo/pulsebar.git
cd pulsebar
open PulseBar.xcodeproj

In 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.

Verify the project

xcodebuild -project PulseBar.xcodeproj \
  -scheme PulseBar \
  -configuration Debug \
  -derivedDataPath .build \
  CODE_SIGNING_ALLOWED=NO test

Architecture

PulseBar 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.

Distribution and privacy

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.

A note about accuracy

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.

Support the project

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.

Buy Me a Coffee Support PulseBar on PayPal

License

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.

About

A small, native macOS system monitor that keeps the numbers I care about in the menu bar.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Contributors

Languages