Record every call. Transcribe, diarize, summarize — locally.
Cross-platform desktop app (Mac + Linux) that turns your calls into structured, searchable notes. 100% local AI processing. No cloud APIs, no subscriptions, no one listening.
- One-click recording — system audio + mic, invisible to other participants
- Local transcription — whisper.cpp with GPU acceleration (Vulkan / Metal)
- Speaker diarization — who said what (pyannote.audio)
- AI summarization — key points, decisions, action items (Ollama)
- Obsidian export — markdown with YAML frontmatter, ready for your vault
- Remote processing — send audio to your GPU server over Tailscale
- Dashboard — browse, search, and replay past calls
- Offline-first — record without internet, sync later
| Component | Technology |
|---|---|
| Desktop app | Tauri v2 |
| GUI | Svelte 5 + TailwindCSS |
| Processing | Python 3.11+ / FastAPI |
| Database | Supabase (Postgres + Storage) |
| Transcription | whisper.cpp |
| Diarization | pyannote.audio |
| Summarization | Ollama |
- Rust (for Tauri)
- Node.js 20+ and pnpm
- Python 3.11+ and uv
- Ollama running locally
- whisper.cpp compiled with GPU support
- A Supabase project
- A HuggingFace account (for pyannote models)
git clone https://github.com/m4zar/evrycallnote.git
cd evrycallnote
pnpm install
cd server && uv sync && cd ..
cargo tauri devRun the processing server on a GPU machine:
docker compose up -d
# Or: cd server && uvicorn main:app --host 0.0.0.0 --port 8000Connect from the app via Tailscale IP.
You click "Record"
→ captures system audio + mic
→ saves WAV to disk (streaming, crash-safe)
You click "Stop"
→ whisper.cpp transcribes (GPU-accelerated)
→ pyannote identifies speakers
→ Ollama summarizes
→ note saved to Supabase + exported to vault
~10-15 min processing for 1h call
# ~/.evrycallnote/config.toml
[app]
mode = "local" # local | remote
theme = "dark"
[server]
url = "http://100.x.x.x:8000"
[transcription]
model = "large-v3"
language = "auto"
[summarization]
engine = "ollama"
model = "llama3.1:8b"
[output]
vault_path = "~/Documents/vault"
note_dir = "research/meetings"Secrets (Supabase keys, HuggingFace token) are stored in your OS keychain.
---
title: "Weekly Sync"
date: 2026-03-30
duration: "42m"
speakers: 2
tags: [meeting, call]
---
## Summary
Discussion about portal v2 deployment...
## Decisions
- Prioritize auth before deploy
## Action Items
- [ ] Alex: configure auth — by Friday
## Transcript
[00:00] **Speaker 1:** Hi, let's align...
[00:15] **Speaker 2:** Sure, the timeline...evrycallnote/
├── src-tauri/ # Rust: Tauri core, audio, sidecar
├── src/ # Svelte 5: GUI
├── server/ # Python: FastAPI processing engine
├── docker-compose.yml # Server deployment
└── docs/ # Specification
MIT
Recording calls may require consent from all participants depending on your jurisdiction. You are responsible for complying with applicable laws.