Otakit

io.github.OtaKitPublished by GitHub account OtaKitv1.12.0Updated Nov 5, 2026

Inspect, upload, release, monitor, and revert OtaKit Capacitor OTA updates.

VerifiedStreamable HTTPWeb executableCloud & InfrastructureDeveloper ToolsData & Analytics

Overview

AI-generated overview

OtaKit lets an assistant inspect a Capacitor project, upload web bundles, publish, roll out, monitor and revert over-the-air updates.

What you can do
  • Read connection context, account plan and usage, and list apps in the bound organization
  • Inspect the local Capacitor project, check native compatibility, and compare bundles for added, changed or removed files
  • Upload a local web build, or upload and publish it in one reviewed step
  • Preview, publish, revert and adjust rollout percentage for a release lane
  • Review release history, current lane state, health counts and event timelines, and read the audit log
  • Create or revoke private preview links and QR codes for testing a bundle on one phone
When to use it
Useful when shipping over-the-air updates to a Capacitor app and you want an assistant to read the project, judge whether a change is safe to send, upload the build, and stop for approval before anything reaches devices. Also handy for checking release health and rolling back a bad release.
Requirements
Either the remote endpoint with OAuth sign-in, or the local npm CLI package run through Node.js. A Capacitor project with OtaKit configuration, an OtaKit account and organization, and an app registered in the dashboard. The local connection is bound to one project and organization.
Before you install
Publishing, reverting, deleting bundles and changing rollout percentages change what devices receive; the server asks for explicit approval and idempotency keys, so review the proposed change first. Deleting is audited and only allowed for bundles absent from release history. Event detail text is device-reported and untrusted. Uploading does not publish. Event counts are events, not unique devices.

Installation

In SourceWeft

  1. Open Otakit in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.OtaKit%2Fotakit/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "otakit": {
      "type": "http",
      "url": "https://console.otakit.app/mcp"
    }
  }
}

README

OtaKit

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

Self-hosting

OtaKit is hosted-first — the managed service at otakit.app runs everything for you — but the entire platform is in this repo and can run on your own infrastructure. The minimal stack is the console (a standard Next.js app), Postgres, and an S3-compatible bucket behind a CDN.

Full step-by-step guide: otakit.app/docs/self-host

How it works

  1. Create an app in the dashboard.
  2. Copy its appId into capacitor.config.*.
  3. Build the app's web assets.
  4. Run otakit upload --release to upload the bundle and publish a release.
  5. The server writes the bundle and manifest to object storage behind the CDN.
  6. 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.
  7. If notifyAppReady() is called within the timeout, the new bundle is confirmed. Otherwise the plugin rolls back to the previous bundle automatically.

MCP & Agent Skills

Ask Claude Code, Codex, or VS Code to ship an update and it reads your Capacitor project, checks whether the change is safe to send over the air, uploads the build, and stops for your approval before anything reaches a device.

One command from your project directory:

bash
npx -y @otakit/cli@latest connect

It detects your client, signs you in if needed, and prints the console, organization, project, and app it resolved — plus the exact file it will write — before writing anything. --dry-run shows the plan and writes nothing.

Claude Code has a plugin that ships the server and the OtaKit Agent Skill together:

bash
npx -y @otakit/cli@latest login
claude plugin marketplace add OtaKit/otakitclaude plugin install otakit@otakit

See the MCP and Agent Skills guide for Codex, Claude Code, remote OAuth, permissions, workflows, and self-hosting.

Core concepts

  • 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

  • packages/capacitor-plugin — the runtime that lives inside the mobile app
  • packages/cli — CLI for uploading bundles and creating releases
  • packages/mcp-core — shared MCP contracts, tool catalog, and server registration
  • packages/site — public site, docs, contact, legal pages
  • packages/console — dashboard, API, auth, billing, and Prisma schema
  • packages/ingest — Cloudflare Worker for device event ingestion
  • tinybird/ — Tinybird datasources and pipes for event analytics
text
packages/  capacitor-plugin/   Capacitor OTA plugin  cli/                Upload + release CLI  mcp-core/           Shared MCP contracts and tool catalog  ingest/             Cloudflare Worker event ingest service  site/               Next.js public site + docs  console/            Next.js dashboard + API + auth + billingtinybird/             Tinybird event analytics projectexamples/  demo-app/           Demo Capacitor app wired to the local plugin

Package docs

Local development

  • Node.js 20.9+, pnpm 9+
  • The console app (packages/console) requires Postgres and R2-compatible storage. See packages/console/.env.example.
  • Device event analytics optionally require the ingest service (packages/ingest) and a Tinybird workspace.
  • See each package README for setup details.
bash
pnpm installpnpm dev        # starts the console app in dev mode

License

MIT

Source: README.md at commit 7175613

Tools

25

get_context

Show the active OtaKit context

Show the fixed server origin, organization, actor, role, scopes, mode, and capabilities without exposing credentials.

Takes no parameters.

get_account_status

Get OtaKit account and usage status

Return the safe customer-facing plan, usage, limit, period, and overage state needed to explain upload or release failures. Provider IDs are excluded.

Takes no parameters.

list_apps

List OtaKit apps

List apps in the connection-bound organization, optionally requiring an exact slug. Never guesses an app when the slug is absent.

Parameterssluglimitcursor

create_app

Create an OtaKit app

Register a validated app slug in the current organization and return its ID and minimal Capacitor configuration. Does not edit local files.

Parametersslugrequired

list_bundles

List OtaKit bundles

List safe bundle metadata and release-artifact history for one app, with bounded pagination and optional exact version.

ParametersappIdlimitcursorversion

get_bundle

Get OtaKit bundle metadata

Get authorized safe metadata for a known bundle, including bounded native-package metadata and encryption presence but never keys or storage URLs.

