A minimalist macOS menu bar app for instant microphone control
Shhh is a lightweight, native macOS menu bar application that gives you instant control over your microphone. With a single click or keyboard shortcut, you can mute/unmute your mic, adjust volume, and monitor audio levels—all from your menu bar.
Perfect for:
- 🎙️ Podcast recording
- 💼 Video conferences
- 🎮 Gaming
- 🎵 Music production
- 📞 Voice calls
- One-Click Mute/Unmute - Left-click the menu bar icon to toggle microphone
- Global Hotkey - Customizable keyboard shortcut (default:
⌃⌥⌘M) - Volume Control - Smooth slider for precise volume adjustment (0-100%)
- Visual Feedback - Menu bar icon opacity reflects current volume level
- Start at Login - Optional auto-start on system boot
- Native macOS UI - System-standard menus and controls
- Menu Bar Only - No dock icon, stays out of your way
- Dark Mode Support - Seamless integration with system appearance
- Minimal Resource Usage - Lightweight and efficient
- Sandboxed - Runs in macOS App Sandbox for security
- No Network Access - All processing happens locally
- No Data Collection - Your privacy is paramount
- Open Source - Fully transparent codebase
- macOS 26.2 (Tahoe) or later
- GitHub Releases — free
- Gumroad — same app, pay what you want ($0 works)
The prebuilt zip is not notarized yet: on first launch, right-click Shhh.app and choose Open.
-
Clone the repository
git clone https://github.com/rajmalviya456/Shhh.git cd Shhh -
Open in Xcode
open Shhh.xcodeproj
-
Build and Run
- Select the
Shhhscheme - Press
⌘Rto build and run
- Select the
- Launch Shhh - The microphone icon appears in your menu bar
- Left-click - Toggle mute/unmute instantly
- Right-click - Open the control menu
- Toggle Mute -
⌃⌥⌘M(Control + Option + Command + M) - Customizable - Quit App -
⌘Q(Command + Q)
- Right-click menu bar icon
- Select "Change Shortcut"
- Press your desired key combination
- Click "Save" or press Enter
Shhh is built with the latest Swift 6 features and modern macOS development practices:
- ✅ Swift Concurrency -
async/awaitwith@MainActordefault isolation - ✅ Event-Driven Audio - CoreAudio HAL property listeners, no polling
- ✅ Structured Logging - OSLog for production-grade logging
- ✅ Typed Errors - Comprehensive error handling
- ✅ SwiftUI - Modern declarative UI
- ✅ Combine - Reactive state management
Shhh/
├── Shhh/
│ ├── ShhhApp.swift # App entry point
│ ├── AppDelegate.swift # Menu bar setup
│ ├── MicController.swift # Microphone control (CoreAudio HAL)
│ ├── MicState.swift # Reactive state management
│ ├── HotKeyManager.swift # Global hotkey handling
│ ├── LoginItemManager.swift # Start at login
│ └── Views/
│ ├── MenuContentView.swift # Main menu UI
│ └── HotkeyRecorderView.swift # Hotkey configuration
└── ShhhTests/ # Unit tests
- Controls the default input device via the CoreAudio HAL
- Handles volume get/set operations
- Manages mute/unmute with volume restoration
- Event-driven change notifications via
AudioObjectAddPropertyListener - Thread-safe with
@MainActorisolation
- Observable state management with
@Publishedproperties - Updates instantly on external volume changes (no polling)
- Error logging via OSLog
- Global keyboard shortcut registration
- Persistent hotkey preferences
- Singleton pattern for app-wide access
- Window management for hotkey configuration
# Clean build
xcodebuild -project Shhh.xcodeproj -scheme Shhh clean build
# Run tests
xcodebuild test -project Shhh.xcodeproj -scheme Shhh
# Build for release
xcodebuild -project Shhh.xcodeproj -scheme Shhh -configuration Release build- HotKey - Global keyboard shortcut handling
- ✅ Approachable concurrency with
@MainActordefault isolation - ✅ Comprehensive error handling
- ✅ OSLog structured logging
- ✅ Unit test coverage for core components
- Check System Settings → Keyboard → Keyboard Shortcuts
- Ensure no conflicts with existing shortcuts
- Try a different key combination
- Open System Settings → General → Login Items
- Verify Shhh is in the list
- Toggle "Start at Login" in the app menu
Contributions are welcome! Please feel free to submit a Pull Request.
- Follow Swift API Design Guidelines
- Maintain Swift 6 concurrency safety
- Add tests for new features
- Update documentation
MIT License - See LICENSE file for details
- Built with HotKey by Sam Soffes
- Inspired by the need for simple, reliable microphone control on macOS
Made with ❤️ for the macOS community