Skip to content

Latest commit

Β 

History

228 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Blip

A featherlight macOS menu bar system monitor. CPU, memory, disk, GPU, network, battery β€” all in a tiny, beautiful package.

macOS Apple Silicon License App Size


πŸ’‘ Why Blip?

Existing system monitors are either bloated, expensive, or missing key features. Blip takes the best ideas from iStats Menus and Stats Panel, strips away the fluff, and delivers a monitor that's:

  • Tiny β€” ~2 MB app bundle, ~42 MB memory footprint
  • Fast β€” async/await throughout, polls every 2 seconds
  • Pretty β€” clean layout, smooth charts, hover detail panels
  • Focused β€” system metrics only, no weather or clock widgets
  • Localized β€” English plus German, Spanish, French, Italian, Japanese, Korean, Brazilian Portuguese, and Simplified Chinese
  • Free β€” open source under MIT, notarized releases on GitHub

✨ Features

Category Menu Bar Detail Panel
CPU Usage bar + percentage Per-core bars, user/system/idle split, load averages (1m/5m/15m), P-core and E-core counts, top processes with accurate delta-based CPU and app icons
Memory Usage bar + percentage Total memory, active/wired/compressed/app breakdown, swap usage, memory pressure (factors in swap), top processes with accurate phys_footprint memory and app icons
Disk Usage bar + percentage All mounted volumes with space used/free, real-time read/write speeds, total data read/written since boot, I/O history chart with Y-axis labels, S.M.A.R.T. drive health β€” SSD life remaining, available spare, drive temperature, lifetime bytes written/read, power-on hours, power cycles, unsafe shutdowns (NVMe health log, internal + NVMe enclosures), disk speed test β€” uncached sequential write/read + random IOPS benchmark with optional interval testing, runnable on any volume in one click via its gauge button
Network Connectivity dot Upload/download speeds, accurate session totals up/down (64-bit, wrap-corrected), WAN and router ping latency (configurable target), bandwidth history chart with Y-axis labels, all active interfaces (Wi-Fi + Ethernet), IPv4/IPv6, LAN IP, router IP, MAC address, WAN IP reveal, VPN detection (Tailscale, WireGuard), click-to-copy addresses, live Traceroute / MTR with per-hop loss & latency, multi-gig speed test (download/upload throughput against Cloudflare or a self-hosted OpenSpeedTest LAN server) with optional interval testing
Processes β€” Top processes by CPU and memory with app icons; kill a process right from the list (user-owned processes; routed through the helper when sandboxed)
GPU Usage bar + percentage (optional, off by default) Apple Silicon GPU utilization, renderer name, GPU core count, historical usage chart
Battery β€” Charge %, health %, cycle count, temperature, time remaining, charging status
Fans β€” RPM per fan with min/max range bars, CPU and GPU temperatures
System β€” Mac model, macOS version, uptime, thermal state, Blip's own memory usage

Plus:

  • Historical charts β€” sparklines for CPU, memory, GPU; dual-line charts for disk I/O and network bandwidth with auto-scaled Y-axis labels
  • Live detail panels β€” hover any row in the popover to reveal a detailed sub-panel that updates in real-time (like iStats Menus)
  • Two layouts β€” horizontal (default, wide side-by-side) or stacked (compact vertical bars)
  • Customizable β€” category colors, monochrome, or custom color picker; separate measurement and value label toggles; optional utilization colorization
  • Launch at login β€” one toggle in settings
  • Shortcuts support (App Intents) β€” automate Blip from the Shortcuts app: Get System Metric (37 metrics, chainable numeric results, optional 2-minute average/min/max for charted metrics), Run Drive Speed Test on any mounted volume, Run Network Speed Test (public or self-hosted OpenSpeedTest), Run/Stop Traceroute with an MTR summary, Open Traceroute Map, and Get/Set Setting over a curated, validated settings catalog

πŸ“± Blip for iOS / iPadOS

