Every dictation app makes the same promise: speak naturally, get clean text. The difference between them is a question almost nobody asks: where does the work happen? For most tools the answer is the vendor's servers. That architecture is easy to build and easy to scale, and it means your voice, the most personally identifying signal you produce, routinely leaves your machine.
The round trip problem
A cloud dictation request is a journey: capture, compress, upload, queue, transcribe, clean up, download. Each leg adds latency and each hand adds a party who could, in principle, hear you. Even a well-run service is making you a privacy promise that has to be renewed every time its policy page is edited. [1]
Apple Silicon changed the maths
The Neural Engine and GPU in an M-series chip can run a quantised Whisper model in real time and a small language model for clean-up at the same time. Transcription begins while you are mid-sentence. There is no upload to wait for, no queue to sit in, and no Wi-Fi requirement. [2] [3]
LOCAL-FIRST, HONESTLY ASSESSED
FOR
- Audio and transcripts never leave the Mac by default
- Works offline, on a plane, in a dead zone
- No usage caps, no metered minutes
- Latency starts at zero: no network round trip
AGAINST
- Needs Apple Silicon for the full local pipeline
- Frontier-model clean-up still wants a cloud provider (BYOK)
- On-device models trail the largest cloud models on rare vocabulary
What local mode actually does
Hold the hotkey and the overlay appears. Audio feeds WhisperKit on the Neural Engine; raw text streams into an MLX clean-up pass that removes filler, fixes grammar and applies the tone you picked for the app you are in. The result is inserted at the cursor. ShoutFlow's servers are involved in exactly none of that.
Policy versus architecture
A privacy policy is a promise about the future. An architecture is a fact about the present.
We would rather you verified the data path than trusted our wording. Local mode means there is nothing to exfiltrate, nothing to breach and nothing to subpoena, because nothing content-bearing is ever received. That is the entire point of building the app this way. [4]