Skip to content

About

Voice-first personal automation for macOS. Speak → transcribe → polish → route. All local AI. Named after a good dog.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,137 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mando — the WhisperWoof mascot

WhisperWoof

Voice dictation for your Mac that types as you speak.
Hold fn and talk. It transcribes, cleans up, and sends your words where you want them, all on your Mac.

v2.8.1 MIT License macOS 2093 tests passing

Quick Start · Features · How It Works · Website · Download



The Problem

Voice transcription tools turn speech into text — then stop. You still copy-paste into apps, switch windows, route output manually.

The open-source world has two mature, disconnected layers:

  • Voice/STT: OpenWhispr, Whispering, VoiceInk
  • Workflow automation: n8n, Activepieces, Huginn

Nobody built the bridge. WhisperWoof is that bridge.


How It Works

Mando tilting his head, waiting
1. Hold Fn
Mando tilts his head.
You're recording.
➔ Mando nodding along
2. Speak
Mando nods along.
Filler words welcome.
➔ Mando hopping
3. Release
Mando hops. Clean, polished
text lands at your cursor.

Hands-free: double-tap Fn to lock recording on, then tap once to stop and paste.

Live typing (Settings → Transcription → How dictation works): watch the words appear while you speak, like a phone keyboard's voice input, on one line next to Mando that slides left as you keep talking. Settled text is solid ink, the tail that may still change sits in frosted glass; on release it's re-checked by your transcription model, polished, and pasted.

Voice ──▶ Local speech-to-text (Whisper / Parakeet / Distil-Whisper)
              │
              ▼
         Memory swaps (mishearings you approved, e.g. "super base" → Supabase)
              │
              ▼
         Local cleanup (bundled llama-server)
         Drops filler, fixes grammar and punctuation, keeps your language
              │
              ▼
         The key you pressed decides where it goes
              │
              ├──▶ Fn         → Paste at your cursor
              ├──▶ Fn + T     → Copy to the clipboard
              ├──▶ Fn + N     → Save as a Markdown note
              ├──▶ Fn + P     → File the note under a project (Inbox by default)
              └──▶ Every dictation also lands in searchable history

Features

Dictation

  • Live typing (new in 1.18, a one-line ticker since 2.1): text streams in as you talk, IME-style, from a local Chinese + English streaming model (X-ASR, 134 MB). On release the whole recording is re-checked by your transcription model (or the live text is pasted as is, your choice), then cleaned up. On by default since 2.7 (its model downloads in the background); switch to "After you finish" in Settings → Transcription.
  • Local speech-to-text: Whisper large-v3 turbo by default (1.6 GB, many languages including Chinese), or NVIDIA Parakeet for fast English and European dictation, or Distil-Whisper for English, or SenseVoice for mixed Chinese and English. Nothing leaves your Mac.
  • Smart Cleanup: a small bundled model (Qwen3.5 2B, 1.3 GB, run by llama-server) removes filler, fixes grammar, assembles spoken emails, and keeps your voice. Spoken enumerations ("第一… 第二…") become numbered lists; silent captures are dropped instead of guessed at. One click in onboarding sets it up; the prompt is yours to edit in Prompt Studio.
  • Memory: learns names and jargon from the fixes you already make. Fix the same mishearing twice and it offers to fix it for you from then on, with every engine. It only swaps what you approve.
  • Hotkey = destination: each Fn combination has one place it sends your words. No commands to remember, no guessing.

Notes, clipboard & history

  • Notes & projects: Fn+N saves a dated Markdown note to ~/Documents/WhisperWoof Notes (change the folder in Settings; Obsidian reads it as is). Fn+P files it under a project, Inbox by default. A note links back to its recording.
  • Clipboard (new in 2.2): everything you copy, text on one side and images on the other. Click to copy again (images paste as images), save any item to Notes, pin what matters, and choose how long history is kept and how much space images may use. What password managers copy is never saved.
  • Words in images (new in 2.4): opt-in. Search finds a screenshot by the words in it, Chinese and English included. macOS's own text recognition reads your images on your Mac, in the background and at low priority (older images only while plugged in); nothing is uploaded. Turning it off deletes the words.
  • Voice history + audio playback: tap any entry to replay the original recording. Audio Retention keeps recordings for 7 to 90 days, or stops saving them.
  • Full-text search: SQLite FTS5 across all your voice and clipboard entries.

