Flit privacy: verify it yourself
Claim: your audio and your text never leave your Mac. Ever.
Flit records your voice, transcribes it, and cleans it up entirely on-device:
| Stage | What runs | Where |
|---|---|---|
| Speech-to-text | NVIDIA Parakeet (CoreML on the Neural Engine), Apple Speech Analyzer, or whisper.cpp | Your Mac |
| Smart formatting | Apple Intelligence (Foundation Models) or Qwen3 1.7B via MLX | Your Mac |
| History | SQLite-backed store + optional audio files | ~/Library/Application Support/Flit |
There is no account, no telemetry, no analytics, no crash reporter, and no server. The privacy guarantees are enforced with comments at every network-capable code path, and the design keeps all networking in two user-initiated places.
The only network calls Flit ever makes
- Model downloads you explicitly start — clicking Download in Settings fetches
model weights from
huggingface.co(Parakeet, Whisper, Qwen3). Apple Speech and Apple Intelligence assets are fetched by macOS itself. - That’s it. There is no second thing.
Developer Mode
When you dictate into a code editor or terminal, Flit reads the focused window’s document path through the macOS Accessibility API (the same permission it already uses to paste), finds the project root, and indexes the project’s file and directory names so spoken identifiers are spelled correctly. The index lives in memory only — it is never written to disk, never included in history, and never sent anywhere. File contents are not read. Turn it off in Settings → Formatting.
Context-aware formatting
Off by default. When you turn it on (Settings → Formatting), Flit reads the dictation target’s focused text field and the text visible in its window through the macOS Accessibility API — the same permission it already uses to paste — so the formatter can spell names the way the conversation spells them and continue an unfinished sentence naturally. This capture lives in memory for exactly one dictation: it feeds the local formatting model only, is never written to disk or history, and never sent anywhere. Password/secure fields abort the capture entirely.
Edit selection by voice
This one also reads the screen, so it belongs in the same list. Off by default. When you turn “Edit selection by voice” on (Settings → Formatting), a dictation that both sits over a selection and sounds like an instruction — “make this shorter” — sends that selected text to the local formatting model so it can be rewritten in place. The selection is read through the Accessibility API, used for that one rewrite, and discarded; it is never written to disk or history and never leaves the Mac. Nothing is read when there is no selection, and a dictation that does not look like an instruction is inserted as ordinary text instead. Turn it off in Settings → Formatting.
Both are off when you install Flit, so out of the box it reads no text from your screen at all. The only thing it looks at either way is the focused element’s role — enough to tell a search box from a document, so a dictated query lands as search terms instead of a sentence. That check reads no text, and there is no setting to turn off because there is nothing to opt out of.
Learning from your corrections
A few seconds after a paste — and only if you are still in the same app — Flit reads the focused field once through the Accessibility API and compares it with what it inserted. The comparison happens in memory and the field text is discarded immediately. What is kept, locally: repeated word corrections (the written and corrected spellings) and per-app style counters (for example “dropped the trailing period in WhatsApp, 3 times” — a bundle ID, a category, and a number; never your text). Both only ever become suggestions in Settings with Add/Dismiss buttons — Flit never changes your dictionary or your app styles on its own. Password/secure fields are never readable this way.
Verify with a network monitor
Using Little Snitch, LuLu, or Proxyman:
- Install your models first (Settings → Models / Formatting → Download).
- Start the network monitor and filter by process
Flit. - Dictate anything, anywhere, as much as you like.
- Observed connections: none. The process makes zero outbound requests outside the downloads you clicked.
Flit.app can also be inspected statically: the binary links no analytics SDK
(otool -L Flit.app/Contents/MacOS/Flit shows only Apple system frameworks).
Local data you control
- Transcript history — optional, capped, delete-all in Settings → History.
- Audio history — off by default; explicit opt-in with auto-delete policies.
- Clipboard hygiene — dictated text is marked transient
(
org.nspasteboard.TransientType), so clipboard managers don’t archive it.
Questions or a hole in the claim? Open an issue — we treat privacy reports as P0.