Local-first
Audio and transcripts never leave your Mac.
Live todayWe reduce attack surface by architecture, not by marketing. Here's the technical truth.
Each step, in detail. If something you care about is missing, email us.
Captured by cpal into a temporary WAV file in your user-scoped temp directory. Never written to a shared location. Never uploaded.
whisper-rs with Apple-silicon Metal acceleration. Audio is read, transcribed, and the temp file is destroyed.
llama-cpp-2 against a local GGUF model. The prompt is constructed locally, the response stays local.
Cleaned text is typed into the active app via macOS accessibility APIs, with a clipboard-paste fallback if needed.
Periodic signed-JWT verification against our API. The request contains no content, only account email and app version.
The strongest privacy claim is the one you can check yourself. Other dictation apps ask you to trust a “privacy mode” you can't see. Penwright's privacy is in the architecture, so you can watch it work.
Turn off Wi-Fi and dictate. It keeps working. Transcription and cleanup run entirely on your Mac. A cloud dictation app stalls the moment it loses the network.
Run Little Snitch, LuLu, or Activity Monitor's Network tab while you dictate. Your audio and transcript generate zero outbound traffic. There is no code path in the app that uploads them. The only connections Penwright ever makes are content-free: license check, updates, and one-time model downloads.
Audio → whisper-rs → llama-cpp-2 → keystrokes, every step on-device. The one optional cloud path, bring-your-own-key cleanup, is off by default, sends text only (never audio), goes straight to your provider with your key, and is hard-blocked when Privacy Mode is on.
A privacy claim you can't enumerate is marketing. Here is the complete list of network calls Penwright makes:
That's the whole list. Dictation, cleanup, transforms and captures make zero network calls. Verify it yourself: turn Wi-Fi off and keep dictating, or watch the process in Little Snitch.
Voice transforms read the text you selected and, for context, the field it sits in. Both are processed on your Mac and discarded after the result is produced. They are never transmitted or stored.
What's live today, and what we're working on.
Audio and transcripts never leave your Mac.
Live todayPersonal content stays on the Mac by default. There is no audio to process serverside. Subject-access requests honored.
Live todayControls under review. Available on request once audited.
In progressOn the roadmap. Targeting completion within the next 12 months.
In progressTLS in transit. Bearer-token auth. Rate-limited. No personally identifying content in the payload, just account email, license ID, and app version.
In macOS Keychain, scoped to the Penwright app via security-framework. Other applications cannot read it.
License is cached locally with a grace period. Penwright works fully offline. License revalidates next time you're online.
No. There is no telemetry channel for transcripts or audio. We have no data corpus to train on.
Yes. Email security@penwright.ai and we'll share the architecture doc and answer specific questions.