Blip 2.0 brings a native companion app (BlipMobile/) to iPhone and iPad β€” the honest subset of what iOS exposes to a sandboxed app, plus the things a phone does best:

  • Overview β€” CPU, memory, storage, battery, thermal, network and device cards, each opening a full detail screen; tap-to-copy on reference values, tap-to-reveal WAN IP, VPN + radio (5G/LTE) awareness, boot-derived uptime, human device names, and honest suggestions when a real signal fires (storage nearly full, throttling, Low Data Mode…)
  • Blip Bench β€” the same fixed-reference-unit benchmark as the Mac (scores are comparable across every device running Blip), with an animated running view and sustained-phase throttle measurement
  • Speed β€” public OpenSpeedTest service or your own server, live curve, capped history, share cards
  • Network β€” ping and traceroute over sandbox-legal ICMP datagram sockets, with offline GeoIP hop annotations (same DB-IP database as the Mac)
  • Storage β€” disk speed tests on internal storage or any Files-accessible external volume
  • Widgets β€” bench score, storage, last speed test; every fact stamped with its age
  • Shortcuts β€” Run Benchmark, Run Speed Test, Get Device Snapshot (Markdown)
  • Snapshot export β€” one file with everything Blip knows, ready for the share sheet

Same repo, same xcodegen project: build the BlipMobile scheme. Ships on the App Store as Blip Stats for iOS.

πŸ“¦ Install

Mac App Store

Blip is available free on the Mac App Store as Blip Stats β€” the same app as the direct download and Homebrew builds.

Download on the Mac App Store

Some advanced features (fan speeds, temperatures, GPU utilization, disk I/O, top processes) require the free Blip Helper companion app.

Homebrew (Recommended for Direct Download)

brew install --cask blaineam/tap/blip

Download DMG

Grab the latest notarized Blip.dmg (or BlipHelper.dmg for the companion helper). Open it, drag to Applications, done.

Build from Source

# Prerequisites
brew install xcodegen

# Clone and build
git clone https://github.com/blaineam/blip.git
cd blip
xcodegen generate
xcodebuild -scheme Blip -configuration Release -arch arm64

The app lands in .build/DerivedData/Build/Products/Release/Blip.app.

Run the Tests

xcodebuild test -scheme Blip -destination 'platform=macOS,arch=arm64'

# Or with the coverage ratchet (fails below the gated minimum):
./Scripts/coverage-check.sh

Build DMG Locally

chmod +x Scripts/build-dmg.sh
./Scripts/build-dmg.sh              # full build + notarize
./Scripts/build-dmg.sh --skip-notarize  # unsigned local build

❀️ Support future development

Blip is free β€” no ads, no tracking, no subscription. If it earns a place on your Mac, you can help fund what comes next.

Sponsor on GitHub Β· Buy me a coffee on Ko-fi

All the ways to support β†’

πŸ”§ How It Works

+-----------------------------------------------------------+
|                   Menu Bar (NSStatusItem)                  |
|   [CPU]  [MEM]  [HD]  *                                   |
+----------------------------+------------------------------+
                             | click
                  +----------v-----------+
                  |  Popover             |  hover  +--------+
                  |   CPU     45%     >  | ------> | Detail |
                  |   Memory  67%     >  |         | Panel  |
                  |   Disk    34%     >  |         +--------+
                  |   Network  v^     >  |         | Cores  |
                  |   GPU     12%     >  |         | Loads  |
                  |   Battery 89%     >  |         | Procs  |
                  |                      |         | Charts |
                  |  MacBook Pro (M4)    |         +--------+
                  |  Up 3d 2h | Nominal  |
                  |  Blip v1.4.7         |
                  +----------------------+

πŸ—‚ Project Structure

