Skip to content
eyupucmazPublic

About

A lightweight, privacy-friendly macOS menu bar system monitor.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

MacStats

Website · Wiki & user guide · Download

MacStats is a lightweight macOS menu bar app that monitors your Mac. It never writes fan or SMC settings. The v0.2.0 public preview requires macOS 13 (Ventura) or later.

It reports CPU, memory, GPU, disk capacity, network, and battery metrics. When the hardware exposes them, it also reports fan RPM and temperature. Fan speed is a reading only: MacStats does not include fan control.

It also offers optional audio controls in an Audio tab (see Audio controls) and a detail page for every metric (see Details).

Download and install

Download the v0.2.0 public preview from GitHub Releases. The v0.2.0 release assets are MacStats-0.2.0-universal.dmg and MacStats-0.2.0-universal.dmg.sha256.

  1. Open the DMG and drag MacStats.app to Applications.
  2. Because this preview is ad-hoc signed and not notarized, open it with Control-click → Open, or choose Open Anyway in System Settings → Privacy & Security.
  3. MacStats runs from the menu bar rather than the Dock.

Verify the downloaded DMG before opening it:

cd ~/Downloads
shasum -a 256 -c MacStats-0.2.0-universal.dmg.sha256

Audio controls

The popover has a System tab for metrics and an Audio tab with optional controls:

  • Devices: choose the default output and input device, and set the output device's volume and mute. These work on macOS 13 or later.
  • App Mixer: adjust the volume of, or mute, individual apps that are playing audio. The mixer requires macOS 14.2 or later, is off until you select Enable App Mixer, and stays active only while enabled. The first time you enable it, macOS asks for system audio-capture permission.

Details

Click any card in the System tab to open its detail page in the same popover: live charts over the last minute, 5 minutes, 15 minutes or hour (hover for exact values; min, avg and max for the visible range), a breakdown of the number on the card, and the context behind it, such as the busiest processes. There is a page for CPU, GPU, memory, disk, network, battery, fan and temperature.

MacStats CPU detail page with a usage chart and per-core load MacStats Temperature detail page with a temperature chart and grouped sensors

  • Go back with the chevron, Esc or ⌘[. Closing the popover returns to the cards.
  • Right-click MacStats in the menu bar (or select ⋯ in the popover) and choose Details to open any page directly. With a single metric in the menu bar, Settings → Details can make a click open that metric's page.
  • History is kept in memory for the last hour only; nothing is written to disk. The pages make no network requests. Per-process GPU and network usage and the public IP address are not shown by design, and the Wi-Fi network name needs Location access, which MacStats never requests.

See the user guide for what each page shows.

Languages

MacStats is available in English and Turkish and follows your macOS language. To change it for MacStats only, use System Settings → General → Language & Region → Applications. The three-letter menu bar labels (CPU, RAM, DSK, NET, …) and unit symbols stay the same in every language to keep the menu bar compact.

Translations live in Sources/MacStats/Resources/<language>.lproj/Localizable.strings (app text) and AppResources/<language>.lproj/InfoPlist.strings (macOS permission prompts); swift test checks that every language has every string.

Privacy

MacStats reads local system metrics. It has no accounts, no telemetry, and no network data upload by the app. Preferences are saved locally on your Mac.

Audio capture: the App Mixer needs system audio-capture permission so it can adjust each app's volume. Audio is processed live on your Mac only while the mixer is enabled; it is never recorded, stored, or sent anywhere. You can revoke the permission at any time in System Settings → Privacy & Security → Screen & System Audio Recording.

Limitations

  • Hardware and SMC metric availability varies by Mac model and macOS version. Unavailable metrics are shown as unavailable rather than invented.
  • Fan control is not included. MacStats never writes fan or SMC settings.
  • The per-app App Mixer requires macOS 14.2 or later; on earlier versions the Audio tab offers device selection and output volume only.
  • The public preview uses an ad-hoc signature. An ad-hoc signature is not notarization. Because each update has a new ad-hoc signature, macOS asks for the App Mixer's audio-capture permission again after you update.
  • CI verifies the packaged app as Universal 2 (arm64 and x86_64); this is build verification, not a claim that every metric is available on every Mac.

Build, test, and package

Building the audio code requires Xcode 15.1 or later (the macOS 14.2 SDK). The built app still runs on macOS 13 or later. Then run:

swift build
swift test
bash Scripts/check-monitoring-only.sh
for script in Scripts/*.sh; do bash -n "$script"; done

APP_VERSION=0.2.0 BUILD_NUMBER=1 RELEASE_STRICT=1 bash Scripts/build-app.sh
bash Scripts/package-dmg.sh 0.2.0
bash Scripts/verify-release.sh 0.2.0 1

The package command produces dist/MacStats-0.2.0-universal.dmg and its .sha256 checksum file.

Contributing and roadmap

MacStats is maintained by Eyüp Uçmaz.

Visit the MacStats website for screenshots and the complete user guide.

About

A lightweight, privacy-friendly macOS menu bar system monitor.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages