Sayline

Sayline

The Most Productive Way to Type in 2026

55 followers

Sayline is a native macOS app that brings private, local voice dictation to any text field. Use global hotkeys to replace typing in Gmail, Slack, VS Code, or Notes. It runs entirely on-device (using NVIDIA Parakeet and MLX), so you can fix grammar, translate, or format text instantly without your audio ever leaving your Mac. Stop worrying about cloud privacy. Just SAY the LINE and watch it appear. Pure magic.
Sayline gallery image
Sayline gallery image
Sayline gallery image
Free Options
Launch Team / Built With
Wispr Flow: Dictation That Works Everywhere
Wispr Flow: Dictation That Works Everywhere
Stop typing. Start speaking. 4x faster.
Promoted

What do you think? …

MartinMakes
Maker
📌
Hey Product Hunt! 👋 I built Sayline because I was tired of how awful the default system dictation is, and I didn't want to pay a monthly subscription for cloud tools just to type with my voice. Sayline is a native macOS app that runs 100% locally. It uses NVIDIA’s Parakeet models (on M-series Macs) for transcription and runs Qwen 3.0 via MLX to handle things like grammar correction or formatting. For Intel Mac users, I included local Whisper models, so they are not left behind! :) Because it’s local, your audio never leaves your device. And because I hate subscriptions, it’s a one-time purchase. I'm around all day to answer questions about the stack (SwiftUI + FluidAudio + MLX). Let me know what you think!
Kirill Ilichev

I love the simplicity of the design - looks really good!

MartinMakes

@ilichev Thank you Kirill! I myself love simple and polished apps, so I only build clean and simple UIs, that aren't bloated or simply don't look good :))
Would you use Sayline in your day-to-day work?

Anton Ponikarovskii

@ilichev 100% agree on that, UI/UIX should not has any frictions, and Sayline doing it great!

MartinMakes
Ryan Thill
💡 Bright idea

Global hotkey dictation into any text field gets tricky at scale on latency and battery, plus edge cases like secure input fields and flaky accessibility focus.

Best practice is streaming VAD + partial hypotheses with a small audio ring buffer, aggressive quantization on MLX, and strict redaction plus disablement for password and secure fields.

How are you handling per-app permissions and focus capture on macOS, and is speaker diarization or custom vocabulary boosting on the roadmap?

MartinMakes

@ryan_thill Hey Ryan, thanks for the (very domain-specific & technical) questions!

To your MLX architecture question: I am using MLX with 4-bit quantized models (specifically Qwen derivatives) for the local LLM transformations to keep the footprint light.

I don't currently have a dedicated low-power VAD gate before the ASR model (I rely on the ASR engine's silence handling), so that's a great callout for battery optimization on our roadmap!

To your focus security question: Right now, I use standard Accessibility APIs to detect the focused element and generic system clipoard injection (simulated Cmd+V) to ensure compatibility across Electron apps and native inputs. The app doesn't currently block dictation in secure/password fields (I trust the user not to invoke it there :), but adding secure input detection to auto-disable is a fantastic suggestion I'll prioritize in the next release!

To your roadmap question: Speaker diarization isn't in the immediate next release, but custom vocabulary boosting is definitely planned to be improved, as it's crucial for technical jargon handling. Right now, the user can set up simple word replacements (for the Parakeet models), which uses just a simple regex. When using any of the Whisper models, the user can use the "Word Boosting" feature, which utilizes the whisper.cpp's "initial_prompt" parameter, which works quite reliably (and delivers a good outcome quality). Unfortunately, Parakeet (nor FluidAudio, which I use for the local inference) doesn't support anything similar natively.

Right now, the main focus is to enable text streaming, which is going to be the largest technical hurdle, and I also want to improve the word replacements functionality to use a smarter and efficient algorithm. I've already experimented with using fuzzy search and double metaphone, but the results never satisfied me enough. Either the output quality wasn't there, or it increased the latency (with more custom words + longer transcript), which is also something I'm trying to avoid as I want the app to feel snappy.

Thanks for the technical deep dive, I always appreciate feedback from someone who knows the domain!

Daniele Packard

Super cool! Do you see history of what you've dictated?

MartinMakes

@daniele_packard Hey Daniele, thank you for the comment! Yes, you can see your dictation/transcription history in the "History" tab. From there you can easily copy the text to clipboard to reuse it elsewhere!

Would you personally use Sayline? What would be the number one feature you'd require in order to pay $24.99 one-time for it?