gene

laud

2026Swift · macOSactive

Press a chord, speak, press it again: the words land in the field you were in. One session at a time, pinned to the field it started on. Recognition and the cleanup pass both run on the Mac.

Dictation on macOS puts text wherever the system thinks focus is, which is not always where you were looking. laud captures one text field the moment you press the chord and pins the session to it: everything you say, and every confirmation you press or speak, lands there and nowhere else. It is not a voice assistant — no background listening, no wake word, nothing talks back. Built as a companion to dwell, works without it.

how it works

Hotkeys are Carbon RegisterEventHotKey, never an event tap, so laud has no mechanism for observing your typing — only the chords it registered. At commit it brings the captured app forward and waits until that app actually owns the front before posting a keystroke; if the app never comes forward, the transcript goes to the log instead of into whatever happens to be there. Synthetic events carry cleared modifier flags, because the activation chord is usually still held and a stray shift turns Return into a line break.

Recognition is on-device: SpeechAnalyzer on macOS 26 for real punctuation, SFSpeechRecognizer below it. One cleanup pass runs at commit — Apple’s on-device model by default, the Anthropic API as an explicit opt-in — fixing capitalization and dropping filler while keeping the speaker’s words. An answer that comes back empty, truncated, or nothing like a cleanup of what was said is refused and the raw transcript used instead. Prewarming the on-device model while you are still speaking took a measured commit from about 3.1s to 370ms.

running it

./dev.sh install
laud

Three grants at startup, in order: Accessibility, Microphone, Speech Recognition. laud check reports which are held and what to do about the rest.

status

Working and in daily use. macOS 13 builds and runs; macOS 26 is where the current recognizer and the on-device cleanup live. Configuration is a TOML file whose annotated reference is generated from the binary, so laud defaults and laud check cannot drift from the code.