A forever-free dictation app for macOS — built for Hindi, Bengali, and Hinglish.
Install · Features · On-Device AI · How It Works · Build From Source · FAQ
v2.2 — every surface refreshed to a new indigo/steel design system, a from-scratch app icon, and a real reliability pass: fixed a mic-loss race during video calls and a floating-pill state bug that could get stuck. See release notes. On-device AI (fully offline speech recognition, no API key, no audio ever leaving your Mac) has shipped since v2.0 and remains opt-in, off by default — cloud providers work exactly as they always have.
| Signal | Details |
|---|---|
| Product | Native macOS dictation app for Hindi, Bengali, English, and Hinglish |
| What it demonstrates | Swift/AppKit/SwiftUI engineering, real-time audio capture, concurrent systems design, on-device ML inference (whisper.cpp / sherpa-onnx / llama.cpp), multi-provider API orchestration, Keychain-backed credential handling |
| Differentiator | An India-aware dictation layer — code-switching, native-script output, snippets, personal vocabulary, context prompts — with an optional fully-offline pipeline |
| Stack | Swift, SwiftUI, AppKit, AVFoundation, Combine, Keychain, whisper.cpp, llama.cpp, sherpa-onnx, Groq / OpenAI / Gemini / Claude / Grok |
Open Terminal on your Mac and paste:
curl -fsSL https://raw.githubusercontent.com/iamadarsha/FlowKeys/main/install.sh | bashNo App Store. No account. Takes under a minute. Universal binary — works on Apple Silicon and Intel Macs alike.
FlowKeys lets you dictate in Hindi, Bengali, English, or Hinglish into any app on your Mac. Hold a hotkey → talk → text appears wherever your cursor is. Gmail, WhatsApp Web, Notion, Slack, VS Code, Notes — anywhere a keyboard works.
It's the dictation layer Apple never shipped for Indian languages: it code-switches naturally, writes in the correct native script when you want it to, adapts its formatting to the app you're in, and — if you'd rather it never touch the network — can run the entire pipeline on-device.
Also: context-aware formatting (reads the active app and adapts tone — formal email vs. casual WhatsApp), and 7 dictation modes (Casual · Email · Code · Meeting · Social · Literal · Hindi-only) layered on top of the four languages above.
The cloud path needs one AI API key. Groq is free, fastest, and the best starting point for Hindi and Hinglish.
- Go to console.groq.com → sign up free
- Click Create API Key → copy the key
- Paste it into FlowKeys when prompted on first launch
Other providers supported: OpenAI · Google Gemini · xAI Grok · Anthropic Claude.
Prefer not to use a cloud key at all? Skip straight to on-device AI below.
Since v2.0, FlowKeys can run the entire pipeline locally — no network call, no API key, no audio or text ever leaving your Mac. It's off by default; turning it on doesn't change anything else about how the app behaves.
| Stage | Local engine |
|---|---|
| Speech recognition (English) | whisper.cpp |
| Speech recognition (Hindi / Bengali) | AI4Bharat IndicConformer via sherpa-onnx |
| Cleanup / filler removal | Deterministic pass, or an optional local LLM (Qwen3-0.6B via llama.cpp) |
| Voice activity detection | Silero VAD |
Models download on demand (a few hundred MB each, not bundled in the DMG), are SHA-256 verified before use, and can be deleted any time from Settings → Local AI. A Hybrid route is also available: local-first, escalating to your cloud provider only when local confidence is low.
| Action | Hotkey |
|---|---|
| Hold to dictate | Hold Fn |
| Toggle dictate on/off | ⌘ + Fn |
| Open settings | Click menubar icon → ⚙️ |
| Switch language mode | Click menubar icon → HI / BN / EN / MIX |
Every hotkey is rebindable in Settings.
Cloud transcription typically returns in under a second; total time end to end depends on how much cleanup the text needs.
- macOS 13.4 (Ventura) or later
- Apple Silicon (M1–M4) or Intel Mac — universal binary
- Microphone
- Internet for cloud transcription — not required if you use on-device AI
# Clone
git clone https://github.com/iamadarsha/FlowKeys.git
cd FlowKeys
# Universal build + DMG (compiles whisper.cpp / llama.cpp / sherpa-onnx —
# first build takes a while, subsequent ones reuse the cache)
ARCH=universal make dmg
# Install
open build/FlowKeys.dmgThe repo ships clean Swift sources with no binary blobs — fully reproducible
builds. See requirements/ for architecture notes and the
regression checklist run before every release.
Does it work offline?
Yes, if you turn on on-device AI in Settings — the whole pipeline (speech recognition, cleanup) runs locally with no network call. It's opt-in and off by default; without it, transcription uses your chosen cloud provider's API, and Groq's free tier is generous enough that most people rarely hit a limit.
Is my voice data stored anywhere?
With on-device AI, no — audio never leaves your Mac. With a cloud provider, only that provider receives the audio (for transcription). FlowKeys itself has no server, no analytics, no logging. Audio is discarded the moment text comes back.
Why does macOS show a warning on first install?
FlowKeys isn't notarized by Apple — that requires a $99/year developer account, and passing that cost on to users would break the "forever free" promise. The install script clears the quarantine flag automatically. If you downloaded the DMG manually instead, run:
xattr -dr com.apple.quarantine /Applications/FlowKeys.appWhich provider should I use?
Start with Groq — it's free, fast, and reliable for Hindi and Hinglish. If you already have an OpenAI/Gemini/Claude/Grok key, those work too. Or skip cloud entirely and use on-device AI.
Will FlowKeys ever be paid?
No. MIT-licensed, forever free. Bring your own API key (or use on-device AI and skip keys entirely) — that's the whole model.
- Apple Developer ID signing + notarization (removes the Gatekeeper warning — cost-dependent)
- Tamil, Telugu, Marathi language support
- Per-app default mode memory
- Snippet packs (shareable JSON bundles)
MIT — free to use, modify, distribute, and ship in your own products.
Built with ❤️ for Bharat 🇮🇳
⭐ Star this repo if FlowKeys saves you time.

