Skip to main content
Plugins run outside Core. Their containers implement declared actions and use scoped host services; they do not receive Core database credentials, signing keys or cluster administration access. Core checks identity, workspace/project permissions, installation state, capabilities, runtime generation and current grants before executing work.

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’s plugins/ 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

  1. Follow the repository’s README, pinned toolchain and committed lockfile.
  2. Declare only the actions, capabilities and host services the plugin uses in its manifest.
  3. Use the matching protocol validator. A TypeScript v1 validator does not validate a native v2 release.
  4. Test against owned, disposable fixtures. Keep provider keys and tenant data out of source, image layers and logs.
  5. Release an immutable image and exact descriptors, then pass the separate registry signature gate.
  6. Have an operator configure the required bindings and approve installation. Publication does not grant customer access.
Native runtime RPC uses authenticated private Unix sockets or mutual TLS. Legacy Elysia extensions retain their separately enrolled HTTPS transport and protocol-v1 contract. Do not change a protocol version to migrate a runtime.

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.

Availability

As of 1 November 2026, the nine native repositories, Managed CMS and shared SDK have independent releases. Their images and release assets are published. All ten new plugin releases have registry metadata and verified signatures from the established registry key. Provider entries still require their dedicated runtime bindings. Publication is not proof of customer activation or general installation readiness. The previous private GitHub source-import build workflow is retired. Do not use older source-installer instructions or route unknown customer source to the trusted maintainer runner. Public customer build readiness is a separate qualification. Continue with the manifest contract, background jobs and API/MCP integration.