A local, unlimited Wispr Flow clone for Windows. Hold a hotkey, speak, release — your words are transcribed locally with Whisper (no usage limits, no cloud STT) and typed into whatever app has focus.
Hold Right Ctrl ──► mic records ──► release ──► faster-whisper (local sidecar)
──► optional MiniMax cleanup (fillers/punctuation) ──► pasted into focused app
- Electron app (
app/) — tray icon, floating recording pill, settings + history UI, global push-to-talk hook, clipboard-paste injection. - Python sidecar (
sidecar/) — FastAPI + faster-whisper on127.0.0.1:8484, model stays warm between dictations.
cd app
npm run build:win # produces dist\owenflow-<version>-setup.exeRun the setup exe — it installs OwenFlow with a desktop + Start-menu shortcut and bundles the sidecar. Python 3.13 with the sidecar deps must still be installed (pip install -r sidecar\requirements.txt once via py -3.13 -m pip); the app launches the sidecar with py -3.13.
# 1. Sidecar (one-time; first run downloads the Whisper model ~460MB)
cd sidecar
pip install -r requirements.txt
python test_sidecar.py # optional sanity check
# 2. App
cd ..\app
npm install
npm run dev # or: npm run build && npm startThe app spawns the sidecar automatically on launch. Tray icon → Settings to configure.
- Hold Right Ctrl (default) and speak; release to transcribe and paste. Configurable hotkey + a press-to-toggle mode in Settings.
- Cleanup (optional): add your MiniMax API key in Settings to strip filler words and fix punctuation. If it's off, slow, or fails, the raw transcript is pasted — dictation never blocks on AI. Refinement defaults to Groq (
llama-3.3-70b-versatile, sub-second); add a Groq API key in Settings → Modes. MiniMax stays selectable as a slower max-polish option, and a Test & compare button times both providers head-to-head. - Dictionary: one entry per line in Settings. Plain words bias recognition (e.g.
Cresio, Fluxboard, ZEAL);wrong=>rightentries are find/replace fixes. - History: tray → History for recent transcripts with copy buttons.
- Snippets: say a saved trigger ("sign off email") and its expansion is pasted verbatim (skips AI cleanup) — configure in Settings → Dictionary.
- Translate mode: a flow mode that transcribes any spoken language and pastes a translation into your target language (set the target in Settings).
- Sessions: pick an active session from the tray (e.g. client / notes); its tone is applied automatically and each dictation is tagged with the session label.
- App profiles: when enabled (Settings → Apps), OwenFlow detects the focused app and reshapes output per-app — code-friendly in editors/terminals, prose in browsers, formal in mail — with optional per-app flow mode, transforms (strip trailing period, no auto-capitalize, single line), find/replace, and a prompt rule. Off by default.
- Auto-learning dictionary: edit a transcript in History and click Learn — OwenFlow diffs your fix against the original and proposes a
wrong=>rightentry to add, so the same mistake self-corrects next time. - Never lose a dictation: if the Whisper sidecar is cold or busy when you finish speaking, the audio is queued and retried in the background; the recovered transcript lands in History (tagged
recovered) with a notification you can click to copy — it's never pasted late into the wrong app. - Daily digest: a once-a-day tray notification summarizing what you dictated (count, words, time saved vs typing), with an optional AI theme summary. Configure the time/toggles in Settings → General, or trigger it anytime from the tray's Today's digest.
- Command mode (speak-to-act): enable a second hotkey in Settings → General. Select some text, hold the command hotkey and speak an instruction ("make this a bullet list", "rewrite formally") — it edits your selection via the LLM and pastes the result; with nothing selected it generates from the instruction. Off by default.
- ZEAL voice command: in command mode, prefix with "ZEAL …" (or "note …") and the instruction is sent to your ZEAL agent's
/api/voiceendpoint — ZEAL executes it (tasks, missions, kanban, etc.) and replies; the reply pops as a notification and, with Speak ZEAL replies on, is read aloud via the sidecar's edge-tts. Configure the endpoint + key in Settings → ZEAL. - Continuous / draft mode: toggle it on in Settings → General, then just hold the dictation hotkey and keep talking — OwenFlow splits on your natural pauses and streams each segment in (transcribed + cleaned) while you continue, so long-form drafts flow in paragraph by paragraph. Release to finish; the whole session lands as one History entry. Off by default.
| Want to change… | Look in |
|---|---|
| Whisper model size / language | Settings UI, or OWENFLOW_MODEL env for the sidecar |
| Pill look & feel | app/src/renderer/pill/ |
| Refinement provider (Groq default / MiniMax) | Settings → Modes, or app/src/main/cleanup.ts |
| Injection method | app/src/main/injector.ts |
| Hotkey behavior | app/src/main/hotkey.ts |
Design spec: docs/superpowers/specs/2026-06-12-owenflow-design.md.