Skip to content

Plugins

Pumpkin provides a WebAssembly (WASM) plugin runtime with capability-based security. Plugin behavior, signature verification, and permissions are configured under [plugins] in pumpkin.toml.

Configuration

toml
[plugins]
enabled = true
hot_reload = false
ask_permission_confirmation = true
allow_unsigned = true
allowed_permissions = []
blocked_permissions = []
inherit_env = false
loopback_only = false
verify_signatures = true

# Optional per-plugin overrides
[plugins.overrides.my_plugin]
enabled = true
allow_unsigned = true
max_memory_mb = 128
allowed_permissions = ["fs:read:data"]
blocked_permissions = ["network:outbound"]
loopback_only = true

[plugins.overrides.my_plugin.environment]
API_KEY = "example_secret"

Global Plugin Settings

  • enabled: Master switch to enable or disable the plugin runtime (default: true).
  • hot_reload: Watch the plugins/ directory and automatically reload modified plugins at runtime (default: false).
  • ask_permission_confirmation: Prompt in the server console when a plugin requests unapproved capabilities/permissions (default: true).
  • allow_unsigned: Allow loading unsigned WASM plugins (default: true).
  • allowed_permissions: List of permissions globally pre-approved for all plugins, bypassing interactive console prompts (default: []).
  • blocked_permissions: List of permissions globally denied to all plugins (default: []).
  • inherit_env: Whether host environment variables are inherited into plugin WASI sandboxes by default (default: false).
  • loopback_only: Whether outbound network connections from plugins are restricted to 127.0.0.1 / localhost (default: false).
  • max_memory_mb: (Optional) Global maximum memory limit in megabytes (MB) per plugin instance.
  • verify_signatures: Whether Pumpkin verifies cryptographic signatures on WASM plugins before loading (default: true).

Per-Plugin Overrides

Fine-tune permissions and environment variables for specific plugins under [plugins.overrides.<plugin_name>]:

  • enabled: Enable or disable this specific plugin (default: true).
  • allow_unsigned: Override whether this specific plugin can run unsigned (true/false).
  • max_memory_mb: Maximum memory limit in MB allocated specifically for this plugin.
  • allowed_permissions: Pre-approved permissions for this plugin.
  • blocked_permissions: Explicitly blocked permissions for this plugin.
  • loopback_only: Override loopback network restriction for this plugin.
  • environment: Table of custom environment variables passed directly into the plugin's WASI environment.

Released under the MIT License.