Package & publish
A release of your app is a .mpk package: a gzip-compressed archive with your WASM, its ABI and a signed
manifest.json naming the package and version. Clusters install packages only from a registry, and every node that
runs one checks its signature and the digest of each WASM file before it runs.
-
Create a signing key, once. The key is your app’s identity: a new version must be signed by the same key, or it is a different app.
Terminal window mero-sign generate-key --output my-signing-key.json# signerId: did:key:z6Mk...Keep the file secret and out of version control.
-
Bundle and sign the release:
Terminal window cargo mero bundle --key my-signing-key.jsonIt builds every service, writes and signs
manifest.json, and writesdist/<package>-<version>.mpk. It also wants an icon:icon = "<path>"under[package.metadata.calimero], or--no-icon. The version comes from your crate’s version;--bump patch|minor|majortakes the next one. -
Publish it to the Calimero app registry with an API key:
Terminal window export CALIMERO_API_KEY=...cargo mero publish dist/com.example.my-app-1.0.0.mpkThe registry checks the signature on upload, and that the package’s
authormatches your registry account. You can also upload a.mpkfrom the Calimero Cloud console’s Registry page.
Private and public packages
Section titled “Private and public packages”A package belongs to the Cloud organization that publishes it and is private by default: only that organization can deploy it. Making it public lists it for everyone, after a registry review.
Deploy it on Calimero Cloud, then create an instance for each organization that uses it.
The manifest format and the exact checks a node runs on install are in the core reference’s Packaging & signing.