Dictation for macOS that never leaves your Mac.
Hold a key. Speak. Release. The text appears in whatever app you're in — browser, terminal, code editor, Slack. No cloud. No telemetry. No account. No subscription.
Built natively for macOS 26 Tahoe: Apple SpeechAnalyzer for on-device transcription, native Liquid Glass for the UI, and the Apple Neural Engine doing the work your M-series chip was designed for.
hold ⌥ speak release
┌──────────────────────────────────────┐
│ ● Listening… │ ← floats over every app
└──────────────────────────────────────┘
Jorge Luis Borges — the Argentine writer — imagined a library containing every possible book: every combination of letters, every text that has been written or ever could be. Babel — the dictation app — is a narrower version of that library: every word you are about to say, turned into text you can place anywhere, on a machine that forgets the audio the moment it's done with it.
| Babel | Superwhisper | Wispr Flow | Apple Dictation | |
|---|---|---|---|---|
| On-device only | ✓ | ✓ | ✗ (cloud) | ✓ |
| Open source | ✓ (MIT) | ✗ | ✗ | ✗ |
| Free | ✓ | $15/mo | $12/mo | ✓ |
| Works in any app | ✓ | ✓ | ✓ | partial |
| Latency | <400 ms | ~600 ms | ~1 s | ~500 ms |
| Liquid Glass UI | ✓ | mimicked | ✗ | — |
Privacy is a design decision, not a checkbox. Babel has no server. No opt-out telemetry — because there is nothing to opt out of. The mic audio flows into Apple's on-device SpeechAnalyzer, produces a string, gets inserted into the focused app, and is gone. We don't even keep the audio in memory past the session.
Speed is the other pillar. Push-to-hold gives you one modal gesture. Transcription streams in the background while you're speaking so the final text is ready the instant you release the key. Apple's SpeechAnalyzer on M-series hits ~45 ms/sec of audio — the bottleneck is now how fast you talk.
Latest: Babel 0.1.0 (DMG, 4.4 MB) — macOS 26 Tahoe, Apple Silicon.
The DMG is signed with a free Apple Personal Team certificate, not notarized. First launch: right-click Babel.app → Open (not double-click). macOS asks once whether to open an app from an unidentified developer; allow it, and future launches are regular double-clicks.
Subsequent releases arrive through Sparkle — Check for Updates… in the menu.
Pre-alpha. macOS 26 Tahoe and later only. Three modes, all on-device:
- Fast — Apple SpeechAnalyzer, no post-processing. <400 ms end-of-speech.
- Balanced — SpeechAnalyzer with partial-result streaming.
- Accurate — Whisper
large-v3-turbovia WhisperKit. First use downloads ~1.5 GB from Hugging Face; cached afterwards.
v1.1 will add local LLM post-processing via Ollama for grammar cleanup and custom vocabulary. v1.2 will add optional BYOK routing to OpenAI / Groq / Cohere for users who want cloud-fast.
brew install xcodegen
git clone https://github.com/matinsaurralde/babel.git
cd babel
xcodegen generate
open Babel.xcodeprojOr from the command line:
xcodegen generate
xcodebuild -project Babel.xcodeproj -scheme Babel -configuration Debug build
scripts/resign.sh # re-sign with your stable Apple Development identity
open ~/Library/Developer/Xcode/DerivedData/Babel-*/Build/Products/Debug/Babel.appRequires Xcode 26 and macOS 26 (Tahoe).
Xcode's default ad-hoc signature changes on every build, so macOS' TCC
database treats each rebuild as a different app and revokes every
permission. scripts/resign.sh post-signs the built .app with a
stable Apple Development identity from your login keychain, so the
code-signature hash is identical across rebuilds and permissions stay
granted. Set one up once in Xcode → Settings → Accounts → Manage
Certificates → + Apple Development.
Four, all native macOS:
| Permission | Used for |
|---|---|
| Microphone | capture your voice |
| Speech Recognition | run Apple SpeechAnalyzer on-device |
| Input Monitoring | detect the global push-to-hold hotkey |
| Accessibility | paste the transcript into the focused app |
The first launch walks you through each one. Every permission prompts through macOS' native system — Babel never sees the raw grant.
Hold Right Option to record. Release to insert. Rebinding arrives with v1.0.
Babel transcribes in every language your Mac's dictation can. It picks the locale you've set as macOS' system language by default; Settings → General → Dictation Language lets you override the choice.
To add more languages, open System Settings → Keyboard → Dictation and enable the ones you want. macOS downloads the on-device model the first time; after that, everything stays local.
The important choices live as ADRs in docs/decisions/. If you're wondering "why did they do X instead of Y", that's where to look. Start with:
- 001 — macOS 26 only, no fallbacks
- 002 — Apple SpeechAnalyzer as the default engine
- 003 — Push-to-hold over press-to-toggle
- 004 — Hybrid AX + paste text insertion
Babel is MIT-licensed and built in public. Issues and PRs welcome. If you're proposing a non-trivial change, please sketch an ADR in docs/decisions/ so the discussion stays in the repo.
MIT — see LICENSE.
Privacy and speed, by design. — Buenos Aires, 2026
