Skip to content

gabrielbrrll/binnacle

Repository files navigation

Binnacle

The free, open-source Mac monitor that names the culprit and tells you what to do.

Binnacle lives in your menu bar and watches your Mac's health — but unlike a gauge-only monitor, it speaks in plain language: what's wrong, why, which app is responsible, and what to do about it. It learns from your own usage and surfaces concrete, personalized advice.

🔴  Pressure — memory critical, swap 11.6 GB · Firefox
─────────────────────────────────────────────
🧠 Memory  ▕████████░░▏  16% free
⇅  Swap    ▕█████████░▏  11.6 GB used
🖥 CPU     ▕████░░░░░░▏  44% busy (1.2/core)
⚡ Power   ▕████████░░▏  battery 76% · 100% cpu
…
Trouble today · last 24h
  Memory pressure   — Firefox · 5h 43m
  CPU maxed out     — Android emulator · 5h 1m
Tips
  Restart Firefox — frees 3.6 GB
  <top CPU app> drove most CPU spikes — close it when idle

What it does

  • Monitors: memory pressure, swap, CPU load, thermal throttling, battery, per-app resource usage, and app crashes / hangs / out-of-memory kills.
  • Judges health the way macOS does: the status (Steady / Watch / Pressure) is driven by the operating system's own memory-pressure signal (kern.memorystatus_vm_pressure_level) plus per-core CPU load and thermal state. There are no machine-specific thresholds — it is correct on an 8 GB MacBook Air or a 192 GB Mac Studio without tuning.
  • Names the culprit: every pressure event records which apps were heaviest, so Binnacle can tell you "the Android emulator drove 37% of your CPU spikes this week."
  • Advises from your own data: the tips are generated from your top apps, culprits, crashes, and free disk — not a fixed list. If you've never run an Android emulator, it will never mention one.
  • A weekly digest (markdown) and urgent notifications for critical events only.

Privacy

Everything is local. Binnacle records process names and resource numbers in a local SQLite database, makes no network connections, and needs no root/admin. Data auto-prunes (default 45 days).

Requirements

  • macOS 13 (Ventura) or later, Apple Silicon or Intel.
  • No dependencies — a single ~350 KB native binary (Swift + AppKit).

Install

git clone https://github.com/gabrielbrrll/binnacle
cd binnacle
./install.sh        # builds, installs, and starts it as a login item

You'll see a ship's wheel appear in your menu bar. Uninstall with ./uninstall.sh (your history is kept; the script prints how to erase it).

Or just build and run it once (no login item):

swift build -c release && ./.build/release/Binnacle

Homebrew (once a release is tagged): brew install gabrielbrrll/tap/binnacle (formula skeleton in Formula/binnacle.rb).

Configuration (optional)

Binnacle needs no configuration. Power users can drop a ~/.config/binnacle/config.json to override the sampling interval, notifications, retention, and the relative CPU/thermal knobs — see config.example.json. The memory-health judgment always comes from macOS itself and is not configurable (by design).

License

MIT.

About

Free, open-source macOS menu-bar advisor for resource health — names the culprit and tells you what to do. Install: brew install gabrielbrrll/tap/binnacle

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors