Hold a key. Speak.
The words are already typed.

Push-to-talk dictation for macOS that runs entirely on your Mac. Release the key and the text lands in whatever app you were already typing in — in about 200 milliseconds. It can also punctuate and structure what you said, and turn a narrated walkthrough into something an assistant can act on. Still no server, still nothing to pay.

Free forever · No account · macOS 15+ · Signed & notarized

Listening

Right ⌥ held — Kyanth listens from the menu bar

Measured, not claimed

Fast enough that you stop thinking about it

ggml-base.en on an M1 Max, key release to text on screen. Run bench.py against your own voice and check.

149 ms1-second utterance
208 ms3-second utterance
3.5%word error rate
0bytes leaving your Mac

How it works

Three keys, and nothing to learn

Kyanth lives in the menu bar. There is no window to switch to, no button to find, and nothing to copy and paste.

01

Hold your shortcut

Any key or chord, as many keys as you like. Modifier-only combinations work best — they cannot be typed, so binding one steals nothing from other apps. Add alternates and any of them starts a dictation.

02

Say what you mean

A pill appears showing your live input level, so a microphone that is hearing nothing looks obviously different from one that works.

03

Release

The text is pasted where your cursor already was, and your previous clipboard is put back exactly as it was.

Compare

The same job, without the subscription

Most dictation apps are a thin client over somebody else's speech API. That is the difference that matters, and it is not a feature list.

 KyanthCloud dictation
PriceFree, forever$10–15 / month
Account requiredNoneSign-up, email, billing
Works offlineAlwaysNo
Where your audio goesNowhereTheir servers
Source codePublicClosed

No competitor is named, because the point is structural rather than competitive: a hosted API cannot be private, and a local model cannot bill you monthly.

The app

Built like a Mac app, not a wrapper

Hand-drawn AppKit, both appearances — pin Kyanth to light or dark on its own without changing the whole machine — and a setup process that refuses to call itself finished until it has proof.

It always tells you what happened

Silence is the worst failure a dictation tool can have. Six states, six sentences — listening, transcribing, pasted, left on the clipboard, nothing heard, something went wrong.

The three bars are the meter. The centre carries your live level and the outer two replay it a few frames later, so a syllable travels outward.

It floats above other windows without ever taking focus. An overlay that stole focus would redirect your speech into itself.

Four states of the Kyanth overlay: Listening, Transcribing, Pasted into Mail, and Copied — press Command V.

Setup that verifies itself

Nine checks in three groups, re-evaluated every second — flip a switch in System Settings and the row turns without a relaunch.

The last check is the one that matters: Finish stays disabled until a real dictation has produced real text. Green permissions prove configuration, not function.

The Kyanth setup window: nine checks grouped under Permissions, Hardware and model, and Verification, with a progress ring.

Proof that it is hearing you

Modifiers are side-aware, so Right ⌥ is not Left ⌥, and chords commit when you let go rather than on the first key down.

A live indicator lights the moment Kyanth receives exactly your chord — the only way to tell a wrong shortcut from one another app swallowed first.

Kyanth Settings, Shortcut pane: activation mode, the bound chord, and live indicators for keys and audio arriving.

Everything you have said, searchable

Time, transcription, how long you spoke, where it landed and how long the model took — as columns, not one crushed string.

Search filters as you type. Click a row to expand it in place, with copy, paste-again and delete. Nothing truncates.

When Kyanth restructured something, history keeps both — what you said and what it wrote — and offers each for copying. The version you did not paste is the one you tend to come back for. Capture sessions land here too, with a count of the snapshots, recordings and pointer marks inside.

Stored as a plain .jsonl file you can read or delete at any time.

Kyanth Settings, History pane: a sortable table of past dictations with time, text, duration, destination app and latency, filtered by captured, pasted, clipboard or nothing heard.

Beyond dictation

It knows where the words are going

Three things that need context a transcript does not have: what is on your screen, what app the text is about to land in, and what you were pointing at while you spoke. All of it runs locally, all of it lives under one Intelligence pane in Settings, and all of it is off until you turn it on.

Names it has never heard, right the first time

Kyanth reads the window you are dictating into and hands the names it finds to the speech model before it decodes — the only moment a rare name can still beat the common word it sounds like.

Its own name was heard as “client”. A find-and-replace rule would have wrecked every sentence about an actual client; biasing the decoder does not, because it raises a term’s odds rather than forcing it.

Nothing is recorded, no image is written to disk, and the words are discarded after a single dictation. Password managers and the keychain are never read.

Kyanth Settings, Intelligence pane: smart formatting, output style, the elements it may build, and whether to review before pasting.

Punctuation, and structure when it earns it

A small model runs on your Mac to add the punctuation and capitalisation that speech recognition drops. Longer dictation can become headings, bullets and task lists — in the dialect the destination actually renders: Markdown for editors and chat, Slack’s own markup for Slack, none at all for Messages, Mail and terminals.

Restructuring reorders what you said, so by default Kyanth shows you both and lets you choose. It is checked against your own words first: anything that summarises, answers, or invents is thrown away and the plain transcript is pasted instead.

Kyanth showing the spoken text beside a structured Markdown version, with Paste verbatim and Paste structured buttons.

Talk while you show it

Start a session and the pill opens a row of tools. Take a screenshot, record the screen, a window or a region you drag out — the narration keeps running through all of it, so what you captured and what you said stay on one clock.

Change your mind mid-recording. Pick a different target and the recording is re-aimed rather than restarted: one continuous file that follows you from the whole screen to the window you are talking about. Take as many stills as you like while it runs.

Turn on Pointer and your cursor carries a halo. Hold the draw key and you can circle what you mean — the marks last exactly as long as you hold it and leave nothing behind. Kyanth’s own controls never appear in the shot; its annotations always do.

The Kyanth pill with its tools open: capture, a red stop button while a video records, an amber pointer, and finish. The Kyanth capture chooser: still and video targets for the screen, a window and a region, with the button reading Switch view because a recording is already running.

Finish, and hand over the package

Finish transcribes the narration with timecodes and attaches every capture to the sentence you were speaking when you took it. A screenshot on its own is a screenshot; the same image against “the spacing here feels cramped” is a bug report.

The package pastes as text with paths to the files, which is exactly what Claude Code and its neighbours read. The media never leaves the folder on your Mac.

The Kyanth package window: a frame from the recording, a waveform with a mark at each capture and pointer note, a row per capture with its own thumbnail and the sentence being spoken, and the exact text that will be pasted.

Privacy

Nothing leaves your Mac. Not by policy — by construction.

There is no server to trust, because there is no server. Every model runs on your own hardware — speech, formatting, and the text recognition that reads your screen.

No account

Nothing to sign up for. Download it and it works.

One download, then nothing

Day to day the only connection is to 127.0.0.1. Turning on smart formatting fetches its model once; after that it never reaches the network again.

No telemetry

No analytics, no crash reporting, no phone-home.

The microphone is released

The device opens on your first press and closes after 30 seconds idle, so the macOS recording indicator is not on while you work.

Your history is a file

Plain JSONL under Application Support, capped at 500 entries. Delete it whenever you like.

Signed and notarized

A Developer ID build that opens with no Gatekeeper warning and keeps its grants across updates.

Screen reading is opt-in

Off until you turn it on. What is read builds one term list for one dictation and is then discarded — never written to disk, never a password manager.

Captures are yours

Screenshots, video and transcript go to a folder on your Mac. Pasting a package sends the paths, not the files.

Try it on your own machine

Self-contained — Python, the speech model and the transcription engine all ship inside the app. No Homebrew, nothing to build. macOS 15 or later, Apple silicon.