settling the plate
move your cursor — the plate is listening
Sand on a humming plate: it runs from the sound and settles where the plate is still. Switch your microphone on and talk to it — the pattern rearranges as you speak, and nothing is recorded. Called a Chladni figure, 1787.
00:01what it actually does
Hold the key, say the sentence, let go. Watch the overlay: the recogniser hears cuber netties, because that is what it sounds like. The dictionary knows what you meant. What lands in the document is already right — you never see the wrong version, and you never go back to fix it.
A rebuild of the overlay in the browser, drawn to the same numbers as the application and running at the same timings — not a screen recording. The window is TextEdit because the point is that it could be anything: the text goes wherever the cursor already is, in Slack, in Mail, in a terminal.
00:04about the name
It is named after the problem. Recognisers mishear — constantly, and worst of all on the words that matter most: people, products, the jargon your team invented last Tuesday. Everything in this app exists to close that gap.
00:38why this exists
There is a neural engine in your Mac. Right now it is doing nothing while you upload your voice to a rented computer to do a job it could have done.
Dictation became a subscription. Meeting notes became a service with a seat price, a retention policy and a terms-of-service page that can be edited after you agreed to it. None of that was ever a technical requirement — it was a business model wearing the costume of one.
Every Apple silicon Mac Apple has sold — every M1 through every M5, in every trim — carries a sixteen-core Neural Engine; the Ultra chips carry thirty-two. The speech models are already on your disk, put there by macOS. The only thing missing was an application willing to use them and stop.
So: no account. No server. No subscription. Nothing to sign in to, nothing to cancel, and nothing to leak.
01:20the security case
A cloud dictation service is, structurally, a company holding your voice. Not because anyone there is careless — because that is what the architecture requires. Audio has to reach a server to be transcribed, and once it is there it is on a disk, in a backup, in a subprocessor's region, and subject to whatever the terms say next year. Every one of those is a place it can leak from. None of them exist here.
of breaches now involve a third party — a 60% rise in one year, and the first time supply chain has been the story rather than a footnote. A transcription vendor is a third party.
Verizon DBIR 2026 →average cost of a breach in 2026. The one in four that were AI-enabled averaged six million, and grew 56% year on year.
IBM Cost of a Data Breach 2026 →meetings processed by a single note-taking service since 2016, across roughly 25 million users. A 2025 class action alleges it recorded participants who never agreed to it and used the audio to train its models. The claims are untested.
NPR, August 2025 →of clean recorded speech is enough to clone a voice convincingly. A meeting archive is not just a record of what was said — it is a corpus of everyone who was in the room.
Microsoft Research, VALL-E →Even Apple got this wrong. Siri
recordings were reviewed by human contractors; Apple settled for $95 million in 2025,
covering devices sold over a decade, without admitting wrongdoing. That is the relevant
lesson, and it is why this app binds to SystemLanguageModel and never to
PrivateCloudComputeLanguageModel — the one that would send your words to Apple's
servers. The guarantee is in the type it is compiled against, not in a setting somebody can
change later.
That is the point of publishing the source under a licence that keeps it published. Every line below is something you can check in an afternoon, and the reason it is worth checking is that a claim nobody can verify is just advertising.
URLSession, no socket and no subprocess
anywhere in the source. The application cannot make a network request, because there
is no code in it that makes one.02:35what it heard, what it writes
Flip the switch. One side is what a recogniser hands you; the other is what huh? writes instead.
A word the recogniser did not know arrives here with the sentence it appeared in. Answer it and the answer is kept — a term goes to the dictionary, a name goes to People where nothing will revise it later, and a rejection is recorded too. Every outcome is written down, so the same word is never put in front of you twice.
Rebuilt from the proposal rows in the application. “It's a name” files it under People instead, where a settled spelling is never revised by a later pass.
03:30the long form
Record a meeting and it transcribes the whole thing on the same silicon — timestamps, speakers, and a summary you can actually use. Nothing is uploaded, because there is nowhere to upload it to.
So where did we land on the migration?
Can we push it to next sprint?
I'd rather not — the schema change blocks two other things.
Fine. I'll take the migration, you take the rollback.
Agreed. Written up before Thursday.
And nobody touches production on a Friday.
04:10when the meeting is too long
Apple's on-device model reads about two thousand words at a time. An hour-long meeting is five times that, so summarising it means reading in pieces and stitching the notes together — which loses something at every join. Rather than do that quietly, the app says so, and offers a model big enough to read the whole thing in one pass. Qwen3 4B, 2.5 GB, downloaded once, then offline forever. It is the one moment the app asks you to decide anything.
Rebuilt from the card the application actually shows, with its own wording and numbers. The download figure is real: 2.5 GB, once, and never again.
04:58recordings and names
Drop in a file — roughly forty times realtime on Apple silicon. Back come timecoded segments you can click to seek the original. Search returns the moment, not the file.
Afterwards it reads the whole transcript again, in passages, hunting for names it doesn't know. Point at one: Ada Okonkwo is what it writes now, because you told it once.
Names live apart from the dictionary — a name settles once and shouldn't move again. Every answer is remembered. A word you have already ruled on is never raised again.
05:44under the hood
Audio never touches the disk. The dictionary enters the pipeline twice, at two different strengths, because a hint and a guarantee are not the same thing.
NSSpellChecker and
NLTagger find candidates locally; only passages containing unknowns
reach a model at all.~/Library/Application Support/Huh — pretty-printed,
sorted keys, watched for external edits. Edit it in a text editor if you like.07:10where your words go
Most apps say "private" and stop. This is the entire list — including the one path that leaves, which happens only because you asked it to.
08:02install
No Xcode. No build. Nothing to compile.
Use it, read it, change it, and share what you change — on as many machines as you like, for as long as you like.
The licence carries one obligation, and it runs in your favour: anyone who distributes a modified version has to keep it free software too, with its source. Nobody can take this closed.
09:31find me
Bugs, questions, or permission to fork it into something of your own — all of it reaches the same inbox.
There is one person here. No team, no support desk, no ticket number. A reply might take a day or two, and it will be from me.