v0.2.0 — first public release

Voice dictation that stays on your machine.

OpenVoice is a free, open-source desktop app for Mac, Windows, and Linux. Hold a hotkey, speak, release — the text is transcribed locally and pasted into whatever app you were just typing in. No cloud. No API keys. No subscription.

100% local 100% free Open source (MIT) No telemetry
your editor
// hold Ctrl+Space, speak, release →
function handleSubmit(payload) {
  // the cursor returns to where you left it,
  // then the transcript pastes in place.
  return validate(payload)
}
01

Private by construction

A hard-coded URL whitelist (llm_client::validate_local_url) rejects any non-loopback HTTP endpoint at the network boundary. A bug in user settings cannot leak a transcript to a cloud provider — the wire simply won't carry it.

02

Fast on the hardware you have

Whisper Tiny ships in the installer so you can dictate the moment install finishes. Whisper.cpp's Vulkan / Metal / CUDA backends pick the best accelerator on your machine — dedicated GPU is preferred over integrated automatically.

03

Free, forever

MIT-licensed, distributed only via GitHub Releases. No paywall, no "Pro tier", no usage metering. If you want to support the project, send a PR or a kind word to the upstream original Handy maintainer who started it all.

Everything Wispr Flow does, on the metal you already paid for.

Hotkey dictation, AI cleanup, command-mode rewrites, a floating widget, vibe-coding niceties — all the surface area users actually use, none of the cloud middleware.

Hold-to-dictate

Press and hold a global hotkey anywhere in your OS. Release and the text appears in the focused field — chat, editor, search bar, anything.

Local LLM cleanup

Bundled llama.cpp sidecar polishes grammar, restructures sentences, and removes filler words — on your CPU. Detects an existing Ollama install too.

Floating widget

A persistent on-screen pill (Wispr Flow's "Flow Bar"). Click to start dictation when your hands are away from the keyboard. Opacity slider for invisibility-when-idle.

Command mode

Highlight any text, hold Ctrl+Alt+Space, and speak an instruction like "make this more polite". OpenVoice rewrites the selection in place.

Transforms

Bind hotkeys to user-defined LLM rewrites. Ships with "Polish" and "Prompt Engineer" defaults — the latter rewrites your dictation as a high-quality LLM prompt.

Vibe coding

In Cursor / VS Code / Windsurf / Claude Code / Codex: "tag main.py" becomes @main.py, "the user settings" becomes `userSettings`. Off everywhere else.

Personal dictionary

Teach Whisper your jargon, names, and product terms. Starred entries get priority when the bias-prompt budget is tight.

Voice profile

Local-only analytics over your transcription history: WPM, peak hours, top phrases, streak. Never aggregated to a server.

If you sniff the network, you'll see nothing.

OpenVoice makes two kinds of outbound calls — both opt-out-able — and neither carries your audio or transcript. Everything else, including the LLM cleanup pass, runs on your machine.

  • Model download from Hugging Face on first run. One-time, no user data.
  • Update check against this repo's Releases page. Disable under Settings → About.
// src-tauri/src/llm_client.rs
fn validate_local_url(url: &str) -> Result<(), Error> {
  const ALLOWED: &[&str] = &[
    "127.0.0.1", "::1", "localhost",
    "apple-intelligence://",
    "phi-silica://",
  ];
  // reject anything else — at the wire
}

Pick your OS. Unsigned by design.

Windows builds are hosted right here on this page — click and the installer saves straight to your Downloads folder, no detour through GitHub. macOS and ARM/Linux builds ship from CI when the next release fires. On Windows and macOS you'll see a one-time "Run anyway" warning the first time you launch — it's normal for software that doesn't ship a $99/yr code-signing cert.

All downloads land on the GitHub Releases page — pick the asset that matches your OS. Checksums published with every release.

Questions worth answering.

Is it actually 100% local? What does it phone home?

Yes. The Rust backend has a hard-coded whitelist that rejects any non-loopback HTTP endpoint — see llm_client::validate_local_url. Outbound traffic is limited to (1) the one-time model download from Hugging Face on first run and (2) update checks against this repo's Releases page. Both are opt-out-able and neither carries audio or transcripts.

How is it free? Where's the catch?

No catch. OpenVoice is a fork of cjpais/Handy (MIT) with Wispr-Flow-class features layered on top. Distribution is GitHub Releases only — no app stores, no payments, no usage metering. If you want to support the project, file an issue or send a PR upstream.

How fast is transcription on a typical machine?

Whisper Tiny ships bundled — short clips (under 10 seconds) transcribe in well under a second on a typical x86_64 CPU. Larger models (Small, Medium, Turbo) auto-download on demand based on your hardware. On a machine with a dedicated GPU, Vulkan / Metal / CUDA acceleration is typically 5–30× faster than CPU.

My laptop has two GPUs. Which one does OpenVoice use?

The dedicated one. OpenVoice auto-selects discrete GPUs over integrated ones and uses available VRAM as a tiebreaker. You can override in Settings → Advanced → Performance → GPU device. Dedicated and integrated GPUs are labeled explicitly so they can't be confused on AMD-on-AMD laptops.

Does it work in IDEs and coding agents?

Yes — there's a "Vibe Coding" mode that activates in Cursor / VS Code / Windsurf / JetBrains IDEs and in terminal-hosted coding agents like Claude Code and Codex. It file-tags ("tag main.py" → @main.py) and wraps identifiers in backticks ("the user settings" → `userSettings`). Disabled outside those contexts so your prose dictation stays clean.

What about Wayland / Linux specifics?

X11 works fully. Wayland keyboard injection is limited by the protocol — OpenVoice runs under XWayland and pastes into XWayland apps; pure-Wayland apps won't receive simulated keystrokes. GTK layer-shell is used for the overlay (disable with HANDY_NO_GTK_LAYER_SHELL=1).

Can I use it offline?

Once installed and the first model is downloaded — yes, fully. OpenVoice doesn't need internet for any feature except checking for app updates. Pull the network cable and it keeps transcribing.

Are the builds signed?

Not yet — code signing is on the roadmap but not gating the v0.2.0 release. You'll see a one-time "Run anyway" warning on first launch (SmartScreen on Windows, Gatekeeper on macOS). Linux installers don't need signing. The published checksums let you verify the binary matches what was built in CI.

Replace your dictation subscription this afternoon.

Install in under two minutes. Your audio never leaves your laptop.

Download v0.2.0