Current version: 1.3.045
OpenFlow is a desktop voice dictation app for Windows and macOS built with Electron on the UI layer and Faster-Whisper for local transcription.
It is designed for fast keyboard-free text capture, global shortcuts, a floating recording overlay, local model execution with on-demand downloads, and optional cloud transcription through OpenRouter.
- Local transcription powered by Faster-Whisper
- Optional cloud transcription through OpenRouter speech-to-text models
- Electron desktop UI with history, diagnostics, settings, and dictionary rules
- Global hold-to-dictate shortcut, hands-free mode, and a paste-last shortcut
- Floating overlay with live activity feedback, drag positioning, opacity, scale, and dynamic-size controls
- On-demand Whisper model downloads stored in the user data directory
- Model timing stats, usage stats, searchable local history, and configurable history retention
- Dictionary rules for automatic phrase replacement or removal in final text
- Sound feedback, launch-at-login, and optional audio ducking while dictating
- In-app update checking and installation for packaged builds
- Separate Python workers for transcription and hotkey handling
- Windows
- macOS
- Windows is the primary tested platform.
- macOS support exists in the codebase and CI packaging flow, but it has not been fully verified on a real Mac.
- The maintainer does not currently have access to macOS hardware, so treat macOS support as best effort until it is confirmed by external testing.
- Electron
- Node.js
- Python 3.12
- Faster-Whisper
- OpenRouter API for optional cloud transcription
- PyInstaller
- Install Node.js 20+ and Python 3.12.
- Create a virtual environment:
python -m venv .venvon Windows orpython3 -m venv .venvon macOS. - Install Python dependencies:
.venv\Scripts\python.exe -m pip install -r python\requirements.txton Windows or./.venv/bin/python -m pip install -r python/requirements.txton macOS. - Install Node dependencies:
npm ci. - Copy
.env.exampleto.env. - Start the app with
npm start.
Create a local .env file by copying .env.example.
Recommended starting point:
WHISPER_MODEL=small
WHISPER_DEVICE=auto
WHISPER_COMPUTE_TYPE=
FLOW_HOTKEY=
FLOW_PASTE_LAST_HOTKEY=
ALLOWED_LANGUAGES=en
INTERFACE_LANGUAGE=enVariable reference:
WHISPER_MODEL: default transcription model loaded at startup. Good default:small.WHISPER_DEVICE:auto,cpu, orcuda.WHISPER_COMPUTE_TYPE: optional override for Faster-Whisper compute mode. Leave empty unless you know you need a specific value.WHISPER_CPU_THREADS: optional CPU thread cap for local transcription.FLOW_HOTKEY: optional custom dictation shortcut. Leave empty to use the platform default.FLOW_PASTE_LAST_HOTKEY: optional custom shortcut for pasting the latest transcription.ALLOWED_LANGUAGES: comma-separated detection languages such asenoren,pt.INTERFACE_LANGUAGE: app UI language. Default isen.PYTHON_BIN: optional development override for the Python executable path.WHISPER_MODEL_DIR: optional custom directory for downloaded Whisper models.
If you do not need custom behavior, copy the example file and keep almost everything as-is.
Cloud transcription is configured inside the app settings by saving an OpenRouter API key. The key is stored with Electron safe storage when available, and cloud mode requires accepting the in-app privacy notice before audio is sent to OpenRouter and the selected provider.
npm start: run the Electron app in development modenpm run check: syntax-check the tracked JavaScript filesnpm run build:python: package the Python workers with PyInstallernpm run dist:win: build the Windows desktop packagenpm run dist:mac: build the macOS package for the current architecturenpm run dist:mac:x64: build the macOS Intel packagenpm run dist:mac:arm64: build the macOS Apple Silicon packagenpm run publish:mac:x64: build and publish macOS Intel update artifactsnpm run publish:mac:arm64: build and publish macOS Apple Silicon update artifacts
src/main: Electron main process, app state, worker orchestration, tray, shortcutssrc/renderer: desktop UI, overlay UI, styles, translationspython: transcription and hotkey worker codescripts: build and platform helper scripts.github/workflows: CI packaging workflows for Windows and macOS
Packaging instructions and output details are documented in BUILDING.md.
By default, OpenFlow runs transcription locally on the user machine. Whisper models are downloaded when needed and then cached in the app's user data directory.
If cloud transcription is enabled, recorded audio is sent to OpenRouter and the selected speech-to-text provider. Failed cloud recordings can be saved locally for retrying without recording again.
This repository is source-available under the custom license in LICENSE. You may view, download, use, and modify the code, but you may not sell or resell OpenFlow or substantial portions of it.