LocalVoiceAI needs two macOS privacy permissions to function: one to watch for the push-to-talk keypress anywhere on the system, and one to simulate the paste action that delivers transcribed text into whatever app you are using. Both permissions are granted once in System Settings and persist across reboots — you will not be prompted again unless the binary changes.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/npateriya/LocalVoiceAI/llms.txt
Use this file to discover all available pages before exploring further.
Accessibility
What it does: Accessibility access allows LocalVoiceAI to simulate a Cmd+V keypress (CGEventPost) into the currently focused window. Without this permission, transcribed text cannot be pasted anywhere.
How to grant it:
- Open System Settings → Privacy & Security → Accessibility.
- Click the + button.
- Navigate to
~/.local/bin/and select localvoice. - Confirm the toggle next to
localvoiceis blue (enabled).
Input Monitoring
What it does: Input Monitoring allows LocalVoiceAI to install aCGEventTap at the session level, which detects the Fn+F10 keypress globally — regardless of which app has focus. Without this permission, the service starts but never receives key events.
How to grant it:
- Open System Settings → Privacy & Security → Input Monitoring.
- Click the + button.
- Navigate to
~/.local/bin/and select localvoice. - Confirm the toggle next to
localvoiceis blue (enabled).
Verifying Permissions Work
If one or both permissions are missing, the service will fail to create its event tap and exit immediately. Open the log to see the exact error:localvoice entry from both lists (if present), re-add ~/.local/bin/localvoice, ensure both toggles are blue, then restart the service:
Running
localvoice directly from a terminal (e.g., ~/.local/bin/localvoice) may fail with permission errors even after granting access in System Settings. This happens because macOS applies permission checks based on the parent process, and terminal emulators sometimes have conflicting entitlements. Always run LocalVoiceAI through its LaunchAgent — installed via make install and started with make start or launchctl start com.localvoiceai.localvoice — so it runs as its own independent process with the correct authorization context.