Skip to content

blaineam/blip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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, ~250 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
  • Free β€” open source under MIT, notarized releases on GitHub

✨ Features

Category Menu Bar Detail Panel
CPU Usage bar + percentage Per-core bars, user/system split, load averages (1m/5m/15m), P-core and E-core counts, top processes with app icons
Memory Usage bar + percentage Total memory, active/wired/compressed/app breakdown, memory pressure, top processes with app icons
Disk Usage bar + percentage All mounted volumes with space used/free, real-time read/write speeds, I/O history chart
Network Connectivity dot Upload/download speeds, WAN and router ping latency (configurable target), bandwidth history chart, IPv4/IPv6, LAN IP, router IP, MAC address, WAN IP reveal, VPN detection (Tailscale, WireGuard), click-to-copy addresses
GPU β€” 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
  • Hover detail panels β€” hover any row in the popover to reveal a detailed sub-panel (like iStats Menus)
  • Two layouts β€” stacked (compact vertical bars) or horizontal (wide side-by-side)
  • Customizable β€” category colors, monochrome, or custom color picker; separate measurement and value label toggles
  • Launch at login β€” one toggle in settings

πŸ“¦ Install

Homebrew (Recommended)

brew install --cask blaineam/tap/blip

Download DMG

Grab the latest notarized .dmg from Releases. Open it, drag Blip 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.

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

πŸ”§ How It Works

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                     Menu Bar (NSStatusItem)               β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”                                β”‚
β”‚  β”‚ CPU β”‚ β”‚ MEM β”‚ β”‚  HD β”‚ ●                               β”‚
β”‚  β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜                                β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                         β”‚ click
              β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  hover  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
              β”‚   Popover           β”‚ ──────► β”‚ Detail Panel β”‚
              β”‚  β”Œβ”€ CPU    45%   β–Ί β”‚         β”‚  Per-core    β”‚
              β”‚  β”œβ”€ Memory 67%   β–Ί β”‚         β”‚  Load avgs   β”‚
              β”‚  β”œβ”€ Disk   34%   β–Ί β”‚         β”‚  Top procs   β”‚
              β”‚  β”œβ”€ Network ↓↑   β–Ί β”‚         β”‚  Charts      β”‚
              β”‚  β”œβ”€ GPU    12%   β–Ί β”‚         β”‚  ...         β”‚
              β”‚  └─ Battery 89%  β–Ί β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              β”‚                     β”‚
              β”‚  Mac14,7 Β· macOS 15 β”‚
              β”‚  ⏱ 3d 2h β”‚ Nominal β”‚
              β”‚  Blip v1.1.0       β”‚
              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ—‚ 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     # ps + NSRunningApplication
β”‚   β”‚   β”‚   └── SMCKit.swift             # IOKit SMC interface
β”‚   β”‚   └── 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
β”œβ”€β”€ Scripts/
β”‚   β”œβ”€β”€ build-dmg.sh                     # Local build + package
β”‚   └── 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 250 MB. Blip shows its own memory footprint in the popover footer so you can always verify.
Will there be a Mac App Store version?
Possibly. The unsandboxed requirement makes App Store distribution more complex, but it's on the radar.

πŸ“„ 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

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors