I use Claude Code for most of my development now. A lot of the communication around it happens in Telegram. Code reviews, quick questions, longer explanations. I type all of it on my phone.
At some point I started noticing how much time I spend on that. Long messages, detailed replies, things that would take 30 seconds to say and three minutes to type.
iOS has built-in dictation. In Telegram it cuts off mid-sentence, drops names, and resets without warning. I stopped using it.
I looked at other voice apps. Most of them are recorder-and-paste workflows, or Mac-first tools with an iOS afterthought. None of them put a mic button in the Telegram compose field, which is the only thing I actually wanted.
What I built instead
I ended up building Diction. It's an iOS keyboard extension. You switch to it in any app, tap the mic in whatever text field you're in, speak, and the text appears there. No switching apps. No recording and pasting. Works in Telegram, WhatsApp, iMessage, anything that accepts a keyboard.
It has three modes: on-device (runs on your iPhone, no network, fully offline), cloud (Diction One, a hosted service, higher accuracy, zero setup), or self-hosted (your own server, your audio never leaves your infrastructure).
Setting it up self-hosted with Claude Code
The server is open source and runs on Docker Compose. I pointed Claude Code at the repo and told it to set it up on my home machine. It read the config, set the environment variables, wired the ports. The setup itself took about ten minutes. The first run downloads the transcription models, which takes a bit longer depending on your connection speed.
In the app you point it at your server's address and it connects. Every transcription goes to your machine.
The repo is here: github.com/omachala/diction
What changed
I dictate most of my Telegram messages now. Long ones I used to shorten because typing felt slow. The quality of what I actually send improved, because the friction is gone.
WhatsApp works the same way. Any app that takes keyboard input works.
Top comments (0)