Privacy-first meeting assistant for macOS. Lives in your menu bar, captures mic and system audio, transcribes locally via Whisper, and summarizes with the LLM of your choice β no bots, no cloud uploads, no subscription.
- No-bot capture β records directly from mic and system audio loopback; nothing joins your call
- Local transcription β runs Whisper on-device via whisper.cpp; audio never leaves your machine
- Pluggable LLMs β summarize with Ollama (local), OpenAI, Anthropic, or Gemini
- Real-time transcript β sentence-boundary triggered, typically appears within 1β2 s of finishing a sentence
- Menu bar app β lives in the tray, pops up on click, hides on blur
- macOS 12.3+ (Sonoma recommended)
- For system audio capture: Screen Recording permission (macOS requirement for any loopback)
- A transcription source β one of:
- OpenAI Whisper API key (easiest setup)
- Downloaded local model (Base multilingual is 142 MB, works offline)
- Custom
.bin/.ggufmodel file
Download the latest Aura_*.dmg (Universal Binary) from Releases, open it, drag Aura to Applications.
First launch: right-click Aura β Open β Open to bypass the Gatekeeper prompt (one-time).
On first launch, click the tray icon β Settings to configure a transcription model.
Prerequisites: Rust, Node.js 18+, CMake (required by whisper.cpp)
# Install CMake if needed
brew install cmake
# Install JS dependencies
npm install
# Dev mode (hot-reload frontend, Rust rebuilt on change)
npm run dev
# Production build β outputs .app + .dmg in src-tauri/target/release/bundle/
npm run buildnpm run test # Frontend tests (Vitest)
npm run test:rust # Rust unit tests
npm run test:all # Both β run before every build
npm run test:watch # Frontend tests in watch modeSee CLAUDE.md for architecture details, adding new providers, and coding conventions.
Mic (cpal) βββ
βββ mix to 16kHz mono ββ Whisper ββ transcript chunks ββ SQLite
Loopback ββββ β
(ScreenCaptureKit) LLM summary (Ollama / API)
A VAD (voice activity detection) loop detects sentence boundaries and dispatches each sentence to Whisper immediately (~1β2 s latency). On stop, remaining audio is transcribed and the full transcript is sent to the configured LLM for a summary. Raw audio is never stored.
| Model | Size | Languages | Speed |
|---|---|---|---|
| Base (recommended) | 142 MB | Multilingual | Fast |
| Small | 466 MB | Multilingual | Good |
| Medium | 1.5 GB | Multilingual | Better |
| Large v3 | 2.9 GB | Multilingual | Best |
| Tiny | 75 MB | Multilingual | Fastest |
English-only variants (.en) are ~10% faster but cannot transcribe other languages.
| Provider | Setup | Notes |
|---|---|---|
| Ollama | Install Ollama, pull a model | Fully local, free |
| OpenAI | API key | gpt-4o recommended |
| Anthropic | API key | claude-sonnet-4-6 recommended |
| Gemini | API key | gemini-2.0-flash recommended |
| Custom (OpenAI-compat) | Base URL + optional key | Any OpenAI-compatible endpoint |
- No account required
- No telemetry
- Audio is processed in-memory and discarded immediately after transcription
- Transcripts and notes are stored locally in SQLite at
~/Library/Application Support/app.aura.aura/ - System audio capture requires Screen Recording permission β macOS mandates this for any app reading the audio loopback; no screen content is ever captured or stored
MIT