Andy Jarrett // Code. Develop. Create.

Notes4Me: Your Local-Only Meeting Notetaker for macOS

Offline Python PWA Screenshot
Photo by Kelly Sikkema on Unsplash

Cloud transcription services are everywhere these days – convenient but risky if you’re handling sensitive conversations or business strategy. That’s why I’ve built Notes4Me, a macOS app that lets you record, transcribe and summarise meetings on your own device, with no data sent to the cloud.

TL;DR: Jump straight into the project at github.com/andyj/Notes4Me

What’s the problem?

You finish a meeting and someone has to pull together the key points, action items and next steps. Sometimes the note-taker missed something, sometimes the summary goes into an email thread and gets forgotten. Add in the privacy issue: using cloud services means you’re trusting someone else’s infrastructure with your internal discussions. For my work (secure systems, manufacturing traceability, compliance) that felt like an unnecessary risk.

What does Notes4Me do?

  • Records system audio (Zoom, Teams etc) via a virtual audio device on Mac.
  • Transcribes audio locally using whisper.cpp – no API calls going off-site.
  • Produces a structured summary: key takeaways, decisions, tasks with ownership. All locally.
  • Runs from the menu bar: simple start/stop, minimal distraction.
  • Saves everything locally: WAV files, markdown transcripts and summary notes in a folder you control. No vendor lock-in.

Why it matters if you value privacy and simplicity

Privacy-first: Everything stays on your machine. If you’re talking about trade secrets, product plans or compliance-sensitive stuff, this gives you full control.

Cost-effective: No subscriptions, no per-minute fees. Once you’ve got the hardware you’re good.

Zero cloud dependency: If your internet’s down or your cloud provider has issues, you stay productive.

Open to you: Because you (and your team) can inspect or tweak the code, you’re not at the mercy of a closed vendor.

A quick glance at the tech

Since you work in Node.js, Electron, Express and MariaDB, you might appreciate how the stack has been assembled:

  • Electron handles the UI and menu bar behaviour.
  • Audio capture using system tools and a virtual device on macOS.
  • Transcription via whisper.cpp (an open-source project).
  • Summarisation via a local LLM service (e.g., Ollama).
  • No cloud APIs, minimal dependencies.
  • Storage: local filesystem, markdown format for easy downstream use.

How you use it

  1. Clone the repo (for example: git clone https://github.com/andyj/Notes4Me.git).
  2. Install dependencies (npm install).
  3. Set up audio capture (install the virtual device, configure system output).
  4. Start the app from the menu bar, press “Start Recording”, attend/host your meeting, then press “Stop”.
  5. Open your folder of saved files: audio + full transcript + markdown summary.

Who it helps

Teams where meeting notes matter and actions get lost.

Any meetings that cover sensitive topics (IP, strategy, compliance) where cloud-uploading feels wrong.

Solo professionals who want control over their data and don’t want another subscription.

Developers and technical teams who want transparency in tooling and prefer open systems.

What’s next

• Add speaker recognition (so you see who said what).
• Porting to Windows/Linux (currently Mac only).
• Export options (PDF or DOCX files, as well as markdown).
• UI improvements and more customisation (themes/settings).
• Maybe a packaged version for non-technical users, still local-first.

Why I built this

Because I believe in working smart and staying in control. I want my meetings to generate value, not chaos. I want my data to stay on premises, not floating in someone else’s service. Notes4Me is a tool to help teams spend less time chasing meeting minutes and more time doing the work that matters, without giving away their data.

I’m here, learning and working away. If you liked this content and want to keep me going, consider buying me a coffee. Your support keeps this site running and the coffee brewing! ☕️