Skip to content

highqualityhq/flowdesk

Repository files navigation

🎙 FlowDesk

Local-first, push-to-talk dictation for macOS and Windows.
Hold a hotkey → speak → release → polished text is instantly pasted into any app.

No cloud. No subscription. No tokens. Everything runs on your machine.

Version Platform License Electron


✨ What it does

FlowDesk turns your voice into clean, formatted text — in any app, instantly, with zero internet required. Think Wispr Flow but fully self-hosted.

Hold hotkey → speak → release → polished text appears wherever your cursor is

The entire pipeline runs locally:

Step What happens
1. Key hook Global hotkey detected (default: Right Option/Alt)
2. Capture Mic audio at 16kHz mono with pre-roll buffer (first word never clipped)
3. Transcribe whisper.cpp converts speech to text (Metal-accelerated on Mac)
4. Clean up Local LLM via Ollama removes filler words, fixes punctuation, applies per-app writing style
5. Paste Result pasted into the focused app via clipboard swap (clipboard restored after)

If Ollama is too slow, FlowDesk falls back to the punctuated raw transcript automatically — you are never left waiting.


🚀 Features

  • Push-to-talk with a live HUD showing status and waveform
  • 100% offline — whisper.cpp + Ollama, no API keys, no cloud
  • Personal dictionary with transcriber biasing for custom words
  • Custom replacements — plain text or regex, applied pre/post cleanup
  • Voice snippets — say a trigger phrase to insert saved text ({{date}}, {{time}}, {{clipboard}} supported)
  • Per-app writing styles — different tone and cleanup level for different apps
  • Dictation history — searchable log with latency breakdown and retention controls
  • System tray control and full settings UI
  • SQLite storage — everything local, nothing in the cloud

🛠 Requirements

1. whisper-server (speech-to-text)

  • Build from whisper.cpp and place the binary in resources/bin/<platform>-<arch>/
    • Mac Apple Silicon: resources/bin/darwin-arm64/whisper-server
    • Mac Intel: resources/bin/darwin-x64/whisper-server
    • Windows: resources/bin/win32-x64/whisper-server.exe
  • Or put it on your PATH — FlowDesk will find it automatically
  • Download a model (base.en ~142 MB) from the in-app setup checklist

2. Ollama (AI text cleanup — optional)

  • Install from ollama.com
  • Pull the default model: ollama pull qwen2.5:3b-instruct
  • Without Ollama you still get clean punctuated transcripts — just no filler-word removal

⚡ Getting started

# 1. Clone the repo
git clone https://github.com/highqualityhq/flowdesk.git
cd flowdesk

# 2. Install dependencies (also rebuilds native modules for Electron)
npm install

# 3. Run in development mode
npm run dev

macOS permissions (one-time setup)

FlowDesk needs three permissions — macOS will prompt for each on first use:

Permission Why
Microphone To capture your voice
Accessibility For the global hotkey and pasting
Automation → System Events For clipboard paste

Grant via System Settings → Privacy & Security if not prompted automatically.


📦 Build and package

npm run build        # compile TypeScript
npm run dist:mac     # builds .dmg + .zip for macOS
npm run dist:win     # builds .exe installer for Windows
npm run typecheck    # TypeScript type check (no emit)

Place the whisper-server binary for the target platform in resources/bin/<platform>-<arch>/ before packaging.


🗂 Project structure

flowdesk/
├── src/
│   ├── main/        # Electron main process
│   ├── preload/     # Preload bridge scripts
│   ├── renderer/    # React UI (HUD, settings, history)
│   └── shared/      # Types and utilities shared across processes
├── resources/
│   └── bin/         # whisper-server binaries (not committed — add your own)
├── out/             # Build output (gitignored)
└── dist/            # Packaged app output (gitignored)

🧰 Tech stack

Layer Technology
App framework Electron 34 + electron-vite
UI React 18 + TypeScript
Speech-to-text whisper.cpp via whisper-server
LLM cleanup Ollama (local, any instruct model)
Storage SQLite via better-sqlite3
Global hotkey uiohook-napi

🔒 Privacy

FlowDesk is offline-first by design. The only network call that ever happens is the one-time download of a whisper model. Your voice, transcripts, and writing history never leave your machine.


📄 License

MIT © highqualityhq

About

Local-first push-to-talk dictation for macOS and Windows. whisper.cpp + Ollama, fully offline. No cloud, no subscription.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors