Plugin Marketplace and Integration Plan
si plugins ....
Related:
Goals
- Provide a fast, operator-friendly path to add integrations without modifying SI core code for every new ecosystem.
- Enforce namespaced plugin identity and safety checks before installation.
- Keep a catalog/marketplace model that can evolve from local-first to hosted registries.
- Support MCP-focused integrations (HTTP/SSE/stdio), provider metadata, and command hints.
OpenClaw Lessons Applied
The SI design intentionally mirrors proven OpenClaw patterns:- Manifest-first validation.
- Like OpenClaw’s
openclaw.plugin.json, SI requiressi.plugin.jsonand validates metadata before install/use.
- Discovery precedence.
- SI merges catalogs with clear precedence: built-in catalog, then
~/.si/plugins/catalog.json, then~/.si/plugins/catalog.d/*.json.
- Safe installation boundaries.
- SI uses safe install path resolution to prevent traversal escapes from
~/.si/plugins/installed. - Plugin source trees are copied without following symlinks.
- Lifecycle + diagnostics UX.
- SI exposes list/info/install/uninstall/enable/disable/doctor/register/scaffold workflows.
si plugins doctorsurfaces catalog and install-state problems in machine-readable JSON and human text.
- Explicit enable-state.
- Install records track
enabledseparately from catalog metadata so operators can stage plugins safely.
Manifest Contract (si.plugin.json)
Minimum required shape:
idmust be namespaced as<namespace>/<name>using lowercase segments.namespacemust matchidprefix.install.typeallowed values:nonelocal_pathmcp_httpoci_imagegit
- Optional legal/compliance metadata:
terms_urlprivacy_urllicense
- Optional integration metadata:
integration.provider_idsintegration.commandsintegration.mcp_serversintegration.capabilities
Marketplace Sources
SI now loads catalog entries from:- Embedded built-in catalog (
si/browser-mcpseeded as core). - User catalog file:
~/.si/plugins/catalog.json. - User catalog directory:
~/.si/plugins/catalog.d/*.json. - Optional env overrides via
SI_PLUGIN_CATALOG_PATHS(comma/semicolon/path-list separated file/dir paths).
Runtime State and Files
- Root:
~/.si/plugins - Install root:
~/.si/plugins/installed - Install state:
~/.si/plugins/state.json - User catalog:
~/.si/plugins/catalog.json
- plugin id
- enabled flag
- source (
catalog:<id>orpath:<absolute-path>) - install directory (when copied locally)
- timestamp
- normalized manifest snapshot
CLI Workflows
si plugins list [--installed] [--json]si plugins info <id> [--json]si plugins install <id-or-path> [--disabled] [--json]si plugins update <id>|--all [--json]si plugins uninstall <id> [--keep-files] [--json]si plugins enable|disable <id> [--json]si plugins policy show [--json]si plugins policy set [--enabled <true|false>] [--allow <id>]... [--deny <id>]... [--clear-allow] [--clear-deny] [--json]si plugins doctor [--json]si plugins register [--manifest <path>|<path>] [--channel <name>] [--verified] [--json]si plugins scaffold <namespace/name> [--dir <path>] [--force] [--json]si plugins catalog build --source <path> [--output <path>] [--channel <name>] [--verified] [--tag <value>]... [--added-at YYYY-MM-DD] [--json]si plugins catalog validate --source <path> [--json]
catalog_sourceinsi plugins list --jsoncatalog_sourceinsi plugins info --json- override diagnostics report both new and previous source when ids collide
External Catalog Packs
For large integration ecosystems, keep manifests in a separate repository and generate catalog artifacts for SI consumption. Example with the siblingsi-integrations repository:
Quick Integration Onboarding Flow
- Scaffold plugin metadata:
-
Fill manifest details (
terms_url,privacy_url, MCP/provider metadata). - Register into local marketplace catalog:
- Install and stage:
- Validate:
Security Baseline
- Strict namespaced IDs to avoid collisions.
- Safe install-dir resolution to prevent path escape.
- Symlink copy rejection for local installs.
- Doctor checks for manifest mismatch, missing files, and unsafe install paths.
Future Work
- Signed catalog bundles and trust policy.
- Remote package fetch and verification pipeline.
- Policy controls (allow/deny lists and slot ownership) similar to OpenClaw’s advanced plugin config.
- Optional compatibility contracts for SI command/runtime versions.
