Ketoy
v0.4Kotlin OTA

Ship Kotlin over the air.

Write real Kotlin and Jetpack Compose. Push updates to every device in seconds.

< 50ms
Load, verify, and parse
< 100ms
First frame, cold
> 100KB
A full app flow
20×
Smaller than JSON SDUI
Integrate in minutes

Command line and AI agents.

The Ketoy CLI runs your whole workflow from the terminal. Ketoy Skills give any AI coding agent an accurate map of what Ketoy supports, before it writes a line.

Command line

Ketoy CLI

Set up a project, push to the cloud, and roll back — all from the terminal.

$npm install -g ketoy-dev
CLI docs
AI agents

Ketoy Skills

Install a skill pack that grounds any coding agent in how Ketoy actually works before it writes code.

Claude CodeCodexCursorWindsurfGemini CLI
$ketoy skills add
Skills docs
Why Ketoy

Update without a release.

Add one annotation. Run one Gradle task. Every device gets the change in seconds.

01

Instant updates

Fix a bug at 3pm. Every user has it by 3:01. The app never reinstalls.

How it works
02

Play Store safe

Ketoy generates code on device, the same way ART does. It stays inside Google policy.

Security model
03

Just Kotlin

It is the Jetpack Compose you already write. Nothing new to learn.

What is supported
What’s supported

If it’s Compose, it’s Ketoy.

Ketoy supports the full Compose toolkit, not a curated subset. When Compose adds a parameter, one command picks it up.

UI

Compose and Material 3

All 35 Material 3 components. Every parameter included.

ScaffoldLazyColumnOutlinedTextFieldButtonTopAppBarAlertDialog+29 more
Language

Plain Kotlin

Data classes, sealed classes, extensions, and lambdas. Real Kotlin, compiled to bytecode.

data classsealedwhenextensionsclosures
Async

Coroutines and Flow

launch, async, withContext, and 9 Flow operators. Structured concurrency included.

launchasyncStateFlowcollectAsStatedebounce
State

ViewModel

A real Android ViewModel. It survives config changes and works with Hilt.

viewModelScopeSavedStateHandle@HiltViewModeldispatch()
I/O

Networking and storage

HTTP, DataStore, Room, and navigation. 67 capabilities built in.

HTTPDataStoreRoomNavController+ your SDKs
DI

Hilt

Drop it in. @Inject works exactly as before.

@Inject@HiltViewModel@Moduledev overlay

One annotation and one Gradle task. That is the whole difference.

See everything Ketoy supports
Security

Secure and compliant.

Ketoy verifies every bundle before it runs. Here is how, in three parts.

Every bundle is signed

An Ed25519 signature is checked before any code runs. Your private key stays on your server. Only you can ship a bundle.

The sandbox is a build error

The compiler rejects file access, reflection, and any unregistered API. Unsafe code never compiles.

Capabilities are the only door

KBC code reaches the platform through registered capabilities. Nothing else is callable.

Write Kotlin. Ship the screen.

Available now on Maven Central. Hilt, Koin, dev tools, and the full Material 3 catalog are included.

Support

Talk to the people who build it.

Stuck on something, evaluating Ketoy for your team, or wondering whether your in-house SDK is supported? We answer every email, usually the same day.

FAQ

Questions, answered.

What is Ketoy?

Ketoy is a Kotlin-native over-the-air (OTA) update framework for Android. You write real Jetpack Compose, ViewModels, and business logic in Kotlin, compile it to a tiny signed .ktx bytecode bundle, and push changes over-the-air to installed apps in seconds - no Play Store release and no JSON DSL.

Is Ketoy OTA or SDUI?

Ketoy is an OTA framework, and SDUI is one of the things it can do. Because it ships real Kotlin and Compose over the air, a bundle can drive a whole screen from the server - that is SDUI - and it can equally ship a ViewModel, a network call, or a pricing rule that no JSON schema could express.

What can Ketoy update over the air?

Jetpack Compose UI, ViewModels and state, navigation, coroutines and Flow, networking, Room and DataStore access, and ordinary Kotlin such as data classes, objects, and functions. UI-only and logic-only bundles are both fine.

How is Ketoy different from JSON-based server-driven UI?

Instead of a JSON schema and a parallel component model, Ketoy uses ordinary Kotlin and Jetpack Compose compiled to Ketoy Bytecode (KBC). Bundles are roughly 20x smaller than equivalent JSON SDUI, Ed25519-signed, and rendered as native Compose on device.

Does Ketoy allow over-the-air (OTA) updates on Android within Play Store policy?

Yes. Ketoy delivers UI and logic changes over-the-air without shipping a new APK/AAB. Bundles execute in a sandbox and render native Compose, which keeps updates within Play Store policies.

OTA vs SDUI, bundle sizes, Play Store policy, offline behaviour, debugging.

More questions