WezaFlow is a local-first desktop dictation pipeline inspired by Wispr Flow. The implementation is organized as a Tauri desktop shell plus Python services for audio capture, speech recognition, context detection, LLM formatting, and text injection.
The first implementation slice focuses on stable module boundaries:
services/asr: microphone capture, VAD, and Whisper transcriptionservices/context: active app and browser context detectionservices/llm: local Ollama-based text formattingservices/injection: clipboard and keyboard text insertionservices/pipeline: shared contracts and orchestrationdb: SQLite schema for vocabulary, snippets, profiles, corrections, and historyscripts: platform setup, startup, and test helpers
Run the scaffold tests with:
py -3 -m unittest discover -s tests -vBuild the Windows Tauri release with:
npm run tauri -- buildThe macOS path is intended for developer testing from a GitHub checkout. It uses
the same Tauri shell and Python runtime, with macOS-specific Command+C/Command+V
text injection through pyautogui.
From a Mac:
bash scripts/setup_macos.sh
npm run tauri -- devFor a local macOS release build:
npm run tauri -- buildOn first use, macOS may prompt for Microphone and Accessibility permissions.
Grant Accessibility to the terminal during dev runs, or to WezaFlow when running
the built app. The GitHub workflow in .github/workflows/build-macos.yml can
produce a downloadable unsigned macOS test artifact from GitHub Actions. See
docs/macos-test-build.md for current limits.