VitalBar is a macOS menu bar app that samples system status and visualizes it directly in the menu bar.
- Menu-bar-only app (
LSUIElementbehavior). - Compact menu bar label with CPU, memory, and disk history graphs.
- Current CPU percentage in the primary menu.
- Memory display with:
- used / total
- memory pressure
- app memory
- wired memory
- cached files
- compressed memory
- swap used
- Disk usage display with
used / total (percent). - Uptime display.
- Temperature sampling:
- CPU and SoC summary in the primary menu
- full temperature detail submenu when additional sensors are available
- SMC sampling with IOHID fallback for environments where AppleSMC access is unavailable
- Stale state when sampling stops updating.
VitalBarsubmenu with:Keep Mac AwakeLaunch at LoginQuit VitalBar
- Menu bar status indicator for
Keep Mac Awake. - Unit and view model tests.
- CI and release workflows for build, test, coverage, signing, and notarized releases.
- macOS 14 or later
- Swift 6.2
- Xcode 16.1 or a compatible toolchain
Sources/VitalBarCore: core sampling, history buffers, shared models, and service logic.Sources/VitalBarApp: app lifecycle, menu bar UI, launch-at-login, keep-awake, and temperature integration.Tests/VitalBarCoreTests: unit tests for core sampling and support types.Tests/VitalBarAppTests: UI-facing and view model behavior tests.Scripts/: build, coverage, and icon helper scripts..github/workflows: CI and release workflows.
make runDirect SwiftPM invocation also works:
swift run VitalBarAppmake help
make build
make run
make test
make coverage
make app VERSION=0.1.0
make bundle VERSION=0.1.0
make icon
make icon-candidates
make cimake app VERSION=0.1.0This creates dist/VitalBar.app.
If you want Launch at Login to work, run the bundled app from /Applications, for example:
cp -R dist/VitalBar.app /Applications/
open /Applications/VitalBar.appmake testVitalBarCore line coverage must stay at or above 80%.
make coverageSet these GitHub repository secrets before pushing v* tags:
MACOS_CERTIFICATE_P12(base64-encoded Developer ID Application certificate)MACOS_CERTIFICATE_PASSWORDMACOS_CERTIFICATE_IDENTITY(codesign identity string)KEYCHAIN_PASSWORDAPPLE_IDAPPLE_APP_SPECIFIC_PASSWORDAPPLE_TEAM_ID
- Launch the app and confirm the menu bar label appears within a few seconds.
- Confirm CPU, memory, and disk graphs update over time.
- Open the primary menu and verify current CPU, memory, disk, and uptime values render.
- Verify temperature behavior:
Temperatureis disabled when no temperature is available.CPU / SoCappears when either reading is available.- the detail submenu appears only when sensors beyond CPU / SoC are available.
- Toggle
Keep Mac Awakeand confirm:- the submenu item changes state
- the coffee cup indicator appears in the menu bar
- Toggle
Launch at Loginfrom the bundled app in/Applications. - Verify stale warning appears if sampling cannot update for several seconds.
This project is licensed under the MIT License. See LICENSE.