A dictation app that knows “um” isn’t a word and “scratch that” is an instruction.
Download for macOS · Setup takes about two minutes · Source
Most dictation apps hand you the raw transcript and make you clean it up yourself. Kalam cleans it as it transcribes, so the text that lands in your app is already written.
- Editing.
umanduhcome out,scratch thatdeletes the clause before it, and a spoken list arrives formatted. - Vocabulary. A personal dictionary rewrites the words you mispronounce and the names only you use.
- Privacy. No network entitlement sits in the app bundle, so the app cannot open a connection.
Every row below is real output from the cleanup engine.
| You say | Kalam types | |
|---|---|---|
| Fillers | um I think uh we should ship it on Friday |
I think we should ship it on Friday |
| Backtracks | send the invoice today scratch that send it next Monday |
send it next Monday |
| Spoken lists | the plan is one gather logs two isolate the bug three ship the fix |
the plan is1. gather logs2. isolate the bug3. ship the fix |
| Punctuation | hello ,world!!this is fine |
hello, world! this is fine |
| Your dictionary | my iphone broke |
my iPhone broke |
Fillers are removed as whole words, so mum and aluminum survive. Kalam checks a spoken list before formatting it, so a stray number won't scramble it.
Two more features are off by default and run on-device: converting spoken numbers and dates to written form, and a grammar pass.
Kalam types into whatever is focused. Slack, Notion, Xcode, Terminal, email, browsers, code editors — anywhere there's a caret.
Privacy claims are cheap. This one is checkable.
- No network entitlement.
com.apple.security.network.clientis absent fromapp/Kalam/Kalam.entitlements. The app bundle cannot open a network connection. Seeapp/docs/SECURITY.md. - Everything runs on device. Speech recognition uses Parakeet CoreML models on your Mac.
- Audio is wiped after use. Recording buffers are securely zeroed once transcription completes.
- Nothing is logged. Transcript and audio content are never written to disk. Logs carry counts and timings only.
- No accounts, no telemetry, no analytics.
The MIT license lets you check every claim above in the source.
1. Open it. Kalam isn't on the Mac App Store, so Gatekeeper stops you the first time. Right-click (or Control-click) the Kalam app, choose Open, then Open again. You only do this once.
2. Follow the setup. Kalam walks you through four steps:
| Step | What it does |
|---|---|
| Microphone | Required for capture. Choose from your connected inputs. |
| Accessibility | Required for Kalam to type into other apps. |
| Hotkey | Pick your trigger. |
| Model | Point Kalam at a folder to hold the speech model. |
3. Download a model. Kalam has no network access, so it can't fetch one. It shows you the command; you paste it into Terminal. The app never runs shell commands.
# install the Hugging Face CLI once
brew install hf
# then run the command Kalam shows you in Settings
hf download FluidInference/parakeet-tdt-0.6b-v2-coreml \
--include "Preprocessor.mlmodelc/*" \
--include "Encoder.mlmodelc/*" \
--include "Decoder.mlmodelc/*" \
--include "JointDecision.mlmodelc/*" \
--include "*vocab.json" \
--local-dir '/path/to/your/models/parakeet-tdt-0.6b-v2'Pick the destination folder in Settings → The engine first, then copy the command it generates. It always matches the model you selected.
| Model | Languages | Size | Notes |
|---|---|---|---|
| Parakeet TDT v2 | English | ~450 MB | Highest accuracy (2.1% WER) |
| Parakeet TDT v3 | 25 European languages | ~450 MB | 2.5% WER |
| Parakeet TDT-CTC 110M | English | ~220 MB | Fastest, lowest memory (3.6% WER) |
| Mode | Behavior |
|---|---|
| Hold or Toggle | Hold the key to record; a quick tap toggles. The default. |
| Hold | Record only while the key is down. |
| Toggle | Press once to start, press again to stop. |
| Double Tap | Tap twice quickly to start and stop. |
The trigger can be a right-hand modifier (Right Command, Right Option, Right Shift, Right Control) or one of six combinations: Command-Option, Control-Command, Control-Option, Shift-Command, Option-Shift, Control-Shift.
The indicator sits over your app rather than hiding in a menu.
| State | What you see |
|---|---|
| listening | Your app name and a live waveform |
| pausing | You went quiet; the mic is still open |
| transcribing | The engine is working |
| held | Your text is ready, with Paste and Discard |
| blocked | The microphone isn't available, with a shortcut to Settings |
Kalam can't check for updates, because that would need a network entitlement. For the latest version, use View Latest Release in the menu bar item, or open the releases page.
For release notifications, watch the repository on GitHub: Watch → Custom → Releases.
Does any of my data leave my Mac? No. Kalam is compiled without network entitlements. Audio is processed on-device and wiped from memory when transcription finishes. Nothing is transmitted, stored, or sent to anyone.
Is it really free? Yes. MIT licensed, no subscriptions, no usage limits, no premium tier. Download it, read it, fork it.
What happens when I go quiet? Nothing gets cut. While you're silent the indicator drops to a low meter so you know it's still listening. Kalam processes the whole take when you stop talking, trimming silence at the edges.
Why won't Kalam paste into my password field? On purpose. It refuses secure text fields and any app with secure input active, so your transcript never lands on the pasteboard by accident.
Does it need my password or any account? No. There is no account, no sign-in, and no server.
What macOS versions are supported? macOS 14.6 or later. Apple Silicon is recommended.
The architecture, runtime flow, and build/test instructions live in app/docs/DEVELOPER_GUIDE.md.
app/ macOS app (Swift 6, AppKit + SwiftUI)
app/Packages/KalamTextEngine/ cleanup engine + dictionary compiler
scripts/ engine tests, README capture, model probes
landing-page/ Vite/React site
Run the engine tests without Xcode:
./scripts/test-engine.shIssues and pull requests are welcome. Before changing the dictation pipeline, read AGENTS.md. It documents the invariants: no network code, no logging of transcript or audio content, and clipboard-restore semantics.
MIT. See LICENSE.




