KRYON
The Network-Native UI Cartridge System
Define UIs in .kry • Compile to .krb • Control via CoAP
What is Kryon?
Kryon is a UI cartridge system — portable bytecode for user interfaces. Write UI definitions in a path-based VFS language, compile to portable bytecode, and control properties over the network via CoAP.
A single .krb file runs on ESP32, Plan 9, Linux, Android, and in the browser. Control your entire UI through simple file operations on network paths.
Core Features
Path-Based VFS
Every value is a file path
Portable Bytecode
Compile to .krb, run anywhere
Network-Native
Control via CoAP, HTTP, MQTT
Minimal
Under 1KB for typical UIs
Philosophy
- Everything is a file — UI properties exposed as VFS paths like 0.radius, env.w
- Path-based by design — All access through absolute (:sys.cons, :app.label), relative (.radius or just radius), and parent (..circle.radius) paths
- Network-native by design — CoAP for lightweight, constrained-device control
- Cross-platform runtime — Single .krb runs everywhere with the kray raylib renderer
Platforms
Kryon runtimes are available for multiple platforms:
Linux
Native Linux support
Plan 9
Native Plan 9 support
Android
Full runtime support
Browser
WebAssembly runtime
ESP32
Microcontroller support
Get Started
Get the Kryon compiler and runtime:
git clone https://git.sr.ht/~waozi/kryon
cd kryon
make
A simple .kry file:
. app [
= label "hi"
> label :sys.cons
@ :sys.time.tick [
? 1000 [
> :app.label :sys.cons
]
]
]
Compile to bytecode:
./k2b example.kry -o example.krb
Run with the renderer:
./kray example.krb
Documentation
Full documentation is available at:
- README — Project overview and setup
- Source Repository — Report issues and contribute