AI meeting notes. No bot in your call.
A local-first meeting recorder and AI note-taker for Windows and macOS — it records both sides of any call on your computer, transcribes them, and writes the notes, action items and answers. Nothing joins your meeting, and no cloud touches your audio unless you choose one.
- Windows: download the installer (Windows 10/11, 64-bit). SmartScreen may warn — the installer is new and unsigned; it's built from the source in this repo. More info → Run anyway.
- Mac: download the disk image (Apple Silicon, macOS 14.4 or newer), open it and drag Earshot to Applications. Production Mac releases are Developer ID signed and notarized by Apple. The first recording asks for Microphone and System Audio Recording permission.
- A first-run setup guide walks you through the choice:
- Self-host — free forever. Bring your own keys (Groq's free tier transcribes generously; any Anthropic / OpenAI-compatible / local model writes the notes) or point it at your own Whisper server.
- Earshot Plus — managed transcription
- AI, zero keys, zero setup. $9/month, 7-day free trial. It's how the project pays for itself.
Every mainstream meeting-notes tool either sends a bot into your call (awkward, blockable, sometimes against policy) or keeps your recordings and transcripts in their cloud — and several train their own models on your de-identified data by default. Earshot does neither:
- It records on two separate channels right on your PC — your microphone ("me") and the system audio ("them"). Works with Zoom, Teams, Meet, Webex, a softphone — anything you can hear.
- Speaker attribution is ground truth, not diarization guesswork — your voice and theirs are physically separate recordings.
- Echo cancellation (WebRTC AEC3, offline) removes their voice from your mic when you're on speakers, without ducking you when you talk over someone.
- Multi-hour meetings are split at quiet moments, transcribed (in parallel on cloud providers) and stitched back together automatically.
And the rest: Ask Earshot natural-language Q&A across every meeting with citations verified verbatim against the transcripts · call detection that offers to record when a meeting app starts using your mic · an always-on-top recording overlay with per-channel level lights · bookmarks while recording · talk-time analytics · optional screen-capture context · import of existing audio/video · crash-safe recording with automatic salvage · a "no input detected" warning before you waste an hour.
Otter, Fireflies, Fathom and Granola are all capable tools — most now offer some bot-free capture. What none of them offer is this combination:
| Earshot | Typical cloud notetaker | |
|---|---|---|
| Recordings & transcripts | Your PC only | Vendor's cloud (usually US) |
| Open source | Yes — MIT, this repo | No |
| Bring your own AI / fully local | Yes | No |
| Trains its models on your data | Never | Often, by default (opt-out) |
| Price | Free self-hosted · $9/mo managed | ~$8–20/user/mo |
Detailed, fact-checked head-to-heads (verified against each vendor's official pages): vs Granola · vs Otter · vs Fireflies · vs Fathom · full comparison. Related guides: recording consent laws · local vs cloud transcription.
Requirements: Python 3.12, plus either Windows 10/11 or an Apple Silicon Mac running macOS 14.4 or newer. Mac builds also need the Xcode command-line tools.
Windows:
py -3.12 -m venv .venv
.venv/Scripts/python -m pip install -r requirements.lock.txt # pinned, known-good
.venv/Scripts/python main.pymacOS:
python3.12 -m venv .venv-mac
.venv-mac/bin/python -m pip install -r requirements.lock.macos.txt
sh packaging/mac/audiotap/build.sh
.venv-mac/bin/python main.pyThe setup guide runs on first launch. For transcription, point it at one of:
- your own
whisper-asr-webservicecontainer (ASR_ENGINE=faster_whisperunlocks VAD skip-silence), - Groq / OpenAI / any OpenAI-compatible audio API,
- Deepgram.
Notes/Q&A take an Anthropic key, any OpenAI-compatible endpoint, or a fully local model (Ollama, LM Studio) — on that setup your meetings never leave your machine.
Read SECURITY.md for the full policy and threat model. The short version:
- Local by default. Audio, transcripts, notes and the SQLite library live
under
%LOCALAPPDATA%\Earshot\on Windows or~/Library/Application Support/Earshot/on macOS. Nothing leaves your machine except the providers you configure and the optional webhook. - Keys are stored in plaintext in
config.json(like most local dev tools). Prefer theANTHROPIC_API_KEY/OPENAI_API_KEY/DEEPGRAM_API_KEYenvironment variables on shared machines. - LAN Whisper is plain HTTP and unauthenticated by default — trusted networks only, or put TLS/auth in front.
- AI prompts treat meeting content as untrusted data (spoken "prompt injection" is fenced). Ask Earshot answers render as plain text; custom AI action results render as Markdown formatting only, with link activation disabled.
- Automatic updates are verified. The packaged app checks GitHub Releases on launch; an installer only runs after it matches the SHA-256 digest published with the release, over HTTPS from GitHub.
Windows:
# smoke-test the audio hardware (no GUI)
.venv/Scripts/python tools/smoke_record.py 4
# tests — self-contained scripts, no framework needed
.venv/Scripts/python tests/test_core.py
QT_QPA_PLATFORM=offscreen .venv/Scripts/python tests/test_ui_smoke.pyCI runs the full suite on every push/PR. One command builds the standalone app, installs it and creates shortcuts:
powershell -ExecutionPolicy Bypass -File "packaging\build_and_install.ps1"Distributable installer: install Inno Setup,
then iscc packaging\installer.iss.
macOS test/build commands:
QT_QPA_PLATFORM=cocoa .venv-mac/bin/python tests/test_ui_smoke.py
.venv-mac/bin/python tests/test_capture_mac.py
sh packaging/mac/audiotap/build.sh
.venv-mac/bin/python -m PyInstaller packaging/earshot_mac.spec --noconfirm --clean
sh packaging/mac/make_dmg.shTagged Mac releases fail unless Developer ID signing and notarization credentials are configured. CI verifies the bundle signature, Gatekeeper acceptance, stapled notarization ticket, architecture, metadata, DMG integrity and packaged launch.
Project layout
meeting_notes/
config.py, paths.py, changelog.py
audio/ devices, capture, writer, calibrate, aec
transcription/ whisper_client, openai_client, deepgram_client, earshot_client, service, merge, chunker
notes/ schema, anthropic_client, openai_llm, earshot_llm, actions, render, share
qa/ ask (two-pass Q&A with verified citations)
integrations/ todoist, webhook
storage/ db, repository (SQLite + FTS5)
pipeline/ processing
ui/ shell + pages, onboarding, overlay, theme, workers
main.py entry point
tools/ smoke_record, screenshots
tests/ self-contained test scripts (no framework needed)
packaging/ PyInstaller spec + Inno Setup script + build_and_install.ps1
Every release is documented in CHANGELOG.md — also visible in-app under Settings → About.
MIT. The desktop app is fully open source; the optional Earshot Plus backend (managed transcription/AI, accounts, sync) is the paid, closed service that funds development.
If Earshot is useful to you, a ⭐ helps other people find it.