Skip to content

Overview

Helm is a native macOS menu bar app that gives you a single control plane for all your package managers and runtime tools. Instead of switching between brew, mise, rustup, npm, and others, Helm lets you see everything in one place — installed packages, available updates, and background tasks — all from your menu bar.

Developers and power users on macOS who manage software through multiple package managers and want a unified, safe way to keep everything up to date.

Helm v0.7.0 supports five package managers with more planned:

ManagerTypeCapabilitiesStatus
HomebrewSystem package managerDetect, list installed, list outdated, searchActive
miseTool/runtime managerDetect, list installed, list outdatedActive
rustupRust toolchain managerDetect, list installed, list outdatedActive
softwareupdatemacOS system updatesDetect, list outdated (with restart detection)Active
masMac App StoreDetect, list installed, list outdatedActive

Key features:

  • Menu bar app — lightweight floating panel, no Dock icon
  • Dashboard — package stats, manager grid, and recent task activity at a glance
  • Package list — browse installed, upgradable, and available packages with status filters and manager filter
  • Progressive search — instant local filtering with debounced remote search
  • Authority-ordered refresh — Authoritative (mise, rustup) → Standard (mas) → Guarded (Homebrew, softwareupdate)
  • Restart detection — surface restart-required updates from macOS softwareupdate
  • Background tasks — real-time task tracking with per-manager serial execution

Helm has a three-layer architecture:

LayerTechnologyRole
UISwiftUIMenu bar app with floating panel — reads state, emits intents
ServiceXPCHosts Rust core in a separate unsandboxed process for shell access
CoreRustAll business logic, adapters, orchestration, and persistence

The XPC boundary isolates process execution from the sandboxed app. The Rust core is UI-agnostic and fully testable with fixture-based deterministic tests.

Each package manager is implemented as an adapter — a self-contained module that knows how to detect, list, search, and manage packages for that specific tool. Adapters declare their capabilities, and the orchestration engine handles scheduling, parallelism, and failure isolation.