Skip to main content
Plugins add publisher-defined node types without mounting publisher React code inside the editor. Configuration is rendered from JSON Schema using host controls, and execution uses the exact plugin/node version and package integrity pinned into the workflow.

Plugin, package, and node

A workflow pin prevents an installed package update from silently changing the code used by an already reviewed revision.
The sndbox plugin marketplace showing the real Gmail, Slack, and Discord integrations

The implemented plugin marketplace and its included integrations

In the product

The Plugins area separates discovery from installed packages. Before installation, sndbox inspects identity, publisher key, archive integrity, node schemas, capabilities, network domains, credentials, storage, price metadata, and permission expansion. An installed package can be disabled, enabled after approval, updated, or revoked. Development packages carry a persistent Development label, remain disabled in production workspaces, and are excluded from exports unless explicitly included.

Review before enabling

Check four layers:
  1. Identity: publisher, signing key, repository, package version, and archive digest.
  2. Surface: node schemas, inputs, outputs, connection requirements, and external-effect classification.
  3. Capabilities: network domains, file inputs, storage, credentials, and broker calls.
  4. Change: new permissions, schema migrations, removed nodes, and workflows pinned to the old version.
Install does not imply enablement, and an update that expands permissions requires a fresh decision. Keep the package disabled until the review matches the environment where it will run.

Execution boundary

The Wasmtime host does not link general WASI, so guest code has no ambient filesystem, process, environment, or socket access. Its only import is the typed sandbox_v1::host_call broker. Every call must be declared by the plugin, referenced by the node, approved for the owner/workspace, and allowed by current policy. The broker is enforcement, not a guarantee that a declared destination is trustworthy. Review the plugin’s data flow, response-size limits, redaction expectations, and behavior when a host call fails or is denied.

Start developing

Use the public @sandbox/plugin-sdk package and sandbox plugin CLI. The npm scope and compatibility class names keep the historical sandbox spelling, while the product and documentation use sndbox.

Create a plugin

Scaffold a Rust guest, manifest, icon, docs, and tests.

Review the manifest

Define nodes, credentials, capabilities, domains, storage, migrations, and trust.
Continue with Capabilities and permissions for the enforcement model, Testing plugins for fixtures and denial cases, and Publishing for marketplace review.