Quill: One Feather in the Menu Bar for Fully Local Meeting Recording and Transcription
Quill is a lightweight macOS menu‑bar tool that captures both microphone and system audio in two tracks, runs an on‑device Parakeet transcription model via Core ML, and outputs speaker‑tagged transcripts without any network connection, addressing privacy and workflow challenges of meeting recording.
Why a New Tool?
Typical meeting workflows involve two hours of conversation followed by an hour of manual note‑taking. Existing solutions either record the whole screen (producing massive files), capture only the microphone, require cloud services, charge monthly fees, or fail to attribute speech to the correct speaker.
Core macOS Capabilities
Core Audio Process Tap – a system‑level API (macOS 14.2+) that taps the system audio output without virtual devices or kernel extensions.
AVAudioEngine – handles microphone capture, enabling parallel “dual‑track” recording.
CAF container – a Core Audio format that can be written incrementally; if the process is killed, the partially written file remains readable.
What Quill Does
Quill is a single‑binary Swift program that lives in the menu bar. Clicking the feather icon starts simultaneous recording of mic.caf (microphone) and system.caf (system audio). When stopped, the tool runs the FluidAudio Parakeet TDT 0.6B model locally via Core ML, producing two transcripts that are aligned by timestamps and merged into a speaker‑tagged transcript.md. No network request is made at any stage.
Workflow
1. Click menu‑bar icon → start recording
2. AVAudioEngine writes mic.caf
3. Core Audio Process Tap writes system.caf
4. macOS shows purple recording indicator
5. Icon turns red with timer
6. Click again → stop recording
7. Serial queue processes session → invoke Parakeet
8. Transcribe each track → align by start offset
9. Merge → output transcript.json + transcript.md
10. macOS notification appearsDesign Choices
Swift single binary – no app bundle, no Electron/Tauri, minimal memory footprint.
Process Tap vs. BlackHole – avoids driver installation and complex routing.
Parakeet vs. Whisper – Parakeet (TDT architecture) runs ~20 s per hour of audio on Apple Silicon, 5‑10× faster than Whisper large‑v3, though currently English‑only.
CAF vs. m4a – CAF allows crash‑safe incremental writes; m4a requires finalization and can be corrupted on crash.
File‑system as queue – presence of transcript.json marks completion; missing files indicate pending work, enabling simple crash recovery.
NSStatusItem UI – a single menu‑bar icon provides a lightweight, always‑available control surface.
Core Capabilities
Dual‑track recording with automatic “me/them” speaker tags.
Local transcription via Parakeet (≈20 s/h) with timestamps.
Outputs both machine‑readable JSON and human‑readable Markdown.
Configurable directory, optional transcription toggle, echo‑cancellation, and on_stop shell hook for post‑processing.
CLI commands: quill (daemon), quill run --out, quill doctor, quill install --launch-at-login.
Pros and Cons
Pros : fully local, privacy‑first, minimal UI, automatic speaker tags, crash‑safe CAF storage, simple state management, fast Parakeet model, MIT license.
Cons : requires macOS 15+, English‑only transcription, captures all system audio (e.g., music), no App Store bundle, higher barrier for non‑developers, early‑stage project with limited release artifacts, reliance on a private API ( AudioHardwareCreateProcessTap).
Comparison with Alternatives
Quill: menu‑bar binary, dual‑track speaker tags, fully local, fast Parakeet model, MIT license.
Otter.ai: SaaS subscription, cloud processing, speaker tags available but paid.
Whisper Desktop: desktop app requiring Python, local transcription but slower, manual speaker merging.
OBS + Whisper: manual pipeline, requires custom scripting.
Who Should Use It?
Heavy macOS users who run many English meetings, privacy‑sensitive industries (medical, legal, finance), developers who prefer a single binary tool, and anyone wanting an automated “record + transcribe + archive” workflow without cloud dependencies.
Design Lessons
Encapsulate complex audio capture behind a single UI action.
Use the file system itself as a lightweight state store.
Choose crash‑safe containers (CAF) for critical data.
Leverage native menu‑bar UI for unobtrusive tools.
Combine local AI models with system frameworks to achieve truly offline AI.
Conclusion
Quill demonstrates how macOS system‑level audio APIs, a Swift‑only binary, and an on‑device ASR model can be combined into a privacy‑preserving, zero‑network meeting recorder and transcriber. It occupies a niche between heavyweight SaaS solutions and DIY pipelines, offering a minimalist yet powerful experience for users who value local processing and control.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Geek Labs
Daily shares of interesting GitHub open-source projects. AI tools, automation gems, technical tutorials, open-source inspiration.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
