Add shared prompt composition, custom style management, iCloud sync, and native iOS/macOS selection interfaces so users can keep a consistent writing voice across devices.
OSGKeyboard
Speak it. It's typed.
Voice input for iPhone, iPad, and Mac. Speak in any app — polished text lands at your cursor.
Website · 中文 README · Privacy Policy
Why OSGKeyboard
- Works everywhere — Messages, Notes, Notion, Cursor, Mail, WeChat — wherever you type
- Speak, don't edit — tap (iOS) or hold Option (Mac); AI adds punctuation and structure for you
- On-device by default — local recognition on iOS; optional local models on Mac. Cloud upload only when you opt in
- Bring your own LLM — built-in polish out of the box, or plug in DeepSeek, OpenAI, Anthropic, OpenRouter, and more
- Mac global dictation — menu-bar app, bottom overlay with live feedback, inserts into the frontmost app
Three steps
- Install & authorize — add the iOS keyboard with Full Access; grant mic + Accessibility on Mac
- Pick an engine — local ASR + built-in polish (zero config), or your own API keys
- Start talking — switch to OSGKeyboard, or hold Option on Mac
Platforms
| iOS / iPadOS | macOS | |
|---|---|---|
| Keyboard / global hotkey | ✅ | ✅ hold Option |
| Local speech recognition | ✅ SpeechAnalyzer | ✅ SenseVoice / Qwen3 |
| AI polish | ✅ | ✅ |
| Post-polish translation | ✅ | ✅ |
| Personal dictionary | ✅ iCloud sync | ✅ |
| Dictation history | ✅ | ✅ |
| Live UI | ✅ Dynamic Island | ✅ floating pill |
Privacy
Speech is transcribed on-device by default. Polish sends text only — not raw audio. We never log ordinary keystrokes. See the Privacy Policy.
Build from source
Requires macOS with Xcode 26 and XcodeGen.
git clone https://github.com/hkgood/OSGKeyboard.git
cd OSGKeyboard
./Scripts/generate-xcodeproj.sh
open OSGKeyboard.xcodeproj
Run tests:
xcodebuild test -project OSGKeyboard.xcodeproj -scheme OSGKeyboard \
-destination 'platform=iOS Simulator,name=iPhone 17'
Architecture (brief)
OSGKeyboard/ Main iOS app (Flow session host)
OSGKeyboardExt/ Custom keyboard extension
OSGKeyboardMac/ macOS menu-bar app
OSGKeyboardShared/ Shared framework (ASR, LLM, sync, design system)
Flow session model (iOS): the host app keeps a long-lived audio session; the keyboard sends start/stop signals via App Group; polished text is delivered back for insertion.
Engine modes:
local— on-device ASR; built-in polish (or your own LLM key)cloud— uploads audio to your configured ASR provider, then polishes via LLM
See CHANGELOG.md for release history and CONTRIBUTING.md for PR guidelines.
Adding an LLM provider
Append a preset in OSGKeyboardShared/Models/LLMProvider.swift — any OpenAI-compatible /chat/completions endpoint works out of the box.
License
Source Available License — personal, non-commercial use only. Commercial licensing: rocky.hk@gmail.com.