A menu-bar app with no Dock icon. Hold the globe key, speak, release. Two system permissions, one of which needs a manual trip through Gatekeeper first.
macOS 13.3 (Ventura) or later, on Apple Silicon or Intel. The deployment target is pinned at 13.3 because that is the minimum OS of the whisper.cpp framework the app links against, so it is a hard floor rather than a conservative choice.
The app runs as a menu-bar agent: it has no Dock icon and no main window. It is also deliberately not sandboxed, because an app inside the App Sandbox cannot drive the text fields of other applications through the Accessibility API, which is the entire mechanism by which dictated text gets inserted.
Download the .dmg from the latest GitHub release, open it, and drag OpenWispr into Applications. The disk image is small — a few megabytes — because it contains no models; those are downloaded on demand once the app is running.
The build is self-signed and not notarized, so Gatekeeper will refuse to open it the first time. This is expected and it is stated plainly rather than papered over. Either right-click the app and choose Open, then confirm once, or clear the quarantine attribute from a terminal:
xattr -dr com.apple.quarantine /Applications/OpenWispr.appbrew install xcodegen, then run ./generate.sh in macos/App and open the resulting Xcode project.Two permissions matter, one is conditional, and one is offered but never blocks anything.
| Permission | When | Without it |
|---|---|---|
| Microphone | Always, at first use | Nothing can be recorded. |
| Accessibility System Settings → Privacy & Security → Accessibility | Always — it is the hard requirement for inserting text into other apps | The app cannot type into the focused field. |
| Speech Recognition | Only if you choose the Apple Speech engine | Apple Speech cannot run. The on-device Parakeet and Whisper engines do not need it. |
| Input Monitoring | Surfaced in the setup UI | Nothing. It is explicitly optional and never gates the dictation flow. |
There are two ways to start a session, and the fn/globe key is the default because it needs no combination to remember.
The app can also start itself at login, through macOS's own login-items mechanism.
This is the largest difference between the two platforms and it is worth knowing before you compare them. The Mac app offers three speech backends where Android offers two, and its Whisper models are the English-only variants rather than the multilingual ones Android downloads.
A fresh install defaults to Parakeet for speech and to OpenWispr's own cleanup fine-tune for polish, at the Full polish level. The Whisper default, if you switch to it, is base.en.
| Engine | Notes | Model sizes |
|---|---|---|
| Parakeet (on-device, fastest) | The default. The same sherpa-onnx Parakeet bundle Android uses. | one bundle |
| Whisper (on-device) | whisper.cpp, pinned to English. The .en models are smaller and more accurate for English than the multilingual builds. | tiny.en ~75 MB · base.en ~142 MB · small.en ~466 MB |
| Apple Speech | Apple's own Speech framework, on-device where the system supports it. Nothing to download, but it needs the Speech Recognition permission. | none |
The polish stage runs llama.cpp with Metal. Three models are offered, and the first is the default and the recommended one:
| Model | Size |
|---|---|
| OpenWispr Cleanup — the project's own Qwen3-0.6B fine-tune for dictation cleanup | ~396 MB |
| Qwen2.5 0.5B Instruct (fastest) | ~491 MB |
| Qwen2.5 1.5B Instruct (most accurate) | ~1.1 GB |
The deterministic cleanup chain is a stage-for-stage port with identical constants, so the two platforms clean text the same way. Three differences are worth stating rather than leaving for you to discover:
The macOS app also has a voice-activity sensitivity setting that Android does not — Low, Medium or High, where a higher setting reads a pause as silence sooner and therefore stops the recording faster. Medium is the default and matches Android's fixed behaviour.
.en ones and pins decoding to English.xattr -dr com.apple.quarantine /Applications/OpenWispr.app. This is a signing-status message, not a corruption message.Open source and entirely on your device. Android from Google Play, macOS from GitHub — no account, no sign-up, just a download.