A local-first Chinese input method for Android.
English · 简体中文
Beta software (0.0.x). Features, settings and data formats can change between releases. Do not use openIME as your only keyboard. Report problems in Issues.
openIME is a system keyboard for Android.
Pinyin input, word learning and voice recognition all run on the device.
The app has no INTERNET permission, so your text cannot leave the phone.
![]() |
![]() |
![]() |
![]() |
| 26-key pinyin | Nine-key pinyin | Stroke | Emoji |
![]() |
![]() |
![]() |
![]() |
| Home | Settings | Dark theme | Dark settings |
- Keyboards: 26-key pinyin, nine-key pinyin, stroke, English 26-key, digits and symbols. Emoji, symbols, clipboard history, quick phrases, text editing and a floating keyboard are also available.
- Pinyin engine: librime with about 900,000 Rime Ice dictionary entries. The dictionary is compiled at build time. The full dictionary is ready a few seconds after the first start.
- Pinyin input: full pinyin, abbreviations, manual word splitting, fuzzy pinyin, user-word learning and simplified/traditional conversion.
- Nine-key input: a column on the left lists the pinyin for the next character. Tap one syllable to lock it.
- Voice input: hold the space key and speak. openIME inserts the text when you release the key. The bilingual (Chinese and English) model is in the APK and works without a network. Options remove filler words and replace punctuation with spaces.
- Gestures: swipe up on the delete key to clear the text. Swipe left or right on the space key to move the cursor.
- Emoji suggestions: after you choose a word, the suggestion bar shows related emoji. The word list is in the APK.
- Autofill (Android 11 and later): account names and codes from your password manager appear in the toolbar.
- Numbers and symbols: each letter key shows a number or symbol. Swipe up or press and hold to enter it.
- Display support: portrait, landscape, tablets, foldables, dark theme and large font sizes. Raw key input fields (terminals, remote desktops, games) and physical keyboards also work. See Compatibility.
- Self-protection: after repeated crashes or freezes, openIME starts in safe mode so you can still type. In the app, 设置 → 关于与数据 (Settings → About and data) copies diagnostics and exports or imports your data.
-
Open Releases. Download the latest
openIME-v*-arm64-release.apk. -
Check the SHA-256 checksum that the release notes show:
sha256sum openIME-v*-arm64-release.apk -
Install the APK.
-
Open openIME. Follow the steps to enable it and select it as your keyboard.
-
For voice input, allow the microphone. Typing works without it.
Requirements:
- Android 8.0 (API 26) or later.
- An
arm64-v8adevice. This includes most phones made in recent years.
All releases use the same signing key. The certificate SHA-256 is in docs/release-cert.sha256. You can install a new release over an old one.
- Handwriting input has no recognition engine yet. The entry point is hidden.
- The nine-key keyboard does not work with a physical keyboard.
- Some vendor Android versions limit background input methods. Few devices have been tested.
- Android does not install a version that is older than the installed one. Uninstall first. Export your data before you uninstall.
- The manifest has no
INTERNETpermission.allowBackupis off. - The dictionary, the voice models and the runtime are in the APK.
- Voice audio stays in memory. openIME clears it when recognition ends, is canceled or fails.
- In password fields, openIME does not compose pinyin, learn words, read the field text or write logs. Voice input inserts the final text only.
- Crash records contain the exception type and the stack trace. They never contain typed text.
- Uninstall removes all data on the device, including learned words.
Do not report a security problem in a public issue. Follow SECURITY.md.
Requirements: JDK 17, Android SDK Platform 36, NDK 27.0.12077973, CMake 3.22.1 and Git LFS.
git lfs install && git lfs pull # voice models and the sherpa-onnx AAR
bash scripts/fetch_rime_deps.sh # pinned librime dependencies
./gradlew :app:assembleDebug # app/build/outputs/apk/debug/app-debug.apk
bash scripts/verify_linux.sh # unit tests, lint, debug APK, test APKThe debug APK is for development only.
It includes x86_64 and test activities, and we do not release it.
Install it and select it as the keyboard:
adb install -r app/build/outputs/apk/debug/app-debug.apk
adb shell ime enable --user 0 llc.slacker.openime/.LocalVoiceImeService
adb shell ime set --user 0 llc.slacker.openime/.LocalVoiceImeServiceRepository layout:
app/ Android app, input method service, Rime JNI, models and dictionaries
scripts/ Build, test and release scripts
docs/ Architecture, testing, release and repository documents
.github/ CI, release workflow, Dependabot, issue and PR templates
VERSION Single source of the version number
CHANGELOG.md Change log. It is also the source of the release notes.
- Documentation index
- Architecture · Compatibility · Test procedure
- Release process · Repository settings
- Contributing · Security policy · Change log
openIME uses the GPL-3.0-only license. Third-party components keep their own licenses. See docs/LICENSING.md and THIRD_PARTY_NOTICES.md.








