Skip to content
Muhammet Şafak
tr
Cover — Tan the beaver mascot taking notes with a notebook and pen on a dark background; to the left, a large stack of video frames and beside it a much smaller stack carrying a sound wave

Tan Assistant: a desktop app that turns a meeting into notes from its audio and changing screen frames

An open-source desktop app in Rust and Tauri 2 records a meeting's audio and the screen frames that change, then writes a summary and action items.

What it does today

Records a meeting's microphone and system audio on separate tracks plus only the screen frames that change, then writes a note with a summary, decisions, action items and open questions. Anyone who wants meeting recordings turned into notes without keeping video can build it from source and try it.

Started
November 2026 — Ongoing

Form

Desktop Open-Source

Technologies

Rust Tauri 2 React TypeScript SQLite whisper.cpp Ollama

I record the audio and screen of my meetings, after telling the participants, so that the decisions made and the tasks assigned stop getting lost. Replaying a recording to take notes stopped being sustainable as meetings piled up, and full video ran to several GB for a half-hour meeting. Tan Assistant sits between those two problems: instead of video, the audio and only the screen frames that change. The story itself is in the blog post.

Meeting capture without video

Whatever conferencing tool the meeting uses, the app runs on your computer. It records your microphone and the other participants’ audio on separate tracks and keeps only the screen frames that visibly change (detected with a perceptual hash). A recording can be paused, and the paused time is left out. I wrote the capture code for Windows, macOS (ScreenCaptureKit, 13.0 and later) and Linux (X11 and Wayland).

When the recording ends, a transcript is produced, then a note with a summary, decisions, checkable action items and open questions; the note sits together with the frames that were shown on screen.

A pipeline where you pick the model

I made local whisper the default for transcription (Vulkan or Metal on a GPU, otherwise the CPU); you can hand it to OpenAI or Gemini instead. The note can be written by OpenAI, Anthropic, Gemini, DeepSeek or a local Ollama. You choose in Settings which provider gets which task, and I keep API keys in the operating system’s keychain. Recordings, frames and notes stay on your machine; a cloud provider only gets the task you assign to it.

I layered the code: domain has no dependencies, application looks only at domain, and providers and capture live in infra-* adapters. I enforce the dependency direction with scripts/check-deps.sh.

I wrote the app in Rust because a recorder that stays open in the background for the whole meeting had to be as light and stable as possible. The desktop shell is Tauri 2, the interface React and TypeScript; recordings and notes are indexed in a local SQLite database.

Where the limit is today

Version 0.1.0, alpha. I haven’t published an installable release yet, so for now you build it from source. Behavior, data layout and settings may change from one version to the next; there is no automatic migration between them yet.

I kept the scope deliberately narrow: for now it only pulls notes out of meetings. I plan to add other features later; my aim is an integrated app where I can hand off, in one place, the work I can turn into automation. I named it after Tan, this site’s mascot.

Tags: #ai#rust#desktop-app
Share:

More Records

All records

A desktop app that reads Claude Code, Codex CLI and Gemini CLI logs locally and shows token usage by project, model and session.

What it does today

Collects AI agent token usage from local logs and shows it by project, model, session and time, with estimated cost and subscription limit tracking. A developer who uses Claude Code, Codex CLI or Gemini CLI heavily and wants to see the spend can install it.

Open-Source Desktop Go Wails Svelte +2 more
November 2026 — Ongoing

A formula sets Devrazzi's 0–100 score; the model only writes the explanation, behind a verification gate. The decision and how it was built.

What it does today

Collects release and vulnerability announcements across the software ecosystem into a single feed, gives every event an importance score from 0 to 100 and explains its impact in Turkish; it also tracks deprecation/EOL and RFC announcements. Useful to software engineers who want to see what changed in their stack without combing through hundreds of sources by hand every day.

Web Laravel PHP PostgreSQL +8 more
October 2026 — October 2026

Build notes on a dice-free 4X core of 480 hexes and at most 60 turns, offline in the browser: a constraint chose the scope, and it shipped as Regnarium.

What it does today

Runs a full 4X match on a 480-hex map in at most 60 turns; rules, map generation and the opponent AI live in one pure TypeScript core, and combat rolls no dice. Anyone with half an hour and an appetite for strategy can open it in a browser.

Web TypeScript Next.js React +2 more
September 2026 — September 2026

Search the site

Start typing to search posts, projects and pages.

Esc to close Powered by Pagefind