Skip to content

Publishing

Apps, components, and schemas are distributed through the Kiki store. This page covers packaging and shipping.

The package

A Kiki artifact is a .kiki bundle — a compressed archive with the built artifact and its manifest. The manifest declares the id, type, version, permissions, the schemas it sends and receives, and its license. It's generated from your #[kiki::app] annotations, so you rarely write it by hand:

toml
id      = "io.kiki.player"
type    = "desktop-app"
version = "1.2.0"
license = "MIT"

[capabilities]
audio = ["output"]
vault = [{ read = "personal/me/music/**" }]

[intents.receive]
schemas = ["io.kiki.player/Track@2.0.0"]

Pack and publish

Use the kpkg command line:

sh
kpkg pack                          # build + package into a .kiki
kpkg publish ./io.kiki.player-1.2.0.kiki

Users then install by id, from the command line or in a tap from the dashboard / app:

sh
kpkg install io.kiki.player

What happens on publish

The store keeps your artifact content-addressed and serves it efficiently. When a device installs it, the OS pulls it, verifies its signature, and links it into place — sharing a single on-disk copy with any app on the same version. Only the difference transfers, so updates are cheap for every device.

Licensing your app

The license field is yours to choose. Because the SDK is MIT, it doesn't constrain you — MIT, Apache-2.0, GPL, proprietary, whatever fits. The store records and shows it so users know the terms.

Versioning

Each publish is a new version at a new content address. Devices and apps reference the version they depend on. Bumping a version never breaks consumers pinned to an older one — the same model as schemas and components.

Published apps appear in the Store in the dashboard and mobile app, where users install them to their devices.

Kiki OS, Desktop & SDK are open source. See Licensing.