Privacy & security

  • Local-first: dictation, cleanup, history and search run on your Mac with bundled models (whisper.cpp, sherpa-onnx, llama.cpp). No account, no upload. Cloud models (OpenAI, Anthropic, Gemini) work if you bring your own key and are off until you choose one.
  • Encryption (new in 2.3): opt-in. History, notes, recordings, clipboard images and Memory are encrypted on your Mac and unlock with Touch ID (the key lives in the Secure Enclave) or your password. A 12-word recovery phrase opens them on any Mac. No back door: lose both and the data is gone. It locks when your Mac locks or sleeps, and dictation keeps working while it's locked. Notes can stay plain Markdown if you want them in Obsidian or iCloud. (Design.)
  • Only its own files (2.3.1): WhisperWoof reads and deletes files only inside its own folders, never an imported original, and settings import/export use their own file dialogs.
  • Graceful degradation: no cleanup model? You still get a clean raw transcript. Selected model missing? It falls back to the best one on disk.

Meetings

  • Transcribed on your Mac (new in 2.5): once the SenseVoice model is downloaded (155 MB, listed with the Parakeet models in Settings → Transcription; downloading it also switches dictation to it), your mic and the other side's audio are transcribed on this Mac and saved into the meeting's note as it goes. Nothing leaves your Mac. Lines arrive every couple of minutes, not word by word. SenseVoice covers Chinese, English, Japanese, Korean and Cantonese, and while it's downloaded every meeting uses it.
  • Or live with OpenAI Realtime when SenseVoice isn't downloaded, with your own OpenAI key or an OpenWhispr account. That sends the meeting's audio to OpenAI, and only when you start a meeting.
  • Noticed for you: calendar events, meeting apps and mic activity trigger a notification, about 90 seconds ahead for scheduled meetings.
  • A Meetings tab (new in 2.6): New meeting starts recording right away; today's calendar events that haven't ended sit on top with a Record button each (the note is named after the event), and meetings are listed under a divider per day. The folder capsule switches to Personal (where uploaded audio lands by default) and your own folders.
  • Keeps recording in any view (2.5): leave Meetings and the recording pill shows the meeting and can stop it. The transcript goes to the note that was open when you started.
  • Long meetings keep going (fixed in 2.3.1): with OpenAI, the session switches over before OpenAI's 30-minute limit without a gap, and reconnects after drops.
  • Crash-safe audio: recorded to disk in 5-minute segments while you talk (encrypted when encryption is on), and deleted once the meeting ends normally.

More

  • ⌘K searches everything (new in 2.4): history, notes, meeting notes, everything you copied, and the words in your images, in one box (Chinese included). Enter opens a result, or copies a clipboard item back.
  • Command bar: in the same box, start with / to type instead of talk. Your text gets the same cleanup; /note saves it as a Markdown note, /paste pastes it at your cursor.
  • Agent mode: voice chat with an LLM, streamed. Give it a hotkey in Settings; it uses a cloud model (Groq by default).
  • MCP plugins (early): the Plugins page sets up Todoist, TickTick, Notion, Calendar and Slack servers, and asks before any plugin command runs. Sending dictation to a plugin isn't wired up yet.
  • Glass in Mando's colors (new in 2.0): liquid glass only for what's still moving (the sidebar, menus, the dictation overlay), solid sheets for what has landed, pill-shaped controls, the rounded Nunito font, and a brown-black dark mode. Design rules live in DESIGN.md.
  • Animated Mando: the floating indicator is Mando himself: a head-tilt while he waits for your voice, a nod while you speak, a thoughtful chin-scratch while it's transcribed and polished, a little hop when it lands, and a puzzled head tilt with a "?" when he didn't hear anything (then nothing is typed).

