Skip to main content
Search people, posts, videos and communities

Local development toolchain

Jotify CLI

Create manifests, validate permissions, preview extensions in a device shell and upload digest-bound draft versions with a signed artifact.

Create and validate

The CLI creates a credential-free jotify.app.json manifest. Validation rejects wildcard scopes, cross-target surfaces, traversal paths, embedded secrets and oversized manifests.

npm run jotify:app -- app init my-extension --name "My extension" --target site
cd my-extension
npm run jotify:app -- app validate

Local simulator

The simulator binds to loopback by default, injects no credentials and lets you inspect approved desktop, tablet and mobile extension frames.

jotify app dev --host 127.0.0.1 --port 4173

Deterministic bundle

Pack creates a bounded .jotifyapp artifact with sorted file paths, per-file SHA-256 hashes and an aggregate digest. Symlinks, environment files, traversal paths and oversized assets fail closed.

jotify app pack --output dist/my-extension.jotifyapp

Draft deployment and rollback review

CLI deployment uploads a draft version tied to its digest. Submitted and approved versions are immutable. Rollback creates a review request and never activates a version directly.

jotify app deploy dist/my-extension.jotifyapp
jotify app versions
jotify app rollback 1.2.0 --reason "Regression in the current release"

Signed artifact retrieval

Artifact links expire after 15 minutes, are bound to the app, version and SHA-256 digest, and are rechecked against the stored bytes before download. Do not cache or publish a signed URL.

POST /api/app-platform/versions/:version/artifact
GET  /api/app-platform/versions/:version/artifact?appId=...&expires=...&sig=...
Next: OAuth and user consent