Blip/
β”œβ”€β”€ Blip/
β”‚   β”œβ”€β”€ Sources/
β”‚   β”‚   β”œβ”€β”€ App/BlipApp.swift            # Entry point, NSStatusItem, popover
β”‚   β”‚   β”œβ”€β”€ Models/
β”‚   β”‚   β”‚   β”œβ”€β”€ SystemStats.swift        # All data models
β”‚   β”‚   β”‚   └── HistoryBuffer.swift      # Ring buffer for charts
β”‚   β”‚   β”œβ”€β”€ Services/
β”‚   β”‚   β”‚   β”œβ”€β”€ SystemMonitor.swift      # Async coordinator
β”‚   β”‚   β”‚   β”œβ”€β”€ CPUMonitor.swift         # host_processor_info
β”‚   β”‚   β”‚   β”œβ”€β”€ MemoryMonitor.swift      # host_statistics64
β”‚   β”‚   β”‚   β”œβ”€β”€ DiskMonitor.swift        # Volume stats + IOKit I/O
β”‚   β”‚   β”‚   β”œβ”€β”€ GPUMonitor.swift         # IOAccelerator + Metal
β”‚   β”‚   β”‚   β”œβ”€β”€ NetworkMonitor.swift     # NWPathMonitor + getifaddrs
β”‚   β”‚   β”‚   β”œβ”€β”€ BatteryMonitor.swift     # IOPSCopyPowerSourcesInfo
β”‚   β”‚   β”‚   β”œβ”€β”€ FanMonitor.swift         # SMC fan keys
β”‚   β”‚   β”‚   β”œβ”€β”€ ProcessMonitor.swift     # proc_pidinfo + proc_pid_rusage
β”‚   β”‚   β”‚   └── SMCKit.swift             # IOKit SMC interface
β”‚   β”‚   β”œβ”€β”€ Intents/                     # App Intents (Shortcuts): metrics,
β”‚   β”‚   β”‚                                #   speed tests, traceroute, settings
β”‚   β”‚   └── Views/
β”‚   β”‚       β”œβ”€β”€ StatusItemView.swift     # Menu bar layout (stacked/horizontal)
β”‚   β”‚       β”œβ”€β”€ PopoverView.swift        # Main overview + detail routing
β”‚   β”‚       β”œβ”€β”€ SettingsView.swift       # Preferences window
β”‚   β”‚       β”œβ”€β”€ Panels/                  # Detail panels per category
β”‚   β”‚       └── Components/              # Charts, bars, process rows
β”‚   └── Resources/
β”‚       β”œβ”€β”€ Assets.xcassets
β”‚       β”œβ”€β”€ Info.plist
β”‚       └── Blip.entitlements
β”œβ”€β”€ BlipTests/                           # Hermetic unit tests (intents, models)
β”œβ”€β”€ Scripts/
β”‚   β”œβ”€β”€ build-dmg.sh                     # Local build + package
β”‚   β”œβ”€β”€ coverage-check.sh                # App-logic coverage ratchet (xccov)
β”‚   └── generate-assets.swift            # App icon generator
β”œβ”€β”€ .github/workflows/
β”‚   β”œβ”€β”€ ci.yml                           # PR build + QA checks
β”‚   └── release.yml                      # Tag β†’ build β†’ notarize β†’ release
β”œβ”€β”€ docs/                                # GitHub Pages site
β”œβ”€β”€ project.yml                          # XcodeGen project definition
β”œβ”€β”€ CHANGELOG.md
└── LICENSE                              # MIT

🀝 Contributing

  1. Fork and clone the repo
  2. brew install xcodegen && xcodegen generate
  3. Open Blip.xcodeproj in Xcode or build from the command line
  4. Make your changes, test on Apple Silicon hardware
  5. Open a PR

Guidelines

  • Keep it tiny β€” no external dependencies
  • Match the existing code style (SwiftUI, async/await, value types)
  • Test on actual hardware β€” simulators can't read SMC or IOKit sensors
  • Open an issue first for large changes

πŸ–₯ Requirements

  • macOS 14.0 (Sonoma) or later
  • Apple Silicon (M1, M2, M3, M4, or newer)
  • Xcode 16+ and XcodeGen (for building from source)

❓ FAQ

Does Blip work on Intel Macs?
No. Blip targets Apple Silicon exclusively. It uses ARM64-specific page sizes and Apple Silicon IOKit interfaces for GPU and thermal monitoring.
Why does it need to run unsandboxed?
Blip reads hardware sensors (SMC for fans, IOKit for GPU/disk I/O, process list for top apps) which require unsandboxed access. The app is fully open source β€” you can audit every line, and every release is notarized by Apple.
How much memory does Blip use?
Typically around 42 MB physical footprint. Blip shows its own memory usage in the popover footer so you can always verify.
Why does the menu bar readout look blurry on one of my displays?
When two displays run at different pixel densities (a Retina MacBook next to a standard-DPI external, say), macOS renders a status item once β€” at the scale of the display whose menu bar is currently active β€” and mirrors a scaled copy to the other display. Every menu bar app with a custom view behaves this way; it isn't something Blip can override. The workaround is to run both displays at the same backing scale: give the external a HiDPI ("Retina") scaled resolution in System Settings β†’ Displays, or with a tool like BetterDisplay.
Is Blip really free?
Yes. The direct download, the Homebrew cask and the Mac App Store build are all free and identical β€” there is no paid tier and nothing to unlock. If you'd like to support development, use the links in the Support future development section above.

🀝 Contributors

Blip is better because people send patches β€” thank you!

Contributors

Made with contrib.rocks; updates automatically as PRs land.

πŸ“„ License

MIT β€” free as in beer and free as in freedom. See LICENSE for details.


Built by Blaine Miller. If Blip saves you from installing a 200 MB monitoring suite, consider starring the repo.

About

A featherlight macOS menu bar system monitor

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages