The problem
Meetily already kept my notes private. I kept forgetting to press record.
Meetily is a good open-source meeting recorder: it captures, transcribes and summarises on your own machine, with nothing sent to a vendor’s cloud.
Credit where it’s due: Yoda is a fork of Meetily by Zackriya Solutions (MIT license). The interface, audio capture and summary engine are theirs. This page is about what I changed: 29 commits and a new calendar integration.
Using it every day, three things got in the way. Transcription and AI models ran on my laptop during calls, eating battery. I had to remember to press record, and to stop. And every file was called something like recording_20260826_1403.
My goal was a recorder I never have to think about. It should notice a meeting, record it, stop when it’s over, and file it under the right name, while keeping the privacy promise: nothing goes to a third-party cloud by default.
Silence is cheap to keep. A truncated meeting cannot be recovered.The rule behind the auto-stop timing, from a code comment
Who it’s for
Built for me, and people with a lot of calls.
Primary
Someone in back-to-back calls
Moving between Google Meet, Zoom, Teams and Slack huddles, across several browsers, all day.
Wider
Privacy-minded people with a home server
Who want automatic meeting notes without sending audio to Otter or Fireflies, and without slowing their laptop.
InferredPlatform
macOS
Everything I added relies on Mac system features: audio taps, window titles, the menu bar and Apple’s calendar.
Not yet
Anyone else
It’s a personal fork. No public build, no installer.
Use cases
What it does on its own.
Back-to-back callsNo clicking
A “Meet – abc-defg-hij” window plus active audio starts a 10-second countdown in the menu bar, then recording begins. When the call ends, it counts down two minutes and stops.
Named after the meetingAutomatic
The recording is called “Weekly product sync”, matched to the calendar by meeting code. If two events overlap, it records the ambiguity instead of guessing.
Long quiet stretchesMid-meeting
After two minutes of silence the file pauses, and resumes the moment someone talks, keeping the last couple of seconds so the first words aren’t cut off.
Broken audio, caughtThe silent failure
Without the right macOS permission, system audio records pure silence with no error. Yoda notices when other apps are clearly playing sound and warns you.
A battery that lastsOn the laptop
The laptop only records. Transcription and summaries are designed to run on a separate home machine.
The product
Most of it happens in the background.
Most of my work lives in the menu bar and in the rules that decide when to start and stop.
Recording settings: Meetily’s options at the top, my automation toggles below.Two signals
Audio activity catches apps it doesn’t know. Window titles catch a meeting you’ve joined before anyone has spoken. A title alone is enough; an open app alone needs backing up.
Any browser
A window called “Meet – abc-defg-hij” is a meeting whichever app draws it. An allow-list of browsers had broken Dia and Comet.
Start fast, stop slowly
Ten seconds to start, two minutes to stop, 45 seconds once the calendar says the meeting should be over.
Only stop what it started
Auto-stop never touches a recording you started by hand.
AI naming and tags
A model suggests a title and tags, reusing tags you already have. It never overwrites a title you set. Built and tested, not yet switched on.
Calendar through the Mac
Reads Apple’s calendar directly. No Google or Microsoft login, and nothing leaves the Mac to fetch it.
A finished meeting: transcript and summary. This screen is Meetily’s design, shown with fictional content.How it works
The laptop records, and a machine at home does the AI work.
I removed about 12,800 lines of on-laptop model code and added a detection layer in front of the recorder.
1 · Notice
Every 2 seconds
Which apps use the mic and speakers? Any meeting windows? What’s on the calendar?
2 · Decide
Menu bar
Confirm after 3 checks to start, 10 to end. A countdown you can cancel.
3 · Capture
Recorder
Mic and system audio, saved locally. Pauses in silence, warns if audio is silently empty.
4 · Describe
Context file
Platform, meeting code and matched calendar event, saved next to the audio.
5 · Understand
Home machine
Transcribe, summarise, suggest a title and tags. (Designed; not in this repo yet.)
Tauri 2 (Rust)Next.jsCore Audio tapsSilero voice detectionSQLiteApple EventKitOllama or a hosted model
Product decisions
The main decisions, mostly about things failing quietly.
Move the heavy AI off the laptop
WhyRunning speech and language models during calls cost battery and attention. The laptop now only records; a home machine does the thinking.
Trade-offYou need a second machine, and until that pipeline ships, transcripts don’t appear on their own.
Start fast, stop slowly
WhyMissing the start of a meeting is annoying. Cutting off the end is unrecoverable. I tuned the stop wait from 8 seconds to 30 to two minutes in a single morning of real use.
Trade-offUp to two minutes of silence at the end of a file.
Catch the failures macOS doesn’t report
WhyMissing permissions don’t raise errors: audio comes back as silence and window titles come back blank. Yoda checks for evidence instead of trusting the logs.
Trade-offMore detection code, and occasional false alarms.
Draw a privacy line around the context file
WhyThe context file travels with the audio to the transcription machine, so it keeps only meeting windows, never other document titles.
Trade-offLess context for the AI naming step.
Record ambiguity instead of guessing
WhyWhen two calendar events overlap, both are saved as candidates rather than picking one silently.
Trade-offA human sometimes has to choose.
Tags without fuzzy matching
WhyPlurals merge (“retros” becomes “retro”), but near-spellings don’t, because “q3-plan” and “q4-plan” differ by one character.
Trade-offSome real duplicates survive.
Where it stands
Recording is automatic now. Transcripts on the home machine are next.
Built
- Removed the old backend and on-laptop models
- Meeting detection across apps and any browser
- Auto-record, auto-stop and auto-pause
- Warnings for silent audio and missing permissions
- Meeting codes read from window titles
- AI naming and tagging module, with tests
In progress
- Calendar integration: event names, calendar-aware stop timing, upcoming-meeting suggestions
- Switching on the AI naming step
Next
- Sending recordings to the home machine for transcription
- A menu-bar recording of the countdown for this page
29
commits of my own on top of Meetily
−43k
lines removed from the original
156
unit tests in the modules I wrote
- 5 Jun 2026Meetily v0.4.0, my starting point
- 18 AugForked and renamed; removed the old Python backend
- 25 AugOn-laptop models removed; meeting detection added
- 26 Aug13 commits in a day: auto-record, auto-stop, auto-pause, silent-failure checks
- 3 SepAI naming and tagging module
- 22 SepCalendar integration, in progress
What I learned
What I took away.
- Most of my work on the fork was deleting things, so the rest could be simpler.
- Automation is mostly edge cases. On the busiest day, every commit message read like a bug report from my own calendar.
- The “start fast, stop slowly” rule came from using it. A late start costs a few seconds, but a cut-off ending can’t be fixed.
Next in the lab
PrivatePDF
Compress and merge PDFs without uploading them anywhere. All the work happens in your browser tab, and once it has loaded it keeps working with the Wi-Fi off.