Jabber
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 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.
Requirements
- macOS 26.0+ (Tahoe)
- Apple Silicon required
Installation
Download the latest DMG from Releases, open it, and drag Jabber to Applications.
Building from Source
swift build
./scripts/build_mlx_metallib.sh debugIf the Metal library build reports a missing Xcode Metal Toolchain, install it:
xcodebuild -downloadComponent MetalToolchain
For a release build with signing:./scripts/release.sh --skip-notarize # local testing
./scripts/release.sh # full signed + notarized DMGUsage
- Launch Jabber — it lives in your menu bar
- Click the icon or use the global hotkey to start dictation
- Speak, and text appears wherever your cursor is
- Qwen3-ASR — 52 languages, highest accuracy. Available in four sizes:
- 1.7B 8-bit (~2.5GB) — recommended for non-English
- 1.7B 4-bit (~1.3GB)
- 0.6B 8-bit (~1GB)
- 0.6B 4-bit (~600MB)
- Nemotron (~600MB) — NVIDIA Nemotron Speech Streaming, English-only with native punctuation & capitalization
- Apple Speech — built-in macOS 26 speech recognition, no download required
Permissions
Jabber requires two macOS permissions to provide the full experience:
- Microphone: required to capture speech.
- Accessibility: required for type-into-active-app mode.
If permission prompts do not appear:
- Open System Settings > Privacy & Security
- Enable Jabber for Microphone
- Enable Jabber for Accessibility
Auto-Updates
Jabber uses Sparkle for auto-updates. On first launch (after the second run), it will check for updates automatically.
Setting up EdDSA keys (maintainers)
- Download Sparkle from releases
- Run
./bin/generate_keysto create a keypair (stored in Keychain) - Export the private key:
./bin/generate_keys -x sparkle_private_key - Add the private key as
SPARKLE_EDDSA_PRIVATE_KEYsecret in GitHub - Add your public key to
SUPublicEDKeyin Info.plist
Appcast
The workflow generates appcast.xml as an artifact. Host it at:
https://rselbach.github.io/jabber/appcast.xml
License
MIT — see LICENSE.
Acknowledgements
Jabber uses the following open-source models and libraries:
Models
| Model | Creator | License | Link | |-------|---------|---------|------| | Qwen3-ASR | Alibaba Qwen Team | Apache 2.0 | huggingface.co/Qwen/Qwen3-ASR-0.6B | | 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 |
Qwen3-ASR (MLX) and Nemotron (CoreML) conversions by aufklarer.
Libraries
| Library | License | Link | |---------|---------|------| | speech-swift | Apache 2.0 | ASR/TTS models for Apple Silicon | | Sparkle | MIT | Software update framework | | mediaremote-adapter | MIT | Media remote control |
--- Tranlated By Open Ai Tx | Last indexed: 2026-07-25 ---