Free, open-source AI dictation for Windows, macOS, and Linux. Hold a hotkey, talk, release, and cleaned-up text is typed into any app.
Local-first. BYOK or local models. Optional product analytics, off whenever you want. A free, open-source alternative to closed-source dictation Wispr Flow.
What Verenu Is
Verenu is a free, open source desktop AI dictation app for Windows, macOS, and Linux, built with Tauri, Svelte, Rust, and SQLite.
It records locally, sends audio and text only to the AI providers you choose, keeps your app data on your machine, and avoids the usual Electron bloat. The goal is simple: fast dictation, predictable formatting, and privacy that is easy to understand.
What It Does
- Hold-to-record dictation with global hotkeys, plus a handsfree toggle mode
- Contexts: group apps and websites with the tone, cleanup rules, custom instructions, vocabulary, and snippets that belong there
- Provider choice for transcription and cleanup, including fully local Parakeet V3 transcription and local LLM cleanup
- Local history, insights, local settings, and local data export/import
- Optional auto-learn from repeated manual corrections
Contexts are the main place to configure app-specific behavior. They connect apps and websites to cleanup, tone, custom instructions, vocabulary, and snippets. The old standalone pages remain available only as legacy compatibility pages.
For more details: Contexts, Vocabulary, Snippets, Cleanup Levels, and Local Transcription.
Appearance can follow the operating system or stay in light or dark mode. Page surfaces use neutral near-white and charcoal colors, and the accent can be changed independently to any six-digit hex color. See Appearance and settings.
Agents and scripts can opt into validated native settings/Context control and private historical diagnostics. See Agent control for access, retention limits and the optional harness skill installer.
Platform Support
Verenu supports Windows, macOS, and Linux (with Omarchy Quattro/Hyprland as the primary Linux environment).
Windows
- Windows 10 and 11
- Uses WebView2, not Electron
- Default hold-to-record hotkey: Ctrl + Windows
- API keys are stored in Windows Credential Manager
macOS
- Apple Silicon and Intel builds are supported
- Default hold-to-record hotkey: Option + Space
- API keys are stored in Keychain
- Verenu needs macOS permissions for real-world use:
- Microphone, to capture audio
- Accessibility, to inject text and interact with focused apps
- Notifications are optional and only affect status and update alerts
macOS support is not an afterthought anymore. It is part of the normal app flow, and the repo includes macOS-specific hotkey, permissions, injection, updater, and key-storage logic.
Linux (Wayland)
- Arch Linux with Omarchy Quattro and Hyprland is the primary supported setup
- Default hold-to-record hotkey: Ctrl + Super
- Global shortcuts use the XDG Desktop Portal; API keys use Freedesktop Secret Service
- Native Wayland clipboard/focus integration is used for paste and clipboard restoration
For more details: Install Verenu, Troubleshooting, and macOS code signing.
How It Works
- Verenu records audio locally while you hold the hotkey.
- When you release, it either transcribes locally or sends the audio to your chosen cloud transcription provider.
- If cleanup is enabled, it sends the resulting raw text to your chosen cleanup model so filler words, punctuation, tone, context instructions, and formatting rules can be applied.
- It pastes the final text back into the app that had focus when you started.
- It stores local history and optional learning data on your machine.
For more details: Your First Dictation and Architecture.
Data And Privacy
Verenu's own server (api.verenu.com) serves only public app metadata — release info, download links, and provider status. Your dictated audio and text either stay on your device or go directly to the third-party providers you choose; they never touch a Verenu server.
Stays on your device
- API keys in Windows Credential Manager, macOS Keychain, or Freedesktop Secret Service on Linux
- Settings in local app storage
- Transcription history in local SQLite
- Context groups, app and website targets, vocabulary, snippets, and auto-learn data in local SQLite
- Update-dismiss state, model preferences, and context group targets
- Local session logs retained for up to 30 days within a 256 MiB budget, with low-disk pauses. Locations and agent diagnosis
Leaves your device
- Local transcription plus local cleanup, or Cleanup Off, keeps audio and transcript on device after the model download
- Local transcription plus cloud cleanup keeps audio on device but sends transcript text to the cleanup provider
- Cloud transcription sends recorded audio to your chosen transcription provider
- Context instructions, cleanup settings, and selected model metadata go with cleanup requests
- Update checks hit GitHub release metadata
- Optional GitHub Insights sends a username and date range to GitHub's public contribution calendar. If the profile owner enables Show private contributions, GitHub may include anonymized private counts. Verenu does not send dictated text or sign in to GitHub for this feature; public commit search is used only when the calendar cannot be read.
- Provider status and health checks hit
api.verenu.com(public status only, no dictated content, keys, or history). You can disable these background checks in Settings → Privacy.
Optional product analytics
Supported builds may use PostHog for privacy-preserving product analytics. Analytics is enabled by default so we can understand coarse feature usage, settings adoption, and reliability, but you can turn it off during onboarding or at any time in Settings → Privacy.
Analytics uses random installation, session, and dictation identifiers. The installation ID persists across launches until opt-out; it is not derived from an account or device identifier. Analytics excludes dictated audio, transcripts, cleaned text, prompts, clipboard contents, window or app contents, URLs, accessibility text, credentials, microphone names, and raw error messages. See the analytics contract and privacy breakdown.
Read the full breakdown in docs/DATA_AND_PRIVACY.md.
AI Providers
You choose the providers. Verenu does not lock you into one stack.
| Provider | Transcription | Cleanup |
|---|---|---|
| Local | On-device models | On-device models or none |
| Groq | whisper-large-v3-turbo |
qwen/qwen3.6-27b |
| OpenAI | gpt-4o-transcribe |
gpt-4o-mini |
gemini-3.5-transcribe |
gemini-3.5-flash-lite |
|
| AssemblyAI | universal-3-5-pro or universal-2 |
not available |
| OpenRouter | Configurable model ID | Configurable model ID |
| xAI | grok-voice-transcribe-2.0 |
grok-4-fast-non-reasoning |
These are examples from the app's model catalog. OpenRouter and xAI are available in Settings -> API Keys and Advanced Models, rather than the setup wizard or one-click presets. Their catalogs are not live-synced; Advanced Models accepts custom model IDs. See API keys.
If you care about privacy, speed, retention, or cost, judge the provider on its own policy. Once data leaves Verenu and hits a provider API, that provider's rules apply. Local transcription with cloud cleanup is still not fully local because the transcript text leaves the device.
Enhanced transcription
Advanced Models includes an optional Dual model transcription strategy. It runs the primary model and the first configured transcription fallback together, then sends two successful candidates to the cleanup model for reconciliation. If a candidate fails, later fallbacks are tried until two models work or the chain is exhausted. This can improve word choices when providers disagree, but it uses another transcription request and may add latency.
For more details: Add Your API Key and Privacy & Data.
Setup
Prerequisites
- Node.js 24 LTS, matching CI
- Rust and Cargo
- Python 3.8+ (required by
npm test; the OnePyFone test runner is a Python script) - Windows: WebView2
- macOS: Xcode Command Line Tools are recommended for local builds
Run in development
git clone https://github.com/Verenu/Verenu.git
cd Verenu
npm install
npm run tauri dev
Useful commands
npm test
npm run check
npm run lint
npm run test:rust
npm run test:live
npm run test:native
For more details: Install Verenu, Contributing, and Testing.
Release Flow
master is the only shared integration and release branch.
The normal flow is:
- Create a short-lived feature or fix branch from
master. - Open a pull request directly into
master. - Let the required CI checks run, review the change, and merge it into
master. - The morning nightly workflow reads
master; run the manual installer workflow frommasterwhen a production build is needed.
If you are contributing, read docs/CONTRIBUTING.md before you start.
For more details: Release Process, Changelog, and Contributing.
Why Tauri
- No bundled Chromium
- Lower idle RAM
- Native OS integrations where they actually matter
- Better fit for a background dictation tool than a browser-shaped desktop app
For more details: Architecture.
Contact
- Website: verenu.com
- General inquiries: hello@verenu.com
- Support: docs/SUPPORT.md or support@verenu.com
- Security: docs/SECURITY.md or security@verenu.com
License
MIT. See LICENSE.