⌨️ Global Dictation
Press ⌘⌥] in any app, speak, and the transcript is typed straight at your cursor. Terminal, browser, Slack — anything. A Spotlight-style pill shows what's happening.
Talk. Get clean markdown. 100% local.
A macOS menu-bar app that turns your voice into structured markdown with whisper.cpp and any local LLM — plus an iPhone & iPad app that runs 100% offline on Apple Intelligence. No cloud. No API keys. Nothing leaves your devices.
↑ You ramble, whisper.cpp transcribes, your local LLM structures it — live, on your Mac.
Everything in this part is the Mac menu-bar app: it uses whisper.cpp and a local LLM server you run yourself.
One line. The script installs the build dependencies with Homebrew, builds the app from source, and drops it in /Applications.
xcodegen, whisper-cpp and ffmpeg via Homebrew, then builds the app.One hotkey for everywhere, one window for deep work.
Press ⌘⌥] in any app, speak, and the transcript is typed straight at your cursor. Terminal, browser, Slack — anything. A Spotlight-style pill shows what's happening.
Speak freely; a local LLM streams your words into a clean, structured document in real time — Markdown, plain text, or HTML. The raw transcript stays one click away. Start it from the menu bar.
One floating, draggable capsule drives the whole session — and decides how your voice lands in the document.
Send · mic · status · Format / Edit / Append · output format · preview · read aloud · clear.
Flush immediately: transcribe what you just said and send it to the LLM now, instead of waiting for the word threshold or a pause. Enabled while recording and no call is in flight.
Start, pause, resume. The label tells you what's happening — Recording, Processing, Paused — with errors surfaced inline.
Whole document + new words go to the LLM; it returns the complete restructured document. Best for free-form dictation — the model keeps improving the structure as you talk.
Your voice becomes an instruction: “change the subtitle to Weekly Notes”, “turn that list into a table”. Select text in the editor first and the edit focuses on it.
Speed mode for long documents: only the last 3 sentences + your new words are sent; the model returns just the new content, appended. Latency stays flat as the file grows.
A dropdown picks what comes out: Markdown (default), plain text, or HTML. Each format ships its own rules + example to the LLM, works in every mode, and the file on disk gets the matching extension. Remembered across launches.
Opens the session document in the default app for its type — the browser for HTML, your editor for markdown or plain text.
Sends your current selection — or the whole document if nothing's selected — to macOS's built-in text-to-speech. Tap again to stop mid-sentence.
Wipes the recorded audio, transcript, and markdown for the current session after a confirmation prompt, leaving you with a blank document.
.md / .txt / .html) is updated after every flush.Two buttons live in the Agent Mode window's own title bar, separate from the floating capsule — for starting fresh and getting back to where you left off.
Starts a brand-new session without closing the window. Whatever you were working on is already saved to disk — this just clears the editor for a fresh document.
Lists recent sessions by date with a short preview and their output format. Click one to restore it and keep recording straight into the same files.
Mac app only — the iOS app needs none of this. Global Dictation only needs whisper.cpp — installed for you. Agent Mode talks to a local LLM server running on your Mac (default http://127.0.0.1:8000/v1) that speaks the OpenAI request format — that's an API shape many local-LLM tools share, not a connection to OpenAI the company; nothing is sent to OpenAI. Pick one:
brew install xcodegen whisper-cpp ffmpeg # build dependencies (install.sh does this)
http://127.0.0.1:8000/v1
brew install omlx then omlx serve <model> — Speech-to-Markdown's default port, zero config.
http://127.0.0.1:11434/v1
ollama pull qwen3.5 (or gemma3), then ollama serve.
http://127.0.0.1:1234/v1
Grab a model in the app, start the local server.
http://127.0.0.1:8080/v1
llama-server -m model.gguf --port 8080.
| Recommended model | Why |
|---|---|
| Qwen3.5 27B (4-bit) | Best formatting quality; the default pick |
| Gemma 26B (8-bit) | Fast, great instruction following |
Speaks the OpenAI API format (omlx, llama.cpp, LM Studio…) — not OpenAI itself
Speech-to-text (whisper.cpp, runs on-device)
A separate app for iPhone & iPad — fully offline, none of the desktop dependencies.
iOS 26+ · iPhone 15 Pro or newer (Apple Intelligence required) · 100% offline. The same Agent Mode with zero dependencies: SpeechAnalyzer transcribes on-device, Apple Intelligence (Foundation Models) formats the document. No third-party AI service is used — no LLM server, no whisper install, no settings, no network request of any kind. Works in airplane mode.
Session history with restore · live editor · Format / Edit / Append · MD / TXT / HTML · preview · Files-app access.