Built for real typing workflows
-
Native SwiftUI, privacy-first architecture, and a Typeless-style push-to-talk experience.
+
Native SwiftUI, on-device transcription, configurable polish intensity, optional translation, and a personal dictionary — all in a tap-to-toggle Flow session.
🎙
- Tap-to-toggle, 60s cap
- Tap the mic to start, speak naturally, tap again to stop. A live countdown keeps you honest at 60 seconds per take.
+ Tap-to-toggle · 3.5 min
+ Tap the mic to start, speak naturally, tap again to stop. A live countdown tracks each take — up to 210 seconds. Delete, space, and return keys sit below the mic.
🧠
On-device ASR
- Speech stays on your iPhone. Apple's on-device speech stack handles transcription — audio never leaves the device.
+ Speech stays on your iPhone. iOS 26 SpeechAnalyzer + DictationTranscriber handle transcription — audio never leaves the device.
✍️
- AI polish
- Optional cloud pass adds punctuation, structure, and clarity. Only the transcript is sent — not your voice.
+ AI polish · 3 levels
+ Light, Medium, or Heavy polish adds punctuation, structure, and clarity. Ultra-short utterances skip the LLM and insert directly. Only the transcript is sent — never audio.
🔌
- Bring your own API
- Works with any OpenAI-compatible endpoint: OpenAI, DeepSeek, Qwen DashScope, or your own server.
+ Local & cloud engines
+ Local: on-device ASR + built-in DeepSeek polish — no API key needed. Cloud: on-device ASR + your OpenAI-compatible API (OpenAI, Qwen, Zhipu, Moonshot, or self-hosted).
- 🔒
- Privacy first
- No ordinary keystroke logging. You choose when cloud polish runs and which provider receives text.
+ 🌐
+ Post-polish translation
+ After polish, optionally translate into English, 简体中文, 日本語, 한국어, and more. Toggle from the keyboard chip or Settings — both engines supported.
- 🪶
- Lean & native
- Pure Swift 6 and SwiftUI — no CocoaPods, no Carthage, no third-party packages.
+ 📖
+ Personal dictionary
+ Add names, product terms, and jargon in the Dictionary tab. The LLM preserves your entries; aliases help correct common ASR misrecognitions.
🔁
Flow session
- A long-lived host-app session keeps the recorder warm. Record many takes without bouncing back to the app.
+ A long-lived host-app session (8 minutes) keeps the recorder warm. Record many takes without bouncing back to the app — tap Start on the keyboard if the session expires.
- 🧩
- Local + cloud polish
- Local mode is ASR-only. Enable cloud polish to route the transcript through your chosen LLM when iOS speech recognition isn't strong enough.
+ 👆
+ Cursor drag navigation
+ Drag the pads beside the mic to move the caret precisely — horizontal or vertical. Toggle on/off in Settings → Preferences. Left- and right-handed layouts supported.