Skip to content

cefege/wispr-lightning

Repository files navigation

Wispr Lightning

Download the latest release — grab Wispr.Lightning.app.zip, unzip, drag to /Applications, and launch. Grant Accessibility, Input Monitoring, and Microphone permissions when prompted. Requires macOS 13+ on Apple Silicon.

I use Wispr Flow for voice dictation every day. It's great software — but it runs on Electron, which means it ships a full Chromium browser to display a menu bar icon. On my MacBook Air with 8 GB of RAM, it would crash under real workloads (Chrome, VS Code, Claude Code, Slack all running).

I ordered a new MacBook to fix the problem. Then I got annoyed that a menu bar app was the reason I needed new hardware. So while the MacBook was shipping, I rewrote Wispr Flow from scratch in native Swift. The rewrite was done before the laptop arrived.

Same transcription backend. Same features. 9× less RAM. 185× smaller binary. One process instead of ten.

Performance

Measured on MacBook M5 (16 GB RAM, macOS 15.3), both apps idle.

Metric Wispr Lightning Wispr Flow Difference
RAM (idle) 59 MB 546 MB 9× less
CPU (idle) ~0% ~21%
Processes 1 10 10× fewer
App size 2.5 MB 462 MB 185× smaller

Wispr Flow spawns 10 OS processes at launch — 4 renderers, GPU compositor, plugin helper, and multiple helper processes. Together they consume 546 MB of RAM doing nothing.

Wispr Lightning is a single native process. The OS parks it at 0% CPU between interactions.

Activity Monitor — Wispr Lightning vs Wispr Flow

Demo

Wispr Lightning demo

How it works

┌─────────────────────────────────────────────────────┐
│  Hotkey pressed                                     │
│  ├─ Pause music (Apple Music / Spotify)             │
│  ├─ Start AVAudioEngine recording                   │
│  ├─ Show recording overlay                          │
│  │                                                  │
│  Hotkey released                                    │
│  ├─ Capture active app context (bundle ID, window)  │
│  ├─ OCR visible screen text for formatting context  │
│  ├─ Stream audio → Wispr transcription API (WSS)    │
│  ├─ [Optional] AI polish pass with custom prompt    │
│  ├─ Inject text at cursor via Accessibility API     │
│  ├─ Save to local history (SQLite)                  │
│  └─ Resume music                                    │
└─────────────────────────────────────────────────────┘

The core pipeline: record → transcribe → format → inject. Context-aware formatting reads the active app and on-screen text via OCR so dictated text matches the style of what you're writing in — code comments get formatted differently than emails.

~6,400 lines of Swift. No frameworks beyond Foundation and AppKit. One binary.

Features

  • Push-to-talk dictation — hold a configurable hotkey to record, release to transcribe and inject text
  • Context-aware formatting — uses the active app and on-screen text (via OCR) to intelligently format transcriptions
  • Auto-polish — optionally rewrites transcriptions with a custom AI prompt before injecting
  • Processing indicator — overlay transitions from Recording → Processing → Done
  • Music auto-pause — pauses Apple Music / Spotify during recording, resumes after
  • Transcription history — browse and search past dictations in local SQLite
  • Menu bar app — lives in the status bar, zero UI clutter

Install

Option A — Download pre-built app (recommended):

Download Wispr.Lightning.app.zip from the latest release, unzip, and drag to /Applications. If Gatekeeper blocks it: xattr -cr "/Applications/Wispr Lightning.app".

Option B — Build from source:

./install.sh

Builds a release binary, bundles it into Wispr Lightning.app, and copies it to /Applications.

Permissions

After first launch, grant these in System Settings → Privacy & Security:

  • Accessibility — for text injection into other apps
  • Input Monitoring — for global hotkey capture
  • Microphone — prompted automatically on first recording

Build

swift build             # debug
swift build -c release  # release

Requirements

  • macOS 13+
  • Swift 5.9+
  • A Wispr account (works with the free tier)

Disclaimer

This is an independent project. It is not affiliated with, endorsed by, or connected to Wispr in any way. "Wispr" and "Wispr Flow" are trademarks of their respective owners. A Wispr account is required — the free tier works.

License

Source-available — see LICENSE. You may view and study the code for personal and educational purposes. Redistribution, commercial use, and derivative works are not permitted.

About

Native macOS voice dictation — a ground-up Swift rewrite of Wispr Flow. 31x less RAM, 84x smaller, single process.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors