CLI tool
byrencheema/airstats avatar
byrencheema/airstats

AirStats: a macOS menu bar monitor that sips a fraction of one core

A menu bar system monitor for macOS. CPU, memory, GPU, network, disk, battery and thermals at 0.046% CPU.

353 stars14 forksSwiftMIT

At a glance

What is it?
A Swift menu bar system monitor reading CPU, memory, GPU, network, disk, battery and thermals through Mach, IOKit and sysctl, with a panel, a desktop widget and a windowless test core.
Who is it for?
AirStats fits Mac users on Apple silicon running macOS 14 or later who want live system numbers in the menu bar without paying a background tax for them, and developers who appreciate a measurement core with real tests. Skip it on Intel Macs, on older macOS, or if you need deep per-process analytics rather than live readings.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 8 days ago.
What is it written in?
Mainly Swift, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A monitor that runs all day, priced accordingly

A menu bar system monitor is the one app on a Mac that never quits, which makes its idle cost the whole product. AirStats, by byrencheema, is built around that observation. It reads CPU, memory, GPU, network, disk, battery, temperature, process and host statistics directly from the system, Mach, IOKit, sysctl and CoreWLAN are the named interfaces, and presents them in three places: the menu bar itself, a drop-down panel behind the status item, and a desktop widget you can leave on screen.

The headline number is idle cost: a few megabytes of memory and a fraction of a percent of one core, explicitly positioned against the tens of megabytes its peers take. There is no Dock icon. The requirements are macOS 14 or later on Apple silicon, so Intel Macs are outside the fence, and the README does not hedge about that.

Installing, updating, and staying updated

Two routes exist. The download from airstats.app is a signed and notarized disk image that opens without warnings, or Homebrew users take a one-liner:

sh
brew install --cask airstats

Updates run through Sparkle, the standard macOS updater, with a policy worth quoting in spirit: the app asks airstats.app once a week whether a newer version exists, and installs one only when you say so. Both the check frequency and the ask-first behavior can be turned off in General settings. For a tool that lives in the menu bar, that default, weekly, opt-in, is the correct temperament, and the README explains it rather than hiding it in a settings page.

Building from source, and why signing matters here

The source build needs the Swift 6 toolchain from Xcode 16:

sh
Scripts/build.sh release
cp -R .build/arm64-apple-macosx/release/AirStats.app /Applications/
open /Applications/AirStats.app

The build script wraps the SwiftPM binary in an .app bundle, copies Sparkle.framework into Contents/Frameworks, and signs it ad hoc. The README explains a macOS detail most projects leave as a mysterious failure: the system grants a status item only to a signed bundle with LSUIElement set, so an unsigned build simply cannot appear where the product lives.

The signing ladder is documented honestly: an ad-hoc signature runs a build you made yourself but macOS refuses an ad-hoc bundle that arrived over the internet, and Scripts/release.sh is what produces the shipped download, signing with a Developer ID certificate and stapling Apple's notarization ticket to the dmg. For anyone packaging a Mac app, that section is a miniature course.

The source layout enforces the architecture

The repository splits into three targets with a rule attached: AirStatKit holds the collectors, the sampling engine, settings and formatting, and never imports SwiftUI or AppKit. AirStatUI carries everything visual, the menu bar drawing, panel, widget, charts and design system. AirStats is the executable, the app delegate, and probe and render commands.

That separation is what lets the README claim contract tests for the collectors that run in a windowless process, plus a benchmark script that samples the menu bar monitors over one shared window on your Mac. For contributors, the layout answers where code goes before the first pull request; for evaluators, it explains how a stats tool can have meaningful tests at all, by making the measurement core independent of the UI that displays it.

What the readings cover

The metric list is broad enough to replace several single-purpose tools: CPU, memory and GPU load for the performance view, network throughput and disk activity for the traffic view, battery state for laptop life, and temperature and thermal readings for the health view, alongside process and host statistics. Each reading reaches all three surfaces, menu bar, panel and widget, so the choice is about placement rather than features.

The sampling design behind them is the part tuned for the always-on case: a dedicated kit without UI dependencies, a shared sampling window in the benchmark harness, and formatting kept in the measurement layer where it can be tested without a screen.

Project state

The project is MIT licensed, with three releases published, a contributing guide with pre-PR checks, and the last push on 2026-09-14. The documentation covers contact channels, an issue tracker for bugs and a direct email for private matters, and the benchmark script doubles as a regression harness for the product's central claim, its own resource use.

The limits are the requirements and the category. Apple silicon and macOS 14 exclude older hardware, and a menu bar monitor's feature set is bounded: if you need per-process network attribution, historical graphing or alerting, the README lists process statistics among the readings but does not advertise deeper analysis. What it promises instead is the cheapest possible always-on window into the machine, with the evidence, the benchmark script, committed next to the code.

Editorial conclusion

AirStats fits Mac users on Apple silicon running macOS 14 or later who want live system numbers in the menu bar without paying a background tax for them, and developers who appreciate a measurement core with real tests. Skip it on Intel Macs, on older macOS, or if you need deep per-process analytics rather than live readings. Verify the central claim on your machine: install the cask, leave it running for a day, and check its memory and CPU share in Activity Monitor against whatever monitor you run now.

Frequently asked questions

What does AirStats cost to run?

The README positions it at a few megabytes of memory and a fraction of a percent of one core, and ships a benchmark script that samples the menu bar monitors on your own Mac so you can measure that claim yourself.

Which Macs can run AirStats?

macOS 14 or later on Apple silicon. Intel Macs are outside the stated requirements.

How does AirStats update itself?

Through Sparkle. It checks airstats.app once a week and installs an update only when you approve; both the automatic check and the confirmation can be disabled in General settings.

Official sources

  1. byrencheema/airstats on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/byrencheema-airstats.svg)](https://hysenlabs.com/projects/byrencheema-airstats)