Privacy · what stays on your Mac

OpenVoiceFlow privacy

OpenVoiceFlow is a native macOS app that runs on your Mac. Your voice is transcribed on-device with WhisperKit and never uploaded, and there are no accounts. Since v0.5.7, an opt-out anonymous usage summary — on by default — powers an in-app leaderboard; it's disclosed in full below, not glossed over. This page is the plain-language summary of the project's privacy policy.

The short version

  • Your audio never leaves your Mac. Transcription runs locally with on-device WhisperKit. The recording is discarded the moment the text exists — there is no audio upload, ever.
  • Cleanup is Off by default. Out of the box you get the raw on-device transcript, pasted as-is. Nothing is sent anywhere.
  • Cloud cleanup is opt-in and bring-your-own-key. If you turn on OpenRouter cleanup, only the transcript text and your personal context are sent — under your own key, to a provider you contract with directly.
  • API keys live in the macOS Keychain. Not a plaintext config file — the system Keychain, protected by macOS.
  • No accounts, and OpenVoiceFlow keeps no copy of anything you dictate. The one exception, disclosed in full below: since v0.5.7, an opt-out anonymous usage summary — on by default — powers an in-app leaderboard.

Anonymous usage summary & leaderboard (since v0.5.7)

Settings ▸ Privacy ▸ “Share anonymous usage & leaderboard rank”on by default. While it's on, the app periodically sends:

  • A random device ID generated on your Mac, and a display name you choose — shown to other users on the leaderboard, tied to no account or email.
  • Aggregate counters already shown on your Home pane: total words, total time back, streak, and which features are on. Counts only, never content.
  • Your country, derived from the request when it arrives. Your IP address is never stored.

Never sent, sharing on or off: dictated text, snippets, dictionary entries, or your Know-Me profile. Turn the toggle off and every request stops immediately. A “Delete my leaderboard data” button in the same Settings row removes a past submission outright. The leaderboard never discloses how many people use OpenVoiceFlow in total.

Where your data lives

Everything OpenVoiceFlow stores stays on your Mac:

  • Audio buffers — held in memory only while you hold the hotkey, transcribed on-device by WhisperKit, then discarded. Never written to a network.
  • Settings, history, and your personal context (Know-Me profile, dictionary, snippets) — stored locally in the app's Application Support folder.
  • API keys — stored in the macOS Keychain, not in a settings file.

Uninstall the app and clear those items to remove every trace.

Cleanup backends and what leaves the Mac

The optional cleanup step is where any text can leave your Mac — and only if you choose it:

  • Off (default) — no cleanup call is made. The raw on-device transcript is pasted directly. No dictation content leaves your Mac.
  • Ollama (on-device) — cleanup runs on your machine through a local model. No dictation content leaves your Mac.
  • OpenRouter (cloud gateway, recommended) — one key routes cleanup to any model OpenRouter hosts. When enabled, the transcript text plus your personal Know-Me profile, dictionary, and snippet context is sent to OpenRouter under your own key. You contract directly with OpenRouter under its terms; OpenVoiceFlow is not in the middle. Your audio is still never sent.
  • OpenAI, Anthropic, or Groq (direct cloud) — if you prefer a provider directly, cleanup can point at it instead. The same transcript-plus-context is sent to whichever provider you select, under your own key and its terms. Audio is still never sent.

Permissions you grant macOS

The app asks for these in System Settings → Privacy & Security. You can revoke them at any time:

  • Microphone — to capture audio while you hold the hotkey.
  • Accessibility — to paste the finished text at your cursor.
  • Input Monitoring — so the push-to-talk hotkey works in every app.

This website

The download site uses privacy-friendly Vercel Analytics for page-view, visitor, referrer, geography, selected-action, and performance trends. Its interactive marketing, documentation, blog, download, and privacy pages also send a minimized first-party event to OpenVoiceFlow’s own API for each page view and for a fixed set of meaningful actions such as download, install-guide, navigation, GitHub, and demo clicks. Minimal release-note embeds opened inside the app updater do not load this first-party analytics script and are excluded from those page totals. Each collected event keeps only the page path without query parameters, an allow-listed action and target, the acquisition category, a random visit ID that rotates after 30 minutes of inactivity, and coarse city/region/country when Vercel can derive them. Tagged outreach links may also carry short, opaque campaign and recipient tokens so campaign visits and downloads can be counted; these tokens never contain a person’s name or email address. Outreach emails may load a one-pixel image to record an open detected event and may use a first-party redirect for the OpenVoiceFlow site and named demo links. An open detected is not proof that someone read a message: an email image proxy or privacy preload can create it, and blocked images can suppress it. Email signals store no location, IP address, device fingerprint, message content, or arbitrary destination. Global Privacy Control and Do Not Track disable first-party email signals when the email client forwards those preferences; all email links still work when tracking is skipped. The site does not request your device location or store IP addresses, typed text, form values, raw click coordinates, arbitrary page text, advertising identifiers, or a persistent cross-visit browser ID. Global Privacy Control and Do Not Track disable these first-party events, which are deleted after 90 days. This is separate from the in-app usage summary described above.

Public source

OpenVoiceFlow publishes its source, so every claim on this page is checkable against the code itself. Use is free for personal purposes only under the OpenVoiceFlow Personal and Reciprocal Source License 1.0; a Covered Work that is distributed or offered over a network must publish source under the same license, while every Integration must retain the required attribution. Commercial or organizational use requires separate written permission or a separate written license from Shimoverse Studios. If anything here does not match what the app actually does, that is a bug we want fixed.