Ketoy
Documentation

Ketoy Developer Documentation

Ketoy is a server-driven execution runtime for Android. You write plain Kotlin — Jetpack Compose, coroutines, ViewModels, Navigation, Room, Hilt — with a handful of @Ketoy* annotations. The compiler lowers your code into a compact, signed bytecode bundle (.ktx) that any APK with the Ketoy runtime can execute natively.

The app is the OS. The server ships programs.

You can update screens, fix bugs, run A/B tests, and roll out features without going through the Play Store — every bundle is Ed25519-signed, sandboxed by capability, and rendered through real Jetpack Compose on the device.

This site is the developer manual for Ketoy 0.3.4-alpha. Every example is verified against current code — dev.ketoy.vm:*:0.3.4-alpha on Maven Central.

Start here

Install Ketoy, write your first @KetoyEntryPoint, and ship a signed bundle in fifteen minutes.

Installation

Your first screen

Write a @KetoyComposable, wire it to the runtime, and watch it render from a .ktx.

First screen

Guides

Compose UI, ViewModels, coroutines, navigation, networking, storage, custom capabilities, custom adapters.

Read the guides

Reference

KBC opcodes, .ktx wire format, capability registry, adapters, compile errors.

All reference

How to read this site

If you want to…Read
Install Ketoy in a new or existing Android projectGetting Started → Installation
Write your first KBC screenGetting Started → First Screen
Sign and ship a .ktx to your usersGetting Started → Bundle & Sign
Build UI with Compose, icons, fonts, imagesGuides → Compose UI & State
Persist state across rotation / process deathGuides → ViewModel
Use coroutines, Flow, StateFlowGuides → Coroutines & Flow
Navigate between screensGuides → Navigation
Make HTTP callsGuides → Networking
Read/write preferencesGuides → DataStore
Use Room DAOs from KBCGuides → Room
Wire everything through HiltGuides → Hilt
Bridge a custom Android API into KBCGuides → Custom Capability
Render a custom @Composable not in the catalogGuides → Custom Adapter
Understand which Kotlin features are supportedGuides → Kotlin Language
Look up an opcode, capability ID, or compile errorReference

Hard non-goals

Some things Ketoy will never support — by design:

  • No downloadable DEX / JVM bytecode (KBC only).
  • No reflection inside KBC.
  • No direct android.* / androidx.* API access from KBC source — every Android touchpoint is mediated by the capability registry.
  • No GlobalScope, runBlocking, or unstructured concurrency.
  • No raw I/O — file, network, prefs all go through capabilities.
  • No skipping signature verification in production builds.

If you need any of those things, they belong in native Kotlin in your host APK. Ketoy is for the parts you want to ship over-the-air.

Have a question?

Join the Ketoy community on Discord or open an issue on GitHub.