An open-source dictation tool for macOS
136
stars
281
commits
Swift
primary language
Aug 17, 2026
updated
A macOS menu bar app for local speech-to-text transcription using on-device ASR models.
All audio is processed entirely on-device — nothing leaves your Mac. (Optional transcript refinement via OpenRouter or OpenCode Zen sends the transcript text to a cloud provider you choose; this is off by default.)
⚠️ Personal Project Notice
This code was written for my own use. It is not supported in any way. No issues, no PRs, no questions answered, no guarantees it works. You're welcome to use it, fork it, modify it, sell it, burn it, whatever. Just don't expect anything from me. Good luck.
Download the latest DMG from Releases, open it, and drag Jabber to Applications.
swift build
For a release build with signing:
./scripts/release.sh --skip-notarize # local testing
./scripts/release.sh # full signed + notarized DMG
Model options are available in Jabber's main window (menu bar → Open Jabber, or Cmd-, while Jabber is active):
During onboarding, you'll pick a language and Jabber recommends the best model for it.
Jabber requires two macOS permissions to provide the full experience:
On first launch or first use, macOS may ask for microphone permission and may open a system permission prompt for accessibility when you type into the active app.
If permission prompts do not appear:
Jabber uses Sparkle for auto-updates. On first launch (after the second run), it will check for updates automatically.
./bin/generate_keys to create a keypair (stored in Keychain)./bin/generate_keys -x sparkle_private_keySPARKLE_EDDSA_PRIVATE_KEY secret in GitHubSUPublicEDKey in Info.plistThe workflow generates appcast.xml as an artifact. Host it at:
https://rselbach.github.io/jabber/appcast.xml
MIT — see LICENSE.
Jabber uses the following open-source models and libraries:
| Model | Creator | License | Link |
|---|---|---|---|
| Parakeet TDT 0.6B v2 | NVIDIA | CC BY 4.0 | huggingface.co/nvidia/parakeet-tdt-0.6b-v2 |
| Nemotron Speech Streaming | NVIDIA | OpenMDW-1.1 | huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b |
| Apple Speech | Apple | Apple SLA | Built-in macOS 26 Speech framework |
Parakeet's CoreML conversion is maintained by FluidInference. Nemotron's CoreML conversion is by aufklarer.
| Library | License | Link |
|---|---|---|
| FluidAudio | Apache 2.0 | Parakeet ASR for Apple platforms |
| speech-swift | Apache 2.0 | ASR/TTS models for Apple Silicon |
| Sparkle | MIT | Software update framework |
| mediaremote-adapter | MIT | Media remote control |
281 commits
Swift
98.6%
Shell
1.4%
An open-source dictation tool for macOS
136
stars
281
commits
Swift
primary language
Aug 17, 2026
updated
A macOS menu bar app for local speech-to-text transcription using on-device ASR models.
All audio is processed entirely on-device — nothing leaves your Mac. (Optional transcript refinement via OpenRouter or OpenCode Zen sends the transcript text to a cloud provider you choose; this is off by default.)
⚠️ Personal Project Notice
This code was written for my own use. It is not supported in any way. No issues, no PRs, no questions answered, no guarantees it works. You're welcome to use it, fork it, modify it, sell it, burn it, whatever. Just don't expect anything from me. Good luck.
Download the latest DMG from Releases, open it, and drag Jabber to Applications.
swift build
For a release build with signing:
./scripts/release.sh --skip-notarize # local testing
./scripts/release.sh # full signed + notarized DMG
Model options are available in Jabber's main window (menu bar → Open Jabber, or Cmd-, while Jabber is active):
During onboarding, you'll pick a language and Jabber recommends the best model for it.
Jabber requires two macOS permissions to provide the full experience:
On first launch or first use, macOS may ask for microphone permission and may open a system permission prompt for accessibility when you type into the active app.
If permission prompts do not appear:
Jabber uses Sparkle for auto-updates. On first launch (after the second run), it will check for updates automatically.
./bin/generate_keys to create a keypair (stored in Keychain)./bin/generate_keys -x sparkle_private_keySPARKLE_EDDSA_PRIVATE_KEY secret in GitHubSUPublicEDKey in Info.plistThe workflow generates appcast.xml as an artifact. Host it at:
https://rselbach.github.io/jabber/appcast.xml
MIT — see LICENSE.
Jabber uses the following open-source models and libraries:
| Model | Creator | License | Link |
|---|---|---|---|
| Parakeet TDT 0.6B v2 | NVIDIA | CC BY 4.0 | huggingface.co/nvidia/parakeet-tdt-0.6b-v2 |
| Nemotron Speech Streaming | NVIDIA | OpenMDW-1.1 | huggingface.co/nvidia/nemotron-speech-streaming-en-0.6b |
| Apple Speech | Apple | Apple SLA | Built-in macOS 26 Speech framework |
Parakeet's CoreML conversion is maintained by FluidInference. Nemotron's CoreML conversion is by aufklarer.
| Library | License | Link |
|---|---|---|
| FluidAudio | Apache 2.0 | Parakeet ASR for Apple platforms |
| speech-swift | Apache 2.0 | ASR/TTS models for Apple Silicon |
| Sparkle | MIT | Software update framework |
| mediaremote-adapter | MIT | Media remote control |
281 commits
Swift
98.6%
Shell
1.4%