wasi-master/wmkeyboard

▲ 85 stars today★ 893⑂ 53

A modern, privacy-first Android keyboard: offline intelligence, 600+ languages, themes, tools and an addon ecosystem.

About wasi-master/wmkeyboard

wasi-master/wmkeyboard is an open-source project on GitHub, mainly written in Kotlin. A modern, privacy-first Android keyboard: offline intelligence, 600+ languages, themes, tools and an addon ecosystem. It currently holds 893 stars and 53 forks with 36 open issues, and was last pushed on 2026-11-10 (repository created 2026-08-10).

Project Overview

Git Homed tracks it on the Today's Trending board, currently at rank #52 with 85 new stars today.

GitHub Repository Details

Repository wasi-master/wmkeyboard · default branch main · size 675274 KB · watchers 8 · source: GitHub REST API and repository README

README

https://github.com/wasi-master/wmkeyboard/blob/HEAD/WM Keyboard. Type anything. Share nothing.

Private. Offline. Yours.

An open source multilingual Android keyboard with prediction, glide typing, transliteration, emoji search and an 89-tool toolbox that all run on the phone and never phone home.

https://github.com/wasi-master/wmkeyboard/blob/HEAD/Latest release https://github.com/wasi-master/wmkeyboard/blob/HEAD/Google Play https://github.com/wasi-master/wmkeyboard/blob/HEAD/F-Droid https://github.com/wasi-master/wmkeyboard/blob/HEAD/Downloads https://github.com/wasi-master/wmkeyboard/blob/HEAD/CI https://github.com/wasi-master/wmkeyboard/blob/HEAD/Docs https://github.com/wasi-master/wmkeyboard/blob/HEAD/Telegram Group https://github.com/wasi-master/wmkeyboard/blob/HEAD/Sponsor on SupportKori https://github.com/wasi-master/wmkeyboard/blob/HEAD/MIT license

Install · Tour · Languages · Privacy · Builds · FAQ · Build · Read the docs


https://github.com/user-attachments/assets/3bd063a9-6701-4ccd-82ef-edd40a42b8e0

Why I built this

A keyboard is the one app that sees everything you write. Your messages, your passwords, your half-typed thoughts you deleted before sending. Somewhere along the way the popular keyboards decided that was a business model. The prediction got better, and the price for that was a copy of your keystrokes getting sent to somebody else's server.

The keyboards that refused that deal were mostly forks of the same decade-old Android code. Good bones, honest intentions, but no glide typing without a proprietary blob, no real toolbox, and nothing for the language I actually type in. Bangla was an afterthought everywhere: either a phonetic engine bolted on with no prediction, or a layout with no smart features behind it.

So I wanted a keyboard that did three things at once. Type Bangla the way Avro taught a whole country to type it. Carry the features I reach for all day, clipboard, snippets, translate, calculator, scanner, without leaving the text field. And keep all of that on the phone, where it belongs. This is that keyboard. It is written from scratch in Kotlin and Jetpack Compose, keyboard surface included, and the whole intelligence layer runs offline.

A few screenshots

https://github.com/wasi-master/wmkeyboard/blob/HEAD/A keyboard that does so much more: feature chips around the keyboard https://github.com/wasi-master/wmkeyboard/blob/HEAD/Type it how it sounds: ami valo achi becomes আমি ভালো আছি https://github.com/wasi-master/wmkeyboard/blob/HEAD/Everything here runs on your phone: voice typing and AI in airplane mode https://github.com/wasi-master/wmkeyboard/blob/HEAD/Rewrite, translate, fix, right on your phone: the AI panel with on-device models https://github.com/wasi-master/wmkeyboard/blob/HEAD/A clipboard with superpowers: history, pins, one-time codes https://github.com/wasi-master/wmkeyboard/blob/HEAD/Stop switching apps: calculator, dictionary and the toolbox https://github.com/wasi-master/wmkeyboard/blob/HEAD/Make it unmistakably yours: emoji search and themes https://github.com/wasi-master/wmkeyboard/blob/HEAD/It does that, too: a wall of feature chips

It starts by understanding how you spell

Type a word the way it sounds in Latin letters, and the keyboard finds the word you meant. Every one of these runs on the device, with no network and no delay.

| You type | You get | Engine | |---|---|---| | ami valo achi | আমি ভালো আছি | Avro-compatible Bangla phonetic, with a lenient index: asi, achi and achhi all reach আছি | | namaste | नमस्ते | Hindi phonetic with a map of how people actually romanise Hindi | | aap kaise ho | آپ کیسے ہو | Urdu phonetic, folding to the consonant skeleton the script itself spells with | | vanakkam, nenu, 3arabi | Tamil, Telugu, Arabic script | Phonetic layouts for eleven more languages, Arabizi digits included | | nihao | 你好 | Pinyin, including a T9 nine-key variant | | konnichiwa | こんにちは | Romaji to kana with conversion candidates | | xin chaof | xin chào | Vietnamese Telex |

The same prediction engine sits behind every one of them, so glide typing, autocorrect and next-word suggestions work in Bangla exactly as they do in English.

The tour

The features the keyboard has

Typing

n-gram context ranking, and on-device learning of your words, bigrams and trigrams. One tap clears all of it. blunt threshold, an undo chip appears after each one, and a word you fix by hand is learned. ship with lists built in. Downloads cover 330+ more. to switch language, drag a modifier for chords, peek a layer by dragging off shift, and much more! included, when a particular app opens. Voikko for Finnish when you import them. passwords, code editors, terminals, URL bars, one-time-code fields. Typing basics · Glide · Gestures · Modes · Autocorrect

Languages

variants, romanised entries, CJK, minority Cyrillic alphabets, and a dozen constructed ones. A fresh install starts in whatever your phone is already set to. conjunct-aware backspace, and Bangla-English mixing in one field. RIME for Chinese and Mozc for Japanese are there as optional engines. T9 keypad for languages that had one.

Languages overview · Bengali · CJK · Custom layouts

Emoji, GIFs and stickers

for party in other languages. WhatsApp, Signal and Telegram packs import directly. Emoji picker · Stickers

The toolbox

89 tools sit one tap behind the toolbar, and you drag the ones you use onto it. Most of them work in airplane mode.

| | | |---|---| | Text | Clipboard with history, pins, search and screenshot capture. Snippets with {date} and {clip} variables. Text expansion. Undo and redo. Selection mode. A trackpad. Fancy text. Notes. | | Numbers | A calculator in the suggestion strip. Unit and currency conversion. Calendars, with events you can add and edit. | | Words | Dictionary, Wikipedia and Look up cards. Translate on device with ML Kit, Firefox Translations or NLLB-200. Grammar check with Harper, fully offline. Vocabulary practice. | | Camera | Text scan with ML Kit, Tesseract for 100+ languages, or PaddleOCR. QR and barcode with ML Kit or zxing-cpp. Document scanner, Google's or the keyboard's own. | | Phone | Media controls. An app launcher. KDE Connect. Smart home controls. Sending files. Flashlight. One-time codes caught from notifications. | | Voice | Android's recogniser with a continuous mode, or offline engines: Whisper on whisper.cpp, Whistle, Asr4All, Parakeet, Moonshine, Sherpa and Omnilingual. A transcription server of your own works too. | | Writing | AI rewrite, summarise, translate and fix. On-device with LiteRT-LM or GGUF models on llama.cpp, or bring your own key for any provider that speaks the OpenAI shape. Nothing is enabled behind your back. |

The toolbar · Clipboard · Whisper · AI tools

Themes

photo backgrounds, per-key styles, with a live preview while you edit. Nord, Solarized, Catppuccin and Tokyo Night. Themes · The editor

Privacy

The typing engine has no network code in it. Prediction, autocorrect, glide, layouts and learning behave identically with the radio off.

Incognito mode does the same on demand, and follows private browsing automatically. open it. A network activity log shows every request the keyboard has made. Google's ML Kit, which reports its own diagnostics to Google. The F-Droid build carries no Google library at all, and the offline build has no internet permission.

Privacy at a glance · Network policy · Your data on device

Extend it

sound packs, sticker packs and more. Host your own with a static JSON file. permission model and an in-app IDE. Addons · Plugins · Repository format
The full inventory, if you want numbers


FEATURES.md tracks the surface across 12 areas, three levels deep.

| Area | Families | Features | Capabilities | |---|---:|---:|---:| | Typing core: prediction, autocorrect, learning, spell check | 9 | 50 | 205 | | Input behaviour: glide, gestures, cursor, editing, keys | 11 | 80 | 220 | | Languages, scripts, layouts, transliteration | 11 | 65 | 220 | | Themes and appearance | 14 | 73 | 183 | | Emoji, GIFs, stickers, kaomoji | 16 | 96 | 94 | | Toolbar and the tool set | 10 | 88 | 364 | | Clipboard, snippets, text expansion | 7 | 37 | 191 | | AI, voice, handwriting, scanning | 12 | 81 | 168 | | Privacy, backup, storage, statistics | 14 | 70 | 180 | | Accessibility, form factors, platform integration | 13 | 61 | 111 | | Extensibility: addons, plugins, imports, formats | 5 | 35 | 164 | | Modes, rows, field adaptation, runtime | 12 | 97 | 203 | | Total | 134 | 830 | 2,288 |

Entries marked RARE there are things few or no mainstream keyboards ship. There are over 500.

Builds

One app, three builds. Everything about typing, prediction, themes, languages and privacy is identical. Up to 0.6.2 there were two editions, Full and Lite; from 0.6.3 there is no Lite, and the optional feature libraries download the first time a feature needs them instead.

| | Standard | F-Droid | Offline | |---|:---:|:---:|:---:| | Where | Google Play, GitHub | F-Droid | GitHub | | Handwriting | ML Kit, 126 languages | zinnia for Chinese and Japanese, PaddleOCR for nine other scripts | ML Kit, 126 languages | | Text scan | ML Kit, Tesseract, PaddleOCR | PaddleOCR | ML Kit, Tesseract, PaddleOCR | | QR and barcode | ML Kit or zxing-cpp | zxing-cpp | ML Kit or zxing-cpp | | Document scanner | Google's or the built-in one | built-in | Google's or the built-in one | | Grammar check (Harper) | ✓ | ✓ | ✓ | | Offline Whisper (whisper.cpp), Asr4All, Parakeet, Moonshine, Sherpa, Omnilingual | ✓ | ✓ | ✓ | | Whisper on LiteRT, Whistle | ✓ | | ✓ | | On-device AI | LiteRT-LM and GGUF | GGUF | LiteRT-LM and GGUF | | On-device translate | ML Kit, Firefox Translations, NLLB-200 | Firefox Translations, NLLB-200 | ML Kit, Firefox Translations, NLLB-200 | | Google libraries on the compile classpath | ML Kit, LiteRT | none | ML Kit, LiteRT | | Feature libraries | downloaded on first use | downloaded once you allow it | in the APK | | Internet permission | ✓ | ✓ | |

The UI-language choice only affects the words the settings app shows you. Every layout and dictionary is in every build.

Which build you have

Install

https://github.com/wasi-master/wmkeyboard/blob/HEAD/Get it on Google Play https://github.com/wasi-master/wmkeyboard/blob/HEAD/Get it on F-Droid https://github.com/wasi-master/wmkeyboard/blob/HEAD/Get the APK from GitHub https://github.com/wasi-master/wmkeyboard/blob/HEAD/Get it on Obtainium

runtimes, the translation engines, handwriting, the offline voice engines, the scanners' readers) the first time you use them, so the install stays small, and updates it like any other app. per CPU architecture and checked byte-for-byte against the matching -fdroid.apk on the GitHub release. universal APK, which fetches its other UI languages and feature libraries on demand, and the offline build for arm64-v8a and universal. Almost every phone made since 2017 wants arm64-v8a. GitHub lists each file's SHA-256 beside it. carry their own update check, which asks GitHub and shows a card on the Home screen.

Install it, open the app, follow the setup card. Android will warn you that a third-party keyboard can see what you type. It says that about every keyboard, Gboard included, because that is what a keyboard is. F-Droid and GitHub builds share a signing key from 0.5.10 on, so moving between them is an ordinary update. Google Play signs its copy with its own key, so moving between Play and the other two takes a backup, an uninstall and a restore.

