Fully open-source, self-hostable over-the-air update framework for Capacitor apps. Release updates directly to your Capacitor app without app store reviews.
Try it for free: OtaKit.app
- Create an app in the dashboard.
- Copy its
appIdintocapacitor.config.*. - Build the app's web assets.
- Run
otakit upload --releaseto upload the bundle and publish a release. - The server writes the bundle and manifest to object storage behind the CDN.
- On the next app launch or resume, the plugin fetches the manifest from the CDN, compares it to the current bundle, and downloads the new version if available.
- If
notifyAppReady()is called within the timeout, the new bundle is confirmed. Otherwise the plugin rolls back to the previous bundle automatically.
- App — the Capacitor app identified by its
appId - Bundle — one uploaded web build zip with a version, hash, and size
- Release — a promotion of a bundle to a channel, which publishes a manifest to the CDN
- Channel — an optional release track such as
staging - Runtime version — an optional native compatibility lane configured in the plugin
packages/capacitor-plugin— the runtime that lives inside the mobile apppackages/cli— CLI for uploading bundles and creating releasespackages/site— public site, docs, contact, legal pagespackages/console— dashboard, API, auth, billing, and Prisma schemapackages/ingest— Cloudflare Worker for device event ingestiontinybird/— Tinybird datasources and pipes for event analytics
packages/
capacitor-plugin/ Capacitor OTA plugin
cli/ Upload + release CLI
ingest/ Cloudflare Worker event ingest service
site/ Next.js public site + docs
console/ Next.js dashboard + API + auth + billing
tinybird/ Tinybird event analytics project
examples/
demo-app/ Demo Capacitor app wired to the local plugin
packages/capacitor-plugin/README.mdpackages/cli/README.mdpackages/ingest/README.mdpackages/site/README.mdpackages/console/README.mdtinybird/README.md
- Node.js 20.9+, pnpm 9+
- The console app (
packages/console) requires Postgres and R2-compatible storage. Seepackages/console/.env.example. - Device event analytics optionally require the ingest service (
packages/ingest) and a Tinybird workspace. - See each package README for setup details.
pnpm install
pnpm dev # starts the console app in dev modeMIT