Three months ago, I had a 200 MB Electron app that transcribed speech to text. It worked, but it was bloated, slow to launch, and required a network connection for the best experience.

So I rebuilt it from scratch. The result is PushSense — a 5.5 MB native macOS application that runs entirely on-device.

The Problem with Cloud Transcription

Every major dictation solution — Google, Apple, Microsoft — sends your audio to the cloud. That means:

  • Privacy risk: your voice data leaves your machine
  • Latency: network round-trips add 200-500ms per phrase
  • Cost: API quotas, rate limits, billing accounts
  • Availability: no internet = no transcription

The Solution: whisper.cpp + Swift

I chose whisper.cpp — an optimized C++ implementation of OpenAI's Whisper model. It runs in-process and uses the GPU through Metal. The app around it stays small because the weights live in a separate model file you download once, rather than inside the bundle.

The Swift wrapper handles the macOS integration: hotkey detection, audio capture via AVAudioEngine, and text injection into the active input field.

The Numbers

  • Installed app bundle: 5.5 MB (vs. 200 MB Electron)
  • Resident RAM, idle with the model loaded: 344 MB
  • Peak RAM while transcribing (Small q5_1): 484 MB
  • 27.7 s of speech transcribed in 1.11 s — about 25× realtime
  • Network dependency: none
  • API keys needed: zero

Idle CPU sits near zero: the hotkey watcher is a passive event tap, and inference runs on the GPU, so dictating never competes with your real work for CPU. The model, not the app, is what decides your memory bill — full methodology, including the two approaches that didn't work, is in the benchmark write-up.

Four Details That Took Real Work

Most of the engineering isn't in "call Whisper." It's in the edges around it.

Forcing Simplified Chinese output. Whisper handles code-switching natively, but its Chinese output drifts between Simplified and Traditional characters. The fix is the system's own CFStringTransform, applied to the finished transcript — Traditional characters can't leak through, while Latin letters and emoji pass untouched.

Silence has to produce nothing. Given pure silence, Whisper will confidently invent plausible-sounding text. Left alone, brushing the hotkey types a sentence you never said. PushSense detects and discards these outputs explicitly. It reads as a non-feature and is anything but.

Typing, not pasting. The transcript is delivered as synthesized keystrokes rather than through the clipboard. That is why Accessibility permission is required — and why whatever you had copied survives a dictation intact.

Settings live in the Keychain. No config file to manage, and nothing to drift between machines.

What I Learned

The biggest insight wasn't technical — it was about shipping. A 5.5 MB app that works offline, with no account required, no API key, no subscription — that's not a "lite" version. That's the product.

Free to download. Get the latest build.