Ketoy
Getting started

Get started with Ketoy.

Install the CLI, wire up your project, and ship a signed .ktx screen over the air. Two commands get you to a working bundle. The full workflow lives in the CLI reference.

Requirements

Ketoy 0.4.16-alpha
Node.js18+
Kotlin2.0.21+
Android Gradle Plugin8.x +
JDK17
min SDK26
Jetpack ComposeBOM 2024.10.00 +

These versions are a starting point, not a hard requirement

The Ketoy compiler ships its own embedded Kotlin 2.0.21 in an isolated worker, so your project’s Kotlin, AGP, Gradle, and Compose versions stay decoupled and you can bump them freely. ketoy init writes a matched set into gradle/libs.versions.toml as a convenience. See the version compatibility update for the details.

Step 01

Install the CLI

The npm package is ketoy-dev. The installed binary is still ketoy.

terminal
$ npm install -g ketoy-dev
$ ketoy version

Requires Node.js 18 or newer. The install downloads the native binary for your platform, on macOS, Linux, and Windows across x64 and arm64.

Step 02

Set up your project

Run ketoy init from your Android project root. It makes small, additive edits and is safe to run again. Completed steps are skipped.

terminal
$ ketoy init                        # from your Android project root
$ ketoy init /path/to/AndroidProject   # or point it at a folder

init adds the dev.ketoy.compiler plugin and SDK dependencies, writes the ketoy { } build config, wires MyApplication and MainActivity, and drops in a sample HomeScreen.kt so the first build produces a bundle.

Signing is on by default. init generates an Ed25519 keypair, keeps the private key in app/keys/release-private.key (gitignored), ships the public key in your APK, and the runtime verifies every bundle on device. Keep the private key in a CI secret, or pass --no-sign for a quick unsigned setup.

Then build the signed bundle:

terminal
$ ./gradlew :app:ketoyBundle

Hilt projects

Hilt wiring differs. On a Hilt project init applies the Gradle setup only and points you at the rest of the docs. Force this path with --hilt.

Step 03

Ship over the air

Ketoy Cloud delivers a new bundle to every device on your app, with no Play Store release. Create an account, make an app, and push.

terminal · ketoy cloud
$ ketoy auth register     # create a Ketoy account
$ ketoy auth login        # log in and save credentials
$ ketoy app create        # create an app

$ ketoy push ktx <appId> main.ktx --version 1

Every device on that app picks up the new version over the air. Roll back the moment something looks wrong with ketoy ktx rollback <appId>, and the last good version goes live again in seconds.

Everything else

The rest of the CLI

This is the short path. The CLI also manages profiles and releases, verifies namespaces, runs ketoy doctor, ships shell autocomplete, and takes --json for CI.

Every command, flag, and scripting recipe lives in the CLI reference.

Read the CLI reference

Continue reading

Architecture overview

The five-layer stack, and why the wire format is KBC bytecode rather than JSON.

Read the spec

Supported features

Every Material3 adapter, every capability, every Compose token Ketoy ships with.

See coverage

Custom adapters

Add your own components beyond Material3. The KSP processor handles the rest.

Read the guide

Need help?

Join the Ketoy community on Discord, or open an issue on GitHub. We respond within a day.