Start from the current source
Native plugins use protocol v2 and the Rust crates in cloud-plugin-sdk. Use the independent Echo demo as a small reference. Pin all shared SDK crates to one reviewed, exact Git commit and commit the Cargo lockfile. The platform’splugins/ directories are compatibility, test and UI snapshots during migration. They are not the release build context for independent repositories. See source ownership (plugins/README.md) and release workflow.
New shared or self-hosted PostgreSQL orders are disabled. The PostgreSQL plugin maintains existing resources; Neon BYOK is the current default for new database connections.
Implement and validate
- Follow the repository’s README, pinned toolchain and committed lockfile.
- Declare only the actions, capabilities and host services the plugin uses in its manifest.
- Use the matching protocol validator. A TypeScript v1 validator does not validate a native v2 release.
- Test against owned, disposable fixtures. Keep provider keys and tenant data out of source, image layers and logs.
- Release an immutable image and exact descriptors, then pass the separate registry signature gate.
- Have an operator configure the required bindings and approve installation. Publication does not grant customer access.
TypeScript extension tooling
For retained protocol-v1 TypeScript extensions, the authoring packages are@spitzli/plugin-sdk and @spitzli/cli. Install the CLI with
npm install --global @spitzli/cli, then use spitzli-cloud plugin --help.
The old webdock executable remains an alias. These local tools do not publish,
install or deploy plugins, and their v1 contracts do not replace the native Rust SDK.