Go back

Open source / macOS

VibeFlow

An open-source macOS dictation app that turns speech into polished text locally in any application.

HOLD FNSpeak in any app

um can you send the revised build by friday

Can you send the revised build by Friday?

Processed locally

Dictation should feel native to the operating system, not rented from a cloud service.

Vivek and I built VibeFlow because most dictation tools ask users to trade privacy or control for convenience. We wanted capture, transcription, cleanup, and insertion to happen locally without forcing anyone into a separate editor.

We kept the visible interaction deliberately small: hold a key, speak, release, and get cleaned text inside the current app. The engineering underneath stays modular so either Apple Speech or WhisperKit can power that same gesture.

A short interaction backed by two replaceable processing stages.

  1. Hold and capture
  2. Transcribe locally
  3. Polish the text
  4. Paste into any app
Fast path

Apple Speech

Native transcription with the same hold-to-talk gesture.

Private model path

WhisperKit + Qwen

Local transcription and cleanup with explicit model readiness.

Three implementation choices that changed how the app feels.

These are small code decisions, but they decide whether dictation feels native or like a model demo bolted onto macOS.

choice[0]

Put engines behind two protocols

SpeechRecognitionService and TextProcessingService let us switch engines without duplicating the hotkey, history, HUD, or paste workflow.

choice[1]

Remove fillers before model cleanup

A small regex pass handles predictable words before the language model. That cuts needless tokens and gives the model a narrower editing job.

choice[2]

Load selected models before the first dictation

The initial download is heavier, but an interaction this small feels broken if the first key release unexpectedly waits for model setup.

Everything around the three-second interaction.

Hold-to-talk anywhere

We wired a global macOS hotkey, microphone capture, focus tracking, and paste behavior so dictation works inside the active app.

Dual speech engines

We made Apple Speech and WhisperKit interchangeable behind one interface, including permissions, model readiness, and error recovery.

Local text cleanup

We run a compact Qwen model through MLX to remove filler words, repair grammar, and format the transcript without sending it away.

Personal writing controls

We added writing styles, a custom dictionary, and transcript history so cleanup reflects how the person actually writes.

A working open-source build, not a frictionless App Store install.

  • The current build is unsigned. macOS users have to approve it manually in Privacy and Security before first launch.
  • Global dictation needs Accessibility and Microphone permissions, plus Speech Recognition permission when Apple Speech is selected.
  • The fully local path uses roughly 450 MB on disk and about 650 MB of memory with the documented base models.