Quick Start

Install the app (Apple Silicon). The easiest way is one line in Terminal. It downloads the latest release, checks its SHA-256, installs it to /Applications and opens it:

curl -fsSL https://raw.githubusercontent.com/h3qing/WhisperWoof/main/scripts/install.sh | bash

Run the same line again to update. Or grab the latest .dmg and drag WhisperWoof into Applications. The app isn't signed by Apple yet, so the first time you open it macOS says it can't verify it. Click Done, then go to System Settings → Privacy & Security and click Open Anyway. (What signing would change.)

Onboarding walks you through the microphone and accessibility permissions and offers a one-click Cleanup step that downloads the cleanup model (Qwen3.5 2B). Skip it and you can set it up later in Settings → Intelligence. To encrypt your data, open Settings → Encryption.

Or build from source:

git clone https://github.com/h3qing/whisperwoof.git
cd whisperwoof
npm install
npm start

See CONTRIBUTING.md for the full development setup.

Requirements

  • macOS on Apple Silicon
  • Microphone (built-in or external)
  • About 3 GB of disk for the local models (transcription, cleanup, live preview). Cleanup is optional: without it you get the raw transcript.

Design Principles

Principle What it means
Hotkey = intent The key combo you press determines where voice goes. Explicit over magic.
Local-first Dictation, cleanup, history and search run on your Mac. Anything that uses the cloud (OpenAI meeting transcription, agent mode, cloud models) is opt-in.
Yours to lock Encryption is one switch away, with no back door and no account.
Fork, don't reinvent Built on OpenWhispr's proven STT engine and Electron shell.
Power users first Control, customization, and ownership of your tools.

Tech Stack

Layer Technology
Runtime Electron 39 + React 19 + TypeScript + Tailwind CSS v4
STT Whisper (whisper.cpp, default, multilingual) / NVIDIA Parakeet, X-ASR and SenseVoice (sherpa-onnx), all local
Cleanup Bundled llama-server (llama.cpp) with Qwen3.5 2B. Cloud providers (OpenAI, Anthropic, Gemini) optional.
Storage SQLite (better-sqlite3-multiple-ciphers) + FTS5 full-text search
Encryption SQLCipher for the database, AES-256-GCM files sealed to an X25519 key, Touch ID via the Secure Enclave, scrypt for the password
Plugins Model Context Protocol (MCP)

Roadmap

  • Phase 0: Fork + security hardening + test infrastructure
  • Phase 1: Core pipeline: storage, local cleanup, hotkey routing, history
  • Phase 3: Polish, onboarding, public release (v1.0)
  • Phases 4–10: Competitive features, AI intelligence, vibe coding, streaming, templates
  • Meeting recording: crash-safe audio buffer, Granola-style detection, long-meeting session rotation
  • Agent mode: voice-driven AI chat with streaming LLM responses
  • Live typing (1.18), Clipboard (2.2), Encryption (2.3), ⌘K search (2.4), Meetings transcribed on your Mac (2.5), Meetings tab (2.6), Live typing by default (2.7)
  • Phase 2, MCP plugins: the plugin servers and Plugins page are in; sending dictation to Todoist, Notion, Slack and Calendar is next
  • Distribution: code signing, notarization, auto-update

Credits

WhisperWoof is a fork of OpenWhispr. We're grateful to the OpenWhispr team for building such a solid foundation.

Also built on: OpenAI Whisper · whisper.cpp · Distil-Whisper · NVIDIA Parakeet · sherpa-onnx · llama.cpp · SQLite3 Multiple Ciphers · Model Context Protocol


Contributing

WhisperWoof is in early development. Contributions, feedback, and ideas are welcome. Please open an issue to discuss before submitting a PR, and see CONTRIBUTING.md to get set up.

License

MIT, see LICENSE for details.


Mando
Named after Mando, who always listens.
Built with care by Heqing.

About

Voice-first personal automation for macOS. Speak → transcribe → polish → route. All local AI. Named after a good dog.

Topics

Resources

Contributing

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages