Local first and OSS meeting transcriber and work log too "Merkwerk" A developer released merkwerk v0.0.1, an open-source, Rust-built macOS meeting transcriber and daily work log that runs entirely offline, storing audio, transcripts, notes and screen activity as plain JSON, Markdown and WAV files in ~/merkwerk. The tool transcribes locally with NVIDIA Parakeet TDT 0.6B v3 (25 languages) or whisper large-v3-turbo/large-v2, writes notes through a local LLM via Ollama or LM Studio, and makes only two kinds of network requests: a one-time model download from Hugging Face (Parakeet v3 at roughly 670 MB plus Silero VAD at 1 MB) and calls to the configured LLM endpoint, localhost by default. It requires macOS 14.6 or newer, ships an MCP server for clients such as Claude and Cursor, and installs via cargo install --git https://github.com/ArzelaAscoIi/merkwerk --tag v0.0.1. Your meetings and your workday, written down. Entirely on your Mac. Local transcription, meeting notes, a daily work log and an MCP server. In pure Rust. merkwerk is German for roughly "memory works": merken means to notice and remember, Werk is work. It listens to your calls, reads what you work on, and turns both into notes you can search, read, or hand to an AI assistant. It runs fully offline: no accounts, no subscription, no usage limits, no cloud. Important Only record people who agreed to it, and use merkwerk at your own risk. Read the disclaimer disclaimer before your first recording. - Audio, transcripts, notes and screen activity are plain files in ~/merkwerk . Nothing is uploaded anywhere. - Speech recognition runs locally Parakeet or whisper . Notes are written by a local LLM through Ollama default or LM Studio. - merkwerk makes exactly two kinds of network requests: the one-time model download from Hugging Face merkwerk model , and calls to the LLM endpoint you configure , which is localhost unless you change it. No telemetry, no analytics, no update checks. - If you point MERKWERK LLM URL at a hosted API, transcripts and activity text are sent there. That is your choice; the default never leaves your Mac. | Recording on your terms | Manual by default: when a call starts, merkwerk asks. Turn on auto-recording if you want every call captured, and opt out of any single call with one click. | | Always visible, never in the way | While recording, a small floating pill shows a breathing dot and the time on every desktop; hover it for the app and Stop , drag it wherever you like. The Dock icon carries a REC badge and the menu bar shows a timer. | | Call detection | Notices when Zoom, Meet, Teams, Slack, FaceTime or any other app starts using the microphone, without bots joining your call. | | Both sides of the call | Records your microphone as me and the system audio as them ; in a 1:1 with a calendar invite, them carries the other person's name. | | Local transcription | NVIDIA Parakeet TDT 0.6B v3 25 languages, punctuation, automatic language detection or whisper large-v3-turbo or large-v2 . Silero VAD filters silence so the models don't invent text. Live, in 30 second chunks. | | Meeting notes | Next steps with owners and dates first, then decisions and short topic sections, in English, from any OpenAI-compatible LLM. The calendar event names the meeting and its invitees. | | Ask | Chat with a meeting while it runs or afterwards: "What did I miss?", "My action items", answers cite timestamps. Works for a day's work log too. | | Screen activity | Reads the text of the window you are working in through macOS Accessibility: app, window title, URL, content. No screenshots, no OCR. | | Daily work log | Every night, the day becomes a log grouped by project, with tickets, PRs, documents, meetings and open threads. Days missed while merkwerk was closed are written on the next start. | | MCP server | Ask Claude, Cursor or any MCP client about your meetings and your work. | | Notes window | Meetings and Activity in separate tabs, search, tags, rename and delete, a Start/Stop recording button, and the raw transcript or window sessions one click away. | | Raw files | Everything is JSON, Markdown and WAV in a folder you own. Grep it, back it up, delete it. | Requirements: macOS 14.6 or newer, Apple Silicon recommended, the Rust toolchain https://rustup.rs , and Ollama or LM Studio for notes optional; any OpenAI-compatible endpoint works . cargo install --git https://github.com/ArzelaAscoIi/merkwerk --tag v0.0.1 merkwerk model one-time download: Parakeet v3 ~670 MB + Silero VAD 1 MB ollama pull gemma4 the default notes model merkwerk install writes ~/Applications/merkwerk.app open -a merkwerk opens the notes window and starts watching To build the latest main instead, clone the repository and run cargo install --path . . See releases https://github.com/ArzelaAscoIi/merkwerk/releases for what changed. With LM Studio, start its local server on port 1234 from the Developer tab or with lms server start , and load a model. Run it as merkwerk.app , not from a terminal: macOS asks for system audio on behalf of the app that started merkwerk, and terminals like Ghostty or Terminal can't get that permission, so the other side of a call would record as silence. After every update, run merkwerk install again and restart the app. The app logs to ~/merkwerk/merkwerk.log . Environment variables from your shell don't reach the app; use settings.json see Configuration configuration . On first use macOS asks merkwerk.app for these permissions: | Permission | Why | |---|---| | Microphone | your side of the call | | System Audio Recording | the other side of the call System Settings Privacy & Security Screen & System Audio Recording | | Accessibility | reading window text for the work log | | Calendars | naming meetings and their participants | merkwerk install signs the app with a self-signed certificate it creates in your login keychain the first time "merkwerk local signing"; macOS may ask once for your keychain password . Because the signature stays the same, these permissions survive reinstalls. If the menu or the notes window says screen activity is paused, Accessibility is missing: the warning opens the right Settings page. Recording modes - Manual default . When another app starts using the microphone, the pill shows Call Zoom Record Ignore and the Dock icon bounces once. Nothing is recorded until you click Record . You can also start a recording anytime with Start recording in the notes window or the menu ⌘R , for example for a conversation in person. - Auto-record. Enable Auto-record calls in the Dock or menu bar menu. Every detected call is recorded; hover the pill and click Stop to opt out of that call. The choice is saved in ~/merkwerk/settings.json . A recording of a call ends 15 seconds after the app releases the microphone. Notes are written in the background the meeting shows "Writing notes…" until they are done , so a back-to-back call is still caught. A recording in which nobody said anything is deleted. Models Pick both models from the Dock or menu bar menu, no restart needed: - Speech model : Parakeet v3 fastest, 25 languages or Whisper large-v3-turbo / large-v2 99 languages; v2 is slower but often more accurate . A model you have not used yet is downloaded in the background when you pick it; the next recording uses it. - Notes server : Ollama or LM Studio; the choice is saved in ~/merkwerk/settings.json . - Notes model : any model the selected server offers, e.g. gemma4:26b for more careful notes. Choices are saved in ~/merkwerk/settings.json ; the environment variables below override them. Reading The notes window opens at launch and with a click on the Dock icon. The Meetings tab lists meetings by day, the Activity tab the daily work logs, with today's activity visible while it is recorded. The raw transcript or the raw window sessions of a work log sits behind the toggle. Click a title to rename a meeting, + to tag it, the trash icon to move it to the Trash. Keys: ↑ ↓ move, t toggles the raw view, / searches. Asking Under every meeting and every work log is a chat: type a question or pick one of the suggestions. During a call it reads the transcript up to that moment, so "What did I miss?" works when you join late or drift off. Follow-up questions keep the context. Press a to jump to it. Footprint merkwerk is meant to run all day. Measured on an M4 Pro: about 0.2% of one CPU core and 55 MB memory while idle with the notes window open; the speech model about 0.5 to 0.75 GB is loaded only while a recording is transcribed and released afterwards. Screen capture skips its work while you are not typing or clicking, and closing the notes window ends its WebKit process. Command line merkwerk watch notes window, call detection, screen activity default merkwerk record title record now from the terminal, Enter to stop merkwerk list list meetings merkwerk show