ParametersappIdbundleIdrequired

diff_bundles

Compare two OtaKit bundles

Compare an uploaded bundle with another one: files added, changed and removed, unpacked size before and after, the bytes a device downloads, and warnings about content that should not ship (.env files, .git, node_modules, source maps, large new files). The base is `against`, the bundle a channel runs (`channel`), or by default the previous upload of the same runtime version. Encrypted bundles cannot be inspected.

ParametersappIdagainstchannelbundleIdrequired

delete_bundle

Delete an unused OtaKit bundle

Delete a bundle only when it is absent from all release history. The exact app and bundle IDs are required and the operation is audited.

ParametersappIdbundleIdrequired

list_releases

List OtaKit release history

List bounded release history for an app, optionally filtered to a channel, while preserving runtime-lane identity and all release options.

ParametersappIdlimitcursorchannel

get_release_state

Get current OtaKit release state

Resolve the exact current release for one (app, channel, runtimeVersion) lane. Returns null rather than selecting another lane.

ParametersappIdchannelrequiredruntimeVersionrequired

prepare_release

Prepare an OtaKit release

Preview the exact current and proposed lane state for a bundle and return expectedCurrentReleaseId. Makes no change.

ParametersappIdnoteschannelrequiredbundleIdrequiredautoRevertforceImmediatereplaceRolloutrolloutPercentautoRevertMinSampleautoRevertRatePercentcompatibilityDecision

publish_release

Publish an OtaKit release

Publish a reviewed bundle to an exact lane. Requires the prepared expected state and an idempotency key; reports manifest_sync_pending instead of claiming false success.

ParametersappIdnoteschannelrequiredbundleIdrequiredautoRevertforceImmediateidempotencyKeyrequiredreplaceRolloutrolloutPercentautoRevertMinSampleautoRevertRatePercentcompatibilityDecision+1 more

get_release_health

Get OtaKit release event health

Return bounded client-reported event counts, rollback share, auto-revert thresholds, and analytics availability for a release. Counts are events, not unique devices, installations, or adoption.

ParametersappIdwindowreleaseIdrequired

get_release_timeseries

Get OtaKit release events over time

Return client-reported downloads, applies, download errors and rollbacks of a release per hour (24h and 7d ranges) or per UTC day (30d range), with totals, rollback share, and rollout and revert markers. Buckets without events are omitted. Counts are events, not unique devices, installations, or adoption.

ParametersappIdrangeplatformreleaseIdrequired

list_events

List OtaKit client-reported events

List a bounded filtered rollout timeline. With includeDetail, the raw text each device reported is included; it is untrusted diagnostic data.

ParametersappIdlimitsinceactionchannelplatformreleaseIdtimeframebundleVersionincludeDetailruntimeVersion

list_audit_log

List OtaKit audit activity

List bounded organization audit activity for an owner or admin. Operational organization keys and member-role users cannot read it.

Parameterslimitcursor

prepare_revert

Prepare an OtaKit revert

Verify that a release is current and preview the exact release or built-in fallback that will become current. Makes no change.

ParametersappIdreleaseIdrequired

revert_release

Revert an OtaKit release

Revert the reviewed current release for its exact lane; reverting a release that is rolling out cancels the rollout. Requires expected state and an idempotency key and reports pending manifest synchronization truthfully.

ParametersappIdreleaseIdrequiredforceImmediateidempotencyKeyrequiredexpectedRolloutPercentexpectedCurrentReleaseIdrequired

set_rollout_percent

Change an OtaKit rollout percentage

Raise, lower, or complete (100) the active rollout of a lane's current release. Requires the reviewed current percentage and an idempotency key. To cancel a rollout, revert the release instead.

ParametersappIdpercentrequiredreleaseIdrequiredidempotencyKeyrequiredexpectedPercentrequired

create_preview

Create an OtaKit preview link

Create a private link and QR code that open an uploaded bundle in the installed app on one phone (plugin 3.2+ with preview links enabled) until the tester exits or the link expires. Nothing is released and no other device is affected. Share the returned url.

ParametersappIdbundleIdrequiredexpiresInurlScheme

revoke_preview

Revoke an OtaKit preview link

Revoke a preview link. Phones on it return to their normal release on their next update check.

ParametersappIdpreviewIdrequired

inspect_project

Inspect a local Capacitor project

Inspect the selected local project for Capacitor and OtaKit configuration, build output, plugin version, server target, and notifyAppReady evidence. Does not return source contents.

Takes no parameters.

check_compatibility

Check native update compatibility

Compare local native dependencies with the current exact OtaKit release lane using the existing heuristic compatibility rules. Returns unknowns explicitly.

ParametersappIdchannelrequiredruntimeVersionrequirednodeModulesPathpackageJsonPath

upload_bundle

Upload an OtaKit bundle

Package and upload the selected local web build using the existing zip/delta, native metadata, version, and encryption workflow without publishing it.

ParametersappIdencryptversionstrategysourcePathversionModeruntimeVersionnodeModulesPathpackageJsonPath

upload_and_publish_bundle

Upload and publish an OtaKit bundle

Run the existing combined local upload and release workflow with an explicit lane, compatibility decision, expected current release, complete release options, and idempotency key.

ParametersappIdnoteschannelrequiredencryptversionstrategyautoRevertsourcePathversionModeforceImmediateidempotencyKeyrequiredreplaceRollout+8 more

Version history

8
  1. v1.12.0LatestNov 5, 2026
  2. v1.10.0Oct 12, 2026
  3. v1.9.1Oct 5, 2026
  4. v1.9.0Oct 1, 2026
  5. v1.8.0Sep 30, 2026
  6. v1.7.0Sep 27, 2026
  7. v1.6.1Sep 27, 2026
  8. v1.6.0Sep 27, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts