Per-application audio volume control for macOS via a custom HAL audio driver.
Status: Not working. Some basics are in place, including a UI. Next up: refine app detection, troubleshoot user experience.

UI is from development - Finder volume won't be included
AppFaders is a menu bar app that lets you control volume individually for each application. It works by installing a virtual audio device (HAL plug-in) that sits between apps and your output device.
┌─────────────────────┐ ┌─────────────────────┐
│ │ XPC │ │
│ Host App │◄──────────────►│ Helper Service │
│ ───────── │ │ ────────────── │
│ • Menu Bar UI │ │ • VolumeStore │
│ • App monitoring │ │ • XPC listener │
│ │ │ │
└─────────────────────┘ └──────────┬──────────┘
│
│ XPC
▼
┌─────────────────────┐
│ │
│ HAL Driver │
│ ────────── │
│ • Virtual device │
│ • Passthrough │
│ │
└─────────────────────┘| Requirement | Details |
|---|---|
| macOS | 26+ (Tahoe) |
| Architecture | Apple Silicon (arm64) |
| Privileges | Admin (for driver installation) |
swift build
swift testswift build
swift run AppFadersNote: Requires an Apple Developer account and valid signing certificate.
# Build, sign, and install
Scripts/install-driver.sh
# Uninstall
Scripts/uninstall-driver.sh# Install Tart if needed
brew install cirruslabs/cli/tart
# Clone a macOS Tahoe vanilla image (~21.7 GB)
tart clone ghcr.io/cirruslabs/macos-tahoe-vanilla:latest appfaders-test
# Build the project then boot the VM with directory mounted
swift build
tart run --dir=appfaders:~/Developer/AppFaders:ro appfaders-test
# Inside the VM (login: admin/admin), open Terminal and run:
bash "/Volumes/My Shared Files/appfaders/Scripts/vm-spike.sh"| Target | Description |
|---|---|
AppFaders |
SwiftUI menu bar app |
AppFadersCore |
Shared library (TrackedApp, DriverBridge, AppAudioMonitor) |
AppFadersHelper |
XPC service (LaunchDaemon) for volume state |
AppFadersDriver |
Swift HAL driver implementation |
AppFadersDriverBridge |
C interface for CoreAudio HAL |
BundleAssembler |
SPM plugin for .driver bundle packaging |
| Phase | Name | Status |
|---|---|---|
| 1 | driver-foundation — Virtual device registration and passthrough | ✅ |
| 2 | host-audio-orchestrator — App monitoring + XPC IPC | ✅ |
| 3 | desktop-ui — Menu bar UI (NSPanel + SwiftUI) | ✅ |
| 4 | system-delivery — Signed PKG installer + notarization | 🔜 |
| 5 | settings-and-hotkeys — Launch at login + global hotkeys | ⏳ |