Inkwell
Local dictation and meeting notes for the Mac and Windows. Free, open source, no account.
Inkwell does two jobs. Dictation: hold a key, speak, let go, and the text lands in the app you
were typing in. Meeting notes: your microphone and the other side of the call are recorded as
two streams, transcribed while you talk and again when the meeting ends, and kept in a library you
can search. Speech recognition runs on your own machine.
Inkwell 1.0 is a native app on each platform over one Rust core:
- Mac: macOS 26 or later, Apple silicon. SwiftUI and AppKit.
- Windows: Windows 11 24H2 or later, x64. WinUI 3.
It is MIT licensed, with no paid tier, no licence keys, no account and no telemetry of its own.
Inkwell 0.2, the earlier Tauri app, is kept on the legacy/0.2
branch. Intel Macs and Linux get no 1.0: Inkwell 0.2 is their last version.
What it does
Dictation
- Push to talk, anywhere. The dictation key can be a modifier (or Fn on the Mac) held on its
own, a function key, or modifiers and one key. A left-hand modifier waits a moment before
dictation starts, so its shortcuts keep working. Recording a shortcut in
Settings > Dictation checks it on the spot and says why when a key can't be used.
- Live words while you speak, shown in the Drop, the small recording light. They are
provisional; the text that is typed comes from the final pass when you let go.
- The 300 ms before you press are kept while the mic is open (it closes after a minute
without a take), so the first word isn't clipped. A hold that never ends (a lost key release)
is stopped after 180 seconds and processed, never thrown away.
- Voice editing. Select text, hold the edit key, say what to change, and the rewrite replaces
the selection. It needs a language model (below).
- Styles, cleanup, snippets and voice commands. Formal, Casual or Relaxed casing and
punctuation; filler words and stutters removed; trigger phrases that expand to text; spoken
commands. Each is edited in Settings.
- Polish (optional, off until you agree). A language model tidies grammar and false starts.
When its answer adds to what you said, or carries out a dictated instruction instead of writing
it down, the dictation goes in as said, with a warning.
Meetings
- Both sides, as two streams. Your microphone is you; the other side is captured from the
meeting app (on the Mac, a process tap of that app, else of everything the Mac plays except
Inkwell; on Windows, process loopback for Zoom and the browsers, else the output device the app
plays to). Echo cancellation runs on the mic only, and only when there is an echo to cancel.
- A live transcript, then a final pass. At the end the meeting is transcribed again with the
more accurate model, and the final pass replaces the live one in one step. It is refused if it
comes back empty or with fewer than half the words on either side.
- Who said what on the far end. The diarizer labels the far end's speakers when there are at
least two; you can name or rename them in the record.
- Summary and commitments, when a language model is available: the summary keeps a citation
to the line each decision and action came from, and each promise names who it is owed to.
- Recording is your decision. When an app has held the microphone for three seconds, Inkwell
follows that app's choice: Ask (offer to record), Always or Never, set from the Drop
or Settings > Meetings. Ask is the default. The first time Always records a call, the Drop
reminds you to tell the others. For the first minute of a meeting, Stop and delete ends it
and deletes it as if it had never been made.
- Notes while you talk on the Live screen, beside the transcript, and a global shortcut to
start and stop a meeting, set in Settings.
- Crash recovery. Audio is written to disk as it is recorded. After a crash, the meeting is
repaired and finished from what is on disk.
- Calendar (Mac). With calendar access, Today shows your next meeting, and a meeting is named
after its calendar event and who was in it. The calendar is not available in Inkwell 1.0 for
Windows: meetings there are named by the app they were in.
The Library, search and Ask
- The Library lists every dictation and meeting, newest first, filtered by kind or searched
through everything that was said.
- A record opens with your notes beside the transcript, the summary, and what is owed, with a
player for both sides on one timeline. Every timestamp and line plays from its moment.
- Ask, during a meeting: type a question about what has been said so far and a language model
answers from the transcript. The far end's questions to you are stacked above it.
- Retention. Keep everything (the default), or delete meetings and dictations older than 7,
30, 90 or 365 days. A delete overwrites the text in the database and removes the audio.
This is the beginning of the README. Read the rest at the original. Read the full README ↗