{"id":51339347,"url":"https://github.com/matinsaurralde/babel","last_synced_at":"2026-07-02T06:02:53.799Z","repository":{"id":352528895,"uuid":"1213058918","full_name":"matinsaurralde/babel","owner":"matinsaurralde","description":"Native macOS dictation. Private, fast, open-source. Apple SpeechAnalyzer + Liquid Glass on macOS 26.","archived":false,"fork":false,"pushed_at":"2026-04-28T02:45:45.000Z","size":10319,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-28T04:23:28.399Z","etag":null,"topics":["apple-silicon","borges","dictation","liquid-glass","macos","open-source","privacy","speech-to-text","speechanalyzer","swift","swift6","swiftui"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matinsaurralde.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T02:14:24.000Z","updated_at":"2026-04-28T02:45:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/matinsaurralde/babel","commit_stats":null,"previous_names":["matinsaurralde/babel"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/matinsaurralde/babel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matinsaurralde%2Fbabel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matinsaurralde%2Fbabel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matinsaurralde%2Fbabel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matinsaurralde%2Fbabel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matinsaurralde","download_url":"https://codeload.github.com/matinsaurralde/babel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matinsaurralde%2Fbabel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35034985,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple-silicon","borges","dictation","liquid-glass","macos","open-source","privacy","speech-to-text","speechanalyzer","swift","swift6","swiftui"],"created_at":"2026-07-02T06:02:48.537Z","updated_at":"2026-07-02T06:02:53.670Z","avatar_url":"https://github.com/matinsaurralde.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"branding/readme-hero/Babel-readme-hero-1600x900.png\" alt=\"Babel\" /\u003e\n\u003c/p\u003e\n\n# Babel\n\n**Dictation for macOS that never leaves your Mac.**\n\nHold 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.\n\nBuilt 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.\n\n```\nhold ⌥            speak            release\n   ┌──────────────────────────────────────┐\n   │  ●  Listening…                       │   ← floats over every app\n   └──────────────────────────────────────┘\n```\n\n## Why \"Babel\"\n\nJorge 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.\n\n## Why another dictation app\n\n| | Babel | Superwhisper | Wispr Flow | Apple Dictation |\n|---|:---:|:---:|:---:|:---:|\n| On-device only | ✓ | ✓ | ✗ (cloud) | ✓ |\n| Open source | ✓ (MIT) | ✗ | ✗ | ✗ |\n| Free | ✓ | $15/mo | $12/mo | ✓ |\n| Works in any app | ✓ | ✓ | ✓ | partial |\n| Latency | \u003c400 ms | ~600 ms | ~1 s | ~500 ms |\n| Liquid Glass UI | ✓ | mimicked | ✗ | — |\n\n**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.\n\n**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.\n\n## Download\n\n**Latest: [Babel 0.1.0](https://github.com/matinsaurralde/babel/releases/latest)** ([DMG](https://github.com/matinsaurralde/babel/releases/download/v0.1.0/Babel-0.1.0.dmg), 4.4 MB) — macOS 26 Tahoe, Apple Silicon.\n\nThe 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.\n\nSubsequent releases arrive through Sparkle — *Check for Updates…* in the menu.\n\n## Status\n\n**Pre-alpha.** macOS 26 Tahoe and later only. Three modes, all on-device:\n\n- **Fast** — Apple SpeechAnalyzer, no post-processing. \u003c400 ms end-of-speech.\n- **Balanced** — SpeechAnalyzer with partial-result streaming.\n- **Accurate** — Whisper `large-v3-turbo` via [WhisperKit](https://github.com/argmaxinc/WhisperKit). First use downloads ~1.5 GB from Hugging Face; cached afterwards.\n\nv1.1 will add local LLM post-processing via [Ollama](https://ollama.com) for grammar cleanup and custom vocabulary. v1.2 will add optional BYOK routing to OpenAI / Groq / Cohere for users who want cloud-fast.\n\n## Build from source\n\n```bash\nbrew install xcodegen\ngit clone https://github.com/matinsaurralde/babel.git\ncd babel\nxcodegen generate\nopen Babel.xcodeproj\n```\n\nOr from the command line:\n\n```bash\nxcodegen generate\nxcodebuild -project Babel.xcodeproj -scheme Babel -configuration Debug build\nscripts/resign.sh   # re-sign with your stable Apple Development identity\nopen ~/Library/Developer/Xcode/DerivedData/Babel-*/Build/Products/Debug/Babel.app\n```\n\nRequires **Xcode 26** and **macOS 26** (Tahoe).\n\n### Why the re-sign step?\n\nXcode's default ad-hoc signature changes on every build, so macOS' TCC\ndatabase treats each rebuild as a different app and revokes every\npermission. `scripts/resign.sh` post-signs the built `.app` with a\nstable Apple Development identity from your login keychain, so the\ncode-signature hash is identical across rebuilds and permissions stay\ngranted. Set one up once in Xcode → Settings → Accounts → Manage\nCertificates → `+` Apple Development.\n\n## Permissions\n\nFour, all native macOS:\n\n| Permission | Used for |\n|---|---|\n| Microphone | capture your voice |\n| Speech Recognition | run Apple SpeechAnalyzer on-device |\n| Input Monitoring | detect the global push-to-hold hotkey |\n| Accessibility | paste the transcript into the focused app |\n\nThe first launch walks you through each one. Every permission prompts through macOS' native system — Babel never sees the raw grant.\n\n## Default hotkey\n\n**Hold Right Option** to record. Release to insert. Rebinding arrives with v1.0.\n\n## Languages\n\nBabel 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.\n\nTo 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.\n\n## Design decisions\n\nThe important choices live as ADRs in [`docs/decisions/`](./docs/decisions). If you're wondering \"why did they do X instead of Y\", that's where to look. Start with:\n\n- [001 — macOS 26 only, no fallbacks](./docs/decisions/001-macos-26-only.md)\n- [002 — Apple SpeechAnalyzer as the default engine](./docs/decisions/002-speechanalyzer-default.md)\n- [003 — Push-to-hold over press-to-toggle](./docs/decisions/003-push-to-hold.md)\n- [004 — Hybrid AX + paste text insertion](./docs/decisions/004-hybrid-insertion.md)\n\n## Contributing\n\nBabel 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.\n\n## License\n\nMIT — see [LICENSE](./LICENSE).\n\n---\n\n*Privacy and speed, by design. — Buenos Aires, 2026*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatinsaurralde%2Fbabel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatinsaurralde%2Fbabel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatinsaurralde%2Fbabel/lists"}