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 Mac. 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-110, the first pull request for this repo, open on the backlog.
SwiftUI for macOS, native: not Catalyst and not the iPhone app on a Mac. An XcodeGen project.yml with a YuiMac target, bundle id com.yuigui.app so the Mac and the phone are one purchase and one account.
The full spec is yuigui.com/developers/macos, and the four pull requests, in order, are in the hub's docs/specs/macos.md.
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 "Open on your iPhone" 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.
The Yui Lines parser and the code every Apple platform shares live in postscarcityai/yui. This repo pulls it in as a git submodule at yui/:
git clone --recursive https://github.com/postscarcityai/yui-macos
# or, in a clone you already have:
git submodule update --init- The parser is the local package
yui/Packages/YuiLines, plain Swift with no dependencies. ItsPackage.swiftnames iOS and macOS today; if this platform needs its own line there, that is a small pull request to postscarcityai/yui. - Reuse a shared file from
yui/Yui/Sourcesoryui/Sharedwhen it compiles here as it is. - Never edit anything under
yui/. When the shared code needs a change (an#if os(iOS)guard, a small shim), send it to postscarcityai/yui as its own pull request, then bump the submodule here in the next one.
A Mac with Xcode 26 and XcodeGen.
cd yui/Packages/YuiLines && swift test
xcodegen generate && xcodebuild test -scheme YuiMac -destination 'platform=macOS'| Platform | Repo | Built with |
|---|---|---|
| iPhone and iPad | yui | SwiftUI. The app on TestFlight today, the Hermes plugin, the backend |
| Mac | yui-macos (this repo) | 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 | 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.