Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

evrycallnote

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.

Features

  • 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

Stack

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

Quick Start

Prerequisites

Install

git clone https://github.com/m4zar/evrycallnote.git
cd evrycallnote

pnpm install
cd server && uv sync && cd ..

cargo tauri dev

Server Mode (optional)

Run the processing server on a GPU machine:

docker compose up -d
# Or: cd server && uvicorn main:app --host 0.0.0.0 --port 8000

Connect from the app via Tailscale IP.

How It Works

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

Configuration

# ~/.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.

Output Example

---
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...

Architecture

evrycallnote/
├── src-tauri/           # Rust: Tauri core, audio, sidecar
├── src/                 # Svelte 5: GUI
├── server/              # Python: FastAPI processing engine
├── docker-compose.yml   # Server deployment
└── docs/                # Specification

License

MIT

Disclaimer

Recording calls may require consent from all participants depending on your jurisdiction. You are responsible for complying with applicable laws.

About

Offline call recorder with local transcription, speaker diarization, and summarization - 100% on-device, Mac + Linux

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages