Lexo

Android keyboard

Thoughts in.
Words out.

Lexo is built around one job: getting what's in your head onto the screen with as little friction as possible. Tap, and a language model running on the phone ranks what you're likely to say next. Talk, and what lands in the text field is a finished sentence rather than a transcript you have to go back and clean up yourself.

Free for 30 days, everything unlocked. After that it's $9.99 once, not a subscription. No ads either way.

Dictation, start to finish

You said

um can you uh send me the deck tomorrow morning question mark

It typed

Can you send me the deck tomorrow morning?

A worked example, not a live demo. Every keyboard can transcribe; the gap is what you're left holding afterwards. The fillers, the capital C and the spoken "question mark" are handled by a tagger that runs in about 3 ms on the phone, and when it isn't confident it leaves your words exactly as you said them.

Ways in

  • Tap

    A 0.5B language model reads the context and ranks what you're likely to type next, on top of a word-frequency prior and your own vocabulary. Fewer keys per sentence, no round trip to a server.

  • Speak

    Hold the mic and talk. An offline recognizer transcribes it and a cleanup tagger strips the fillers, restores casing, and turns spoken punctuation into punctuation. You get a sentence, not a transcript.

  • Swipe not shipped

    Glide typing, decoded by a neural classifier rather than a dictionary lookup. It's built and it isn't in the build on Play, so don't buy for it yet.

  • Translate not shipped

    Write in your language and send in theirs, English paired with Spanish, Portuguese, Swedish or French, on device. It's built and turned off in the release build, because it isn't good enough to charge for yet.

The last two are listed because they're the direction, not because you can use them today. If a feature isn't in the Play build, it doesn't count.

What's actually running

Measured on the shipping build, version 1.0.3 (4199).

  • Suggestion model

    Qwen2.5-0.5B-Instruct, quantized to q8_0 - a 531 MB GGUF running through llama.cpp on CPU, 256-token context, four threads.

  • Why not bigger

    Qwen2.5-1.5B bought 1.1 points of next-word top-1 accuracy (19.0% → 20.1%) for roughly 2.4× the decode cost. The ceiling is the predictability of short informal text, not model size.

  • Speech recognizer

    NVIDIA Parakeet, ~0.6B, int8 ONNX through sherpa-onnx, with a silero voice-activity gate. Roughly 0.05 real-time factor on a Pixel 9 Pro XL - a ten-second window decodes in about half a second.

  • Transcript cleanup

    An ELECTRA-small tagger, int8, about 3 ms per turn. It tags tokens for deletion, casing and punctuation, then a rule pass handles spoken punctuation and numbers. It is not a second model rewriting your speech, and it fails open: uncertain means it leaves your words alone.

  • First-run download

    ~1.2 GB, once, over Wi-Fi, verified by md5. The models live in the app's private files directory, so app updates stay small and never re-download them.

  • Languages

    English, Spanish, Portuguese, Swedish, German and French for typing and prediction. English is meaningfully the strongest.

  • Built on

    The open-source FlorisBoard project. Lexo itself is closed source, which is a real objection for some people and worth saying plainly.

None of it leaves the phone

The models run locally, so your text and your audio have nowhere to go. That's a claim like any other, and it should be checkable rather than promised, so here is everything you need to check it.

Lexo declares exactly five permissions: RECORD_AUDIO for dictation, VIBRATE for haptics, POST_NOTIFICATIONS for download progress, plus INTERNET and ACCESS_NETWORK_STATE.

INTERNET covers three things and none of them is your text. The one-time model download. Google Play billing, for the paid unlock. And anonymous crash reporting through Firebase Crashlytics, which is off unless you turn it on at Settings › Advanced › Other › Send crash reports. Crash reports carry stack traces, the device model and the app version. They never carry what you typed or what you said.

So point PCAPdroid or NetGuard at Lexo. Past the model download, typing and dictating generate no traffic at all. If you turn crash reporting on, you'll see Crashlytics check in, and turning it back off stops that too. I'd rather tell you exactly what the capture looks like than promise silence and have you catch a heartbeat.

The models are open weight - Qwen under Apache-2.0, the Parakeet recognizer under CC-BY-4.0 - and the runtimes are llama.cpp (MIT) and sherpa-onnx (Apache-2.0). There's nothing secret on the model side.

What costs money

Being straight about this, because "free tier" would oversell it: almost everything that makes Lexo different from the keyboard you already have is behind the unlock. What you keep without paying is an ordinary keyboard. It's a real one, and it doesn't nag or expire, but it isn't the reason to install this.

What keeps working, unpaid

$0

  • Next-word suggestions from a word-frequency prior plus your own vocabulary
  • A personal dictionary that never leaves the phone
  • Layouts, emoji, clipboard history, themes, one-handed mode
  • No countdown, no locked keyboard, no ads

Free trial, then one-time unlock

30 days free

  • Free for the first 30 days. Both of the below, no card, nothing to cancel
  • Neural suggestions from the 0.5B model
  • Offline voice dictation with cleanup
  • Then $9.99 once. Not a subscription. No ads, either way.

Writing

Notes on building this, with the measurements included.

Where it's weak

  • Swipe typing isn't in the build you can install yet. Glide is written and merged, decoded by a neural classifier rather than a lookup, but it hasn't gone out to the Play build. When it does, Gboard and SwiftKey will still have had a decade to tune theirs. Judge it yourself then rather than taking my word for it.
  • English is much stronger than the rest. Five other languages ship, and the gap is real. Qwen's tokenizer coverage moves this more than anything in the app code.
  • The download is big. About 1.2 GB before you can use the on-device models. That's the price of the models being on the device.
  • De-Googled ROMs are rough. Licensing and billing verification lean on Play services, so purchases can fail to activate on Huawei, Aurora, LineageOS and GrapheneOS. That's on me to fix.
  • Cleanup won't rewrite you. The dictation cleanup fixes disfluencies, casing and punctuation. It won't restructure a rambling sentence the way a generative pass could, because there isn't one.