📦 bundle
📦 Manage app bundles for deployment in Capgo Cloud, including upload, compatibility checks, and encryption.
⬆️ Upload
Alias: u
npx @capgo/cli@latest bundle upload⬆️ Upload a new app bundle to Capgo Cloud for distribution. Version must be > 0.0.0 and unique. Deleted versions cannot be reused for security. External option: Store only a URL link (useful for apps >200MB or privacy requirements). Capgo never inspects external content. Add encryption for trustless security.
Example:
npx @capgo/cli@latest bundle upload com.example.app --path ./dist --channel productionOptions:
| Param | Type | Description |
|---|---|---|
| -a, | string | API key to link to your account |
| -p, | string | Path of the folder to upload, if not provided it will use the webDir set in capacitor.config |
| -c, | string | Channel to link to |
| -e, | string | Link to external URL instead of upload to Capgo Cloud |
| —iv-session-key | string | Set the IV and session key for bundle URL external |
| —s3-region | string | Region for your S3 bucket |
| —s3-apikey | string | API key for your S3 endpoint |
| —s3-apisecret | string | API secret for your S3 endpoint |
| —s3-endpoint | string | URL of S3 endpoint |
| —s3-bucket-name | string | Name for your AWS S3 bucket |
| —s3-port | string | Port for your S3 endpoint |
| —no-s3-ssl | boolean | Disable SSL for S3 upload |
| —key-v2 | string | Custom path for private signing key (v2 system) |
| —key-data-v2 | string | Private signing key (v2 system) |
| —bundle-url | boolean | Prints bundle URL into stdout |
| —no-key | boolean | Ignore signing key and send clear update |
| —no-code-check | boolean | Ignore checking if notifyAppReady() is called in source code and index present in root folder |
| —display-iv-session | boolean | Show in the console the IV and session key used to encrypt the update |
| -b, | string | Bundle version number of the bundle to upload |
| —link | string | Link to external resource (e.g. GitHub release) |
| —comment | string | Comment about this version, could be a release note, a commit hash, a commit message, etc. |
| —min-update-version | string | Minimal version required to update to this version. Used only if the disable auto update is set to metadata in channel |
| —auto-min-update-version | boolean | Set the min update version based on native packages |
| —ignore-metadata-check | boolean | Ignores the metadata (node_modules) check when uploading |
| —ignore-checksum-check | boolean | Ignores the checksum check when uploading |
| —timeout | string | Timeout for the upload process in seconds |
| —multipart | boolean | [DEPRECATED] Use —tus instead. Uses multipart protocol for S3 uploads |
| —zip | boolean | Upload the bundle using zip to Capgo cloud (legacy) |
| —tus | boolean | Upload the bundle using TUS to Capgo cloud |
| —tus-chunk-size | string | Chunk size in bytes for TUS resumable uploads (default: auto) |
| —partial | boolean | [DEPRECATED] Use —delta instead. Upload incremental updates |
| —partial-only | boolean | [DEPRECATED] Use —delta-only instead. Upload only incremental updates, skip full bundle |
| —delta | boolean | Upload incremental/differential updates to reduce bandwidth |
| —delta-only | boolean | Upload only delta updates without full bundle (useful for large apps) |
| —encrypted-checksum | string | An encrypted checksum (signature). Used only when uploading an external bundle. |
| —auto-set-bundle | boolean | Set the bundle in capacitor.config.json |
| —dry-upload | boolean | Dry upload the bundle process, mean it will not upload the files but add the row in database (Used by Capgo for internal testing) |
| —package-json | string | Paths to package.json files for monorepos (comma-separated) |
| —node-modules | string | Paths to node_modules directories for monorepos (comma-separated) |
| —encrypt-partial | boolean | Encrypt delta update files (auto-enabled for updater > 6.14.4) |
| —delete-linked-bundle-on-upload | boolean | Locates the currently linked bundle in the channel you are trying to upload to, and deletes it |
| —no-brotli-patterns | string | Files to exclude from Brotli compression (comma-separated globs, e.g., “.jpg,.png”) |
| —disable-brotli | boolean | Completely disable brotli compression even if updater version supports it |
| —version-exists-ok | boolean | Exit successfully if bundle version already exists, useful for CI/CD workflows with monorepos |
| —self-assign | boolean | Allow devices to auto-join this channel (updates channel setting) |
| —supa-host | string | Custom Supabase host URL (for self-hosting or Capgo development) |
| —supa-anon | string | Custom Supabase anon key (for self-hosting) |
🧪 Compatibility
npx @capgo/cli@latest bundle compatibility🧪 Check compatibility of a bundle with a specific channel in Capgo Cloud to ensure updates are safe.
Example:
npx @capgo/cli@latest bundle compatibility com.example.app --channel productionOptions:
| Param | Type | Description |
|---|---|---|
| -a, | string | API key to link to your account |
| -c, | string | Channel to check the compatibility with |
| —text | boolean | Output text instead of emojis |
| —package-json | string | Paths to package.json files for monorepos (comma-separated) |
| —node-modules | string | Paths to node_modules directories for monorepos (comma-separated) |
| —supa-host | string | Custom Supabase host URL (for self-hosting or Capgo development) |
| —supa-anon | string | Custom Supabase anon key (for self-hosting) |
🗑️ Delete
Alias: d
npx @capgo/cli@latest bundle delete🗑️ Delete a specific bundle from Capgo Cloud, optionally targeting a single version.
Example:
npx @capgo/cli@latest bundle delete BUNDLE_ID com.example.appOptions:
| Param | Type | Description |
|---|---|---|
| -a, | string | API key to link to your account |
| —supa-host | string | Custom Supabase host URL (for self-hosting or Capgo development) |
| —supa-anon | string | Custom Supabase anon key (for self-hosting) |
📋 List
Alias: l
npx @capgo/cli@latest bundle list📋 List all bundles uploaded for an app in Capgo Cloud.
Example:
npx @capgo/cli@latest bundle list com.example.appOptions:
| Param | Type | Description |
|---|---|---|
| -a, | string | API key to link to your account |
| —supa-host | string | Custom Supabase host URL (for self-hosting or Capgo development) |
| —supa-anon | string | Custom Supabase anon key (for self-hosting) |
🧹 Cleanup
Alias: c
npx @capgo/cli@latest bundle cleanup🧹 Delete old bundles in Capgo Cloud, keeping specified number of recent versions. Bundles linked to channels are preserved unless —ignore-channel is used.
Example:
npx @capgo/cli@latest bundle cleanup com.example.app --bundle=1.0 --keep=3Options:
| Param | Type | Description |
|---|---|---|
| -b, | string | Bundle version number of the app to delete |
| -a, | string | API key to link to your account |
| -k, | string | Number of versions to keep |
| -f, | string | Force removal |
| —ignore-channel | boolean | Delete bundles even if linked to channels (WARNING: deletes channels too) |
| —supa-host | string | Custom Supabase host URL (for self-hosting or Capgo development) |
| —supa-anon | string | Custom Supabase anon key (for self-hosting) |
🔒 Encrypt
npx @capgo/cli@latest bundle encrypt🔒 Encrypt a zip bundle for secure external storage. Returns ivSessionKey for upload/decryption. Get checksum using ‘bundle zip —json’.
Example:
npx @capgo/cli@latest bundle encrypt ./myapp.zip CHECKSUMOptions:
| Param | Type | Description |
|---|---|---|
| —key | string | Custom path for private signing key |
| —key-data | string | Private signing key |
| -j, | string | Output in JSON |
🔓 Decrypt
npx @capgo/cli@latest bundle decrypt🔓 Decrypt an encrypted bundle (mainly for testing). Prints base64 session key for verification.
Example:
npx @capgo/cli@latest bundle decrypt ./myapp_encrypted.zip CHECKSUMOptions:
| Param | Type | Description |
|---|---|---|
| —key | string | Custom path for private signing key |
| —key-data | string | Private signing key |
| —checksum | string | Checksum of the bundle, to verify the integrity of the bundle |
🔹 Zip
npx @capgo/cli@latest bundle zip🗜️ Create a zip file of your app bundle. Returns checksum for use with encryption. Use —json for machine-readable output.
Example:
npx @capgo/cli@latest bundle zip com.example.app --path ./distOptions:
| Param | Type | Description |
|---|---|---|
| -p, | string | Path of the folder to upload, if not provided it will use the webDir set in capacitor.config |
| -b, | string | Bundle version number to name the zip file |
| -n, | string | Name of the zip file |
| -j, | string | Output in JSON |
| —no-code-check | boolean | Ignore checking if notifyAppReady() is called in source code and index present in root folder |
| —key-v2 | boolean | Use encryption v2 |
| —package-json | string | Paths to package.json files for monorepos (comma-separated) |