Session
Offline by Default: On-Device LLMs in a Kotlin Multiplatform App
Recent iPhones ship a 3-billion-parameter language model inside the operating system. On Android you download the model and manage it yourself. Either way it runs on the phone: no network, no API key, nothing billed per token. One Kotlin codebase drives both. Most AI application work in this ecosystem assumes a hosted model behind a client library; this talk takes the other path and reports what it costs.
It's a collection tracker for 1,025 Pokémon cards. Read out the 25 cards you just bought and it marks them caught. Ask which Gen 3 cards you're still missing and it answers from your own data. Airplane mode, start to finish.
The lesson that transfers furthest has nothing to do with phones. The model should never hold your data. Hand a 1B model 1,025 invented proper nouns and it will confidently invent a few more, so it never sees the collection. It turns a question into a structured query, constrained so an invalid response is impossible to generate, and SQLite answers. That discipline matters just as much in a service calling a hosted model, where it is easier to skip and more expensive to get wrong.
The app is Kotlin Multiplatform, which puts the same code in front of two different runtimes: Gemma 3 1B through LiteRT-LM on Android, Apple's Foundation Models framework on iOS. You'll see where one Kotlin interface covers both and where the platforms stop agreeing.
Everything runs on hardware people already carry. The structured-output half applies wherever your model lives.
Kevin Desai
Lead Android Engineer - Level Home
Atlanta, Georgia, United States
Links
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top