System-wide microphone mute for macOS — menu bar icon, global hotkeys, and an on-screen HUD. Works in Zoom, Teams, Meet, FaceTime, browsers, and every other app by muting input devices via Core Audio.
Owner: WIXEE.AI · License: MIT · Version: 1.2.0
Homebrew-first distribution (App Store planned later). See ARCHITECTURE.md for design details.
- System-level mute via Core Audio (not app-specific mute buttons)
- Mute all input devices by default (optional: default input only)
- Virtual devices (
transportType == Virtual) are listed but ignored for mute control - Menu bar icon — click to toggle, right-click for menu
- Global hotkeys (customizable):
- Toggle: ⌘⇧M (and optional ⌘F5)
- Mute only / Unmute only (off by default)
- Push to flip: hold to invert mute, release to restore (off by default; default ⌥Space)
- Push to talk: hold to unmute, release to restore (off by default; default ⇧Space)
- Push to mute: hold to mute, release to restore (off by default; default ⇧⌥Space)
- Conflict warnings when two enabled shortcuts share the same keys
- On-screen HUD on mute/unmute (optional toast)
- Floating HUD (optional): always visible on each display
- Drag to reposition (per display, remembered)
- Click to toggle mute
- Right-click to hide/show on a display (also in menu bar)
- Sound feedback on mute/unmute (optional)
- Launch at login (optional)
- Preferences: General, Devices, Keyboard, About
- Re-applies mute when devices or the default input change
- macOS 14 Sonoma or later
- Xcode 15+ (to build)
- XcodeGen:
brew install xcodegen
UI follows the macOS system language. Bundled localizations:
23 languages — English (default) plus Czech, Danish, German, Greek, Spanish, Finnish, French, Hungarian, Italian, Japanese, Korean, Norwegian (Bokmål), Dutch, Polish, Portuguese, Romanian, Russian, Serbian (Latinica), Swedish, Turkish, Ukrainian, Chinese (Simplified).
One file per language under Resources/Localization/ (xx.lproj/Localizable.strings). See that folder’s README for the full table.
Code looks up keys via L10n (Sources/LockMic/Util/L10n.swift). To test: Xcode scheme → Options → App Language, or System Settings → Language & Region.
Marketing site lives in website/public/ and deploys to Firebase Hosting via Cloud Build (cloudbuild.yaml, firebase.json).
# Local preview
cd website/public && python3 -m http.server 8080See website/README.md for Firebase setup and CI deploy.
Start or restart (kills any running instance; builds if the app is missing):
./Scripts/start.shRebuild then restart:
./Scripts/start.sh --buildBuild only:
./Scripts/build_homebrew.sh
open build/LockMic.appPackage a release zip/DMG:
./Scripts/package_dmg.sh
# → build/dist/LockMic-1.2.0.zip (+ .dmg, sha256)LockMic is not in the official Homebrew core cask list yet. Install from this repo’s tap:
brew tap oochernyshev/lockmic https://github.com/oochernyshev/lockmic
brew install --cask lockmic
xattr -dr com.apple.quarantine /Applications/LockMic.app
open /Applications/LockMic.appFrom a local clone (no tap):
brew install --cask ./Casks/lockmic.rb
xattr -dr com.apple.quarantine /Applications/LockMic.appCask: Casks/lockmic.rb (must stay under root Casks/ for the tap to work).
xattr clears Gatekeeper quarantine until the app is Developer ID–notarized.
./Scripts/build_homebrew.sh
open build/LockMic.app| Action | How |
|---|---|
| Toggle mute | Click menu bar icon, ⌘⇧M, ⌘F5, or click the floating HUD |
| Push to talk | Hold PTT shortcut (Preferences → Keyboard; off by default) |
| Push to mute | Hold PTM shortcut (Preferences → Keyboard; off by default) |
| Push to flip | Hold to invert mute, release restores (off by default) |
| Menu / Preferences | Right-click (or Control-click) the menu bar icon |
| Floating HUD move | Drag the indicator (each display is independent) |
| Floating HUD hide/show | Right-click the indicator, or menu bar → Floating HUD |
| Quit | Menu → Quit LockMic |
| Section | Options |
|---|---|
| General | Status, HUD toast, floating HUD, sound, launch at login |
| Devices | Mute-all vs default-only, live input list (virtual = ignored) |
| Keyboard | Toggle / mute / unmute / flip / PTT / PTM; optional ⌘F5; conflicts; reset |
| About | Logo, version, WIXEE.AI, website, MIT license |
- Install Xcode +
xcodegen - Optional: SweetPad
- Generate & build:
./Scripts/build_homebrew.shor./Scripts/start.sh --build - Edit sources under
Sources/LockMic/
Sources/LockMic/ Swift app (App, Core, UI)
Resources/ Info.plist, entitlements, Assets (AppIcon, AppLogo)
Scripts/ start, build, package
homebrew/Casks/ Cask formula template
LICENSE MIT
ARCHITECTURE.md System design
logo.png Source artwork (generates icon sizes)
LockMic mutes devices through Core Audio only. It does not record audio and does not require microphone permission.
MIT — Copyright © 2026 WIXEE.AI
Open-core: this free app is MIT-licensed. Future Pro features may be offered separately by WIXEE.AI under different terms.