# koru > koru is a single Go binary that turns static HTML, CSS and JavaScript into a signed Android APK, with no JDK, Gradle or Android SDK. Key commands: ```sh koru create my-app # new project from a template koru dev # browser preview with live reload koru run # install and open on a device or emulator koru build --release # signed release APK koru verify app.apk # check the APK signature ``` - Pure Go and the standard library: DEX, binary manifest, resources, ZIP packaging and the APK v2 signature are written in Go. Builds need no JDK, Gradle or Android SDK. - Android only. koru does not build iOS apps or Play Store AABs; it produces APKs for direct installation. - Runtime: the WebView loads your files from an intercepted HTTPS origin and talks to Android through a MessagePort. There is no JavaScriptInterface. - Templates: basic, vite, react, vue, svelte, vanilla-ts. Plugins you can enable in koru.json: device, app, storage, vibration, share, notifications. - Experimental (v0.1.0): recorded execution covers only Android 11 (API 30) on an x86_64 emulator. Framework templates, deep links and the run, devices and logs commands on real hardware are not validated on a device. Do not call an APK working until it has been installed and run on Android. Documentación en español: [índice llms.txt en español](https://koru.js.org/es/llms.txt) ## Get started - [Introduction](https://koru.js.org/docs/en/README.md): Turn static HTML, CSS and JavaScript into a signed Android APK with koru. Read this when you need the big picture and where to go next. - [Getting started](https://koru.js.org/docs/en/getting-started/README.md): Install koru, create an app from a template, preview it with live reload and open it on your phone. Read this when installing koru or creating your first app. - [koru, Capacitor and Expo](https://koru.js.org/docs/en/comparison/README.md): An honest comparison of koru with Capacitor and Expo: toolchain, workflow, platforms, plugins and when to choose each. Read this when choosing between koru, Capacitor and Expo, or someone needs iOS or AAB. ## Build your app - [Develop with live reload](https://koru.js.org/docs/en/develop/README.md): Preview your app in a browser with koru dev, live reload, web implementations of the API and framework proxies. Read this when previewing in the browser or using a framework dev server. - [Run on a device](https://koru.js.org/docs/en/run-on-device/README.md): Install and open your app on a phone or emulator with koru run, list devices, read logs with koru logs and debug the WebView. Read this when installing on a phone or emulator, reading logs or debugging the WebView. - [Frameworks & existing projects](https://koru.js.org/docs/en/existing-project/README.md): Package Vite, React, Vue, Svelte, Astro or any static frontend, configure routes and connect an HTTPS API. Read this when packaging Vite, React, Vue, Svelte, Astro or another existing frontend. - [Remote content and hybrid apps](https://koru.js.org/docs/en/remote-content/README.md): Load your website in the app with the server block, choose which hosts open inside it, open other links in the system and expose the koru API to your origins. Read this when loading your website in the app, choosing which links open inside it or exposing the koru API to your own origins. - [Files, location, camera and microphone](https://koru.js.org/docs/en/web-features/README.md): Enable the file picker, geolocation, camera and microphone with the webFeatures option, and learn which pages get access. Read this when your pages need the file picker, location, camera or microphone. - [Distribute your app](https://koru.js.org/docs/en/distribution/README.md): Build a release APK, bump its version, share it and update your app with the same signing identity. Read this when building a release APK, bumping versions or updating an installed app. - [Signing & security](https://koru.js.org/docs/en/security/README.md): Persistent signing keys, APK v2, intercepted HTTPS assets and WebView trust boundaries. Read this when handling signing keys or judging the WebView trust boundary. - [Troubleshooting](https://koru.js.org/docs/en/troubleshooting/README.md): Fix project, asset, signing, installation and native bridge errors with concrete checks. Read this when a build, install, signing or bridge error appears. ## Reference - [CLI commands](https://koru.js.org/docs/en/cli/README.md): Reference for koru create, dev, run, logs, devices, build, bump, plugin, config, deeplinks, verify, doctor, init, keygen and DEX commands. Read this when you need the exact command, flag or exit behavior. - [Configuration](https://koru.js.org/docs/en/configuration/README.md): Every koru.json option, SDK constraint, permission, orientation, deep link, asset path and signing identity. Read this when editing koru.json: permissions, SDK, deep links, assets or signing. - [JavaScript API](https://koru.js.org/docs/en/plugins/README.md): Read device information, store data, share text, schedule notifications, open links, keep the screen on and use the clipboard from JavaScript. Read this when calling Android features (device, storage, share, notifications) from JavaScript. - [Write a plugin](https://koru.js.org/docs/en/write-a-plugin/README.md): Step-by-step guide to a custom koru plugin in DEX IR JSON, using a complete toast example: manifest, handler, parameters, errors, threading and testing. Read this when adding a native capability beyond the built-in plugins. ## Optional Architecture, internals and historical test records. Skip these when context is short. - [DEX API](https://koru.js.org/docs/en/dex-api/README.md): Go DEX 035 API: registers, bytecode, identifiers, sections, exceptions and parser limits. Read this when using or extending the Go DEX library. - [DEX architecture](https://koru.js.org/docs/en/architecture-dex/README.md): ADR 0001: independent DEX core, deterministic assembly and strict parser separation. Read this when you need the reasoning behind the DEX core design. - [APK & runtime](https://koru.js.org/docs/en/architecture-apk/README.md): ADR 0002: Go APK packaging, WebView HTTPS origin, MessagePort, plugins and runtime cache. Read this when you need to know how APK packaging and the runtime work internally. - [Optional JNI adapter](https://koru.js.org/docs/en/native/README.md): Compile and test the optional freestanding JNI plugin and understand ABI requirements. Read this when building the optional JNI adapter. - [Compatibility](https://koru.js.org/docs/en/android-results/README.md): Recorded APK installation and execution on Android 11 API 30 x86_64, with explicit matrix limits. Read this when checking what has actually been run on Android. - [Reproduce the tests](https://koru.js.org/docs/en/testing/README.md): Go, JavaScript, JNI, opt-in Android validation and real WebView execution test instructions. Read this when reproducing or extending the test suites. - [Early DEX results](https://koru.js.org/docs/en/dex-results/README.md): Historical DEX-only test results, fuzz campaigns and benchmarks before the APK runtime milestone. Read this when you need historical DEX fuzz and benchmark records. - [Milestones & scope](https://koru.js.org/docs/en/milestones/README.md): Implemented koru milestones and the remaining Android, signing and DEX compatibility work. Read this when you need project status, scope and open work. - [CLI recording](https://koru.js.org/docs/en/demo/README.md): Reproduce the actual koru CLI demonstration with Charm VHS and review its validation records. Read this when reproducing the CLI recording. - [Web example](https://koru.js.org/docs/en/web-example/README.md): The web fixture used to validate HTML, CSS, SVG, navigation, JavaScript and offline behavior. Read this when you need the web fixture used to validate the runtime. - [Full documentation in one file](https://koru.js.org/llms-full.txt): every English page concatenated, for loading in one request.