Needs Android 7.0 or newer.

Installation · Setup · A two-minute tour

FAQ

Is anything sent to the cloud?
Not by typing, ever. Prediction, autocorrect, glide and the dictionaries all run on the device, and there is no analytics SDK in the app. What needs the internet is a handful of tools that are online services by nature: weather, translate (unless you download the on-device languages), currency rates, Wikipedia, GIF search, web search, and any AI provider you set up with your own key. Each one makes a request only while you are using it. Link previews are the one opt-in background fetch, and it is off by default. Network policy lists every request, tool by tool.
Which build?
The standard one, from Play or GitHub, unless you want F-Droid's (no Google library at all, at the cost of handwriting outside Chinese and Japanese, ML Kit's readers in the scanners, and the LiteRT models for Whisper and on-device AI) or the offline one (no internet permission, everything inside a much larger APK). The GitHub and F-Droid builds share a signing key, so installing one over the other keeps all your data.
Why doesn't glide typing work in my language?
It has no word list installed yet. A swipe is decoded against the active language's dictionary. English and Bangla ship with one. Every other language downloads its list from the language's own settings page, and the suggestion strip offers the download the first time you need it.
Android says "install unknown apps" or Play Protect complains.
Standard behaviour for any APK from outside Google Play. Grant the install permission to whichever app you opened the file with. If you would rather not, F-Droid installs it for you.
Does it use much battery or memory?
Very little. Nothing runs in the background out of the box. The heaviest things it can hold are a Whisper model and a local LLM, and both are released the moment Android signals memory pressure. A dedicated power-saving mode trims per-keystroke work further and can follow Android's battery saver.
Where are my learned words, and how do I wipe them?
In a plain JSON file in the app's private storage. The Personal dictionary screen lets you delete them one at a time. Privacy → Your data → Learned words wipes all 13 learning files in one pass, and a running keyboard drops its in-memory copies the moment you close it.
I installed from F-Droid before 0.5.12 and it won't update.
Those builds were signed with F-Droid's own key, and Android will not update across keys. Export a backup, uninstall, reinstall from F-Droid, import the backup. Every update after that is ordinary.

The docs have a longer FAQ and a troubleshooting page.

Documentation

wmkeyboard.pages.dev is the full manual: pages with screenshots, a settings reference for every screen, and a "verify every claim in code" rule for the people who write it. The wiki mirrors the same pages for reading on GitHub.

| Start here | Go deeper | |---|---| | Install and set up | Architecture | | A two-minute tour | Building from source | | Languages and layouts | Dictionary formats | | The toolbar | Plugin API | | Privacy | Hosting an addon repository | | Settings reference | File formats |

The source lives in docs/ and runs on Astro Starlight. npm run dev in that folder gives you a local preview.

Community

GitHub Stars & Activity

893Stars
53Forks
36Open issues
KotlinLanguage

GitHub Popularity

GitHub stars893
Forks53
Open issues36
Primary languageKotlin
LicenseMIT
Stars gained today85
Created2026-08-10
Last pushed2026-11-10

Trending History

Daily boardrank #52 · ▲ 85 stars

Related GitHub Projects

1

2dust / v2rayNG

Kotlin★ 65,701⑂ 8,602▲ 69 stars
→
2

CYQawa / YunX

Kotlin★ 7,206⑂ 380▲ 153 stars
→
3

tidain / YunX-Desktop

Kotlin★ 4,422⑂ 333▲ 340 stars
→
4

vivizzz007 / vivi-music

Kotlin★ 4,102⑂ 154▲ 32 stars
→
5

mattpocock / skills

Shell★ 321,452⑂ 26,944▲ 1,225 stars
→
6

obra / superpowers

Shell★ 315,986⑂ 28,108▲ 656 stars
→
7

anthropics / skills

Python★ 192,782⑂ 22,682▲ 1,679 stars
→
8

ohmyzsh / ohmyzsh

Shell★ 190,508⑂ 27,294▲ 49 stars
→

More Trending Repositories