For people building, hacking, or benchmarking OpenQuack. End-user install lives in INSTALL.md.
Requires Xcode 16+. The Swift Package Manager from CommandLineTools alone won’t compile some macro-using deps (e.g. KeyboardShortcuts).
git clone https://github.com/larryxiao/openquack.git
cd openquack
bash scripts/wrap_app.sh
open build/OpenQuack.app
scripts/wrap_app.sh builds the SwiftPM openquack executable, wraps it in a minimal OpenQuack.app bundle, and signs it. The script auto-picks a code-signing identity in this order:
$OQ_SIGN_IDENTITY (explicit override — for Developer ID distribution).Developer ID Application: … in the keychain.Apple Development: … in the keychain (free Xcode-managed dev cert).OpenQuack Dev (manual self-signed cert if you’ve created one).Stable signing matters: ad-hoc signing changes the Designated Requirement on every rebuild, which makes macOS TCC drop the Accessibility / mic grant. Any of options 2–4 keep the grant across rebuilds.
bash scripts/make_dmg.sh
# → build/OpenQuack-<version>.dmg
The script prints a sha256 — paste it into Casks/openquack.rb if you’re preparing a release.
swift run openquack-cli some-audio.wav
swift run openquack-cli some-audio.wav --engine lightning --model distil-large-v3
swift run openquack-cli some-audio.wav --json
Useful for trying engines / models on a one-off without the GUI.
Measures WER / CER / RTF / RSS / cold-start across engines × models on your machine.
# Fetch / generate corpus
bash bench/corpus/fetch.sh # synthetic + multilingual TTS
N=20 bash bench/corpus/fetch_librispeech.sh # real human speech (~337 MB)
.venv/bin/python bench/corpus/mix_noise.py # noise-augmented variants
# Run
swift run openquack-bench \
--engines whisperkit,lightning \
--models tiny,small,medium,distil-large-v3 \
--corpus bench/corpus \
--verbose
Output lands in bench/out/<host-tag>/. Submit results from your hardware via PR — see bench/CONTRIBUTING.md.
Synthesised numbers and the recommendation matrix live in BENCHMARKS.md.
openquack-cli and openquack-bench.References: voxt (technical).
local_quack/
├── apps/ (reserved for the future Xcode workspace)
├── Sources/
│ ├── OpenQuackApp/ SwiftUI menu-bar app (the GUI)
│ ├── OpenQuackKit/ Library — audio, STT, hotkey, paste
│ ├── OpenQuackCLI/ Single-file transcribe CLI
│ └── OpenQuackBench/ Benchmark CLI
├── scripts/ wrap_app.sh, make_dmg.sh, make_icon.swift, entitlements
├── bench/ corpus, lightning runner, host reports
├── docs/ ARCHITECTURE / BENCHMARKS / VISION / ROADMAP / INSTALL / DEVELOPMENT
├── Casks/openquack.rb Homebrew cask
└── Package.swift SwiftPM manifest
Architecture write-up in ARCHITECTURE.md. Contributor flow in AGENTS.md.