Source available · iOS 26+

Tap to talk.
Polished text in any app.

A custom keyboard that transcribes your voice on-device and optionally polishes the result with the LLM you configure. Works in WeChat, Notes, Mail, ChatGPT — everywhere you type. Up to 60 seconds per take, with a long-lived Flow session so you never bounce back to the host app.

On-device ASR Bring your own API Zero dependencies Flow session · 60s / take
9:41●●●

Notes

OSGKeyboard active

Tomorrow at 3 PM, sync with the design team on the new onboarding flow. Send the draft before lunch.

Built for real typing workflows

Native SwiftUI, privacy-first architecture, and a Typeless-style push-to-talk experience.

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.

On-device ASR

Speech stays on your iPhone. Apple's on-device speech stack handles transcription — audio never leaves the device.

AI polish

Optional cloud pass adds punctuation, structure, and clarity. Only the transcript is sent — not your voice.

Bring your own API

Works with any OpenAI-compatible endpoint: OpenAI, DeepSeek, Qwen DashScope, or your own server.

Privacy first

No ordinary keystroke logging. You choose when cloud polish runs and which provider receives text.

Lean & native

Pure Swift 6 and SwiftUI — no CocoaPods, no Carthage, no third-party packages.

Flow session

A long-lived host-app session keeps the recorder warm. Record many takes without bouncing back to the app.

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.

How it works

Three gestures between thought and sent message.

Open the app

Build from source and launch. The 5-step onboarding starts the Flow session automatically once permissions are granted.

Allow mic & speech

Grant microphone and on-device speech recognition access when prompted. Both stay on-device.

Enable the keyboard

In iOS Settings, add OSGKeyboard and allow Full Access so it can use the mic and your API.

Pick engine + API

Choose local ASR or cloud. For cloud polish, paste any OpenAI-compatible key (DeepSeek works out of the box).

Tap to talk

Switch to OSGKeyboard in any text field, tap the mic, speak (up to 60s), tap again. Polished text lands at your cursor.

Privacy at a glance

Audio is processed on your device. We do not log ordinary keystrokes. In cloud polish mode, only transcribed text — never audio — goes to the API provider you configure.

Read full policy