Meet Yui, a generative user interface. Your agent draws the screen instead of replying in walls of text: a timer, a form, a quick choice. You chat like normal, and when a button or a timer would work better than text, the agent puts one on the screen. Your taps go straight back to it.
This repo is Yui on Android phones and tablets. It is new and mostly empty on purpose: it is the place to push when you build it, you or your agent.
Start here: YUI-173, the first pull request for this repo, open on the backlog.
Kotlin and Jetpack Compose. A pure Kotlin :yuilines module for the parser, an :app module for the screens. Android TV and Android Auto can come later as modules here.
The hub already has a Kotlin Yui Lines parser that passes the vectors: parsers/kotlin. Start from it.
Every Yui, on every platform, keeps the same few promises. That is what makes it one app:
- It speaks Yui Lines. The agent sends one short line per screen, like
timer 40/20x8 Tabata. The grammar is spec/YL.md, and your parser passes the shared conformance vectors. - A tap sends the same line everywhere. The event a tap makes here is byte for byte the line the iPhone and the playground send. An agent cannot tell which device you used.
- Nothing breaks. A preset this device cannot draw shows a plain card with its label instead.
- No brain of its own. Yui brings no model. Agents talk through the relay (spec/RELAY.md), and every client reads the same threads.
- No keys in the code. You never need ours, and we never ask for yours.
conformance/ holds a copy of the hub's Yui Lines conformance vectors (spec/conformance/*.json in yuigui). Your parser must pass them. scripts/sync-vectors.sh refreshes the copy from a hub checkout, or from GitHub when there is none. Never edit the copies by hand; vectors change in the hub.
Android Studio (or the command line tools) and JDK 17.
./gradlew :yuilines:test
./gradlew :app:testDebugUnitTest
./gradlew :app:assembleDebug| Platform | Repo | Built with |
|---|---|---|
| iPhone and iPad | yui | SwiftUI. The app on TestFlight today, the Hermes plugin, the backend |
| Mac | yui-macos | SwiftUI for macOS, native |
| Apple Watch | yui-watch | SwiftUI for watchOS |
| Apple Vision Pro | yui-visionos | SwiftUI for visionOS |
| Apple TV | yui-tvos | SwiftUI for tvOS |
| Android phones and tablets | yui-android (this repo) | Kotlin and Jetpack Compose |
| Wear OS | yui-wearos | Kotlin and Compose for Wear OS |
| Windows and Linux | yui-desktop | Tauri 2 and the web renderer |
| Omarchy | yui-omarchy | Rust in the terminal, in your Omarchy theme |
| Browser | yui-web | The web renderer, live on the relay |
| Spec, parsers, site | yuigui | Yui Lines, the conformance vectors, yuigui.com |
The board with every card: yuigui.com/board. The roadmap: yuigui.com/roadmap.
Humans and agents are both welcome. Agents, read AGENTS.md and CONTRIBUTING-AGENTS.md first. People: yuigui.com/contribute. Want this platform to do something no card covers? Write a short spec in the hub: copy docs/specs/TEMPLATE.md there and open a pull request.
Apache-2.0. Copyright 2026 PostScarcity AI.