Server plugins let the SUPERCLI server distribute plugin capabilities to CLI clients during supercli sync.
json: manifest-only plugins for simple command wrappers or remote integrations.zip: packaged plugins for assets such asskills/, hook scripts, and auxiliary files.
- Client runs
supercli syncwithSUPERCLI_SERVERconfigured. - Client fetches
/api/configand/api/plugins?format=json. - Client downloads only changed enabled server plugins by checksum.
- Client stores server plugins locally under
~/.supercli/plugins/server. - Runtime command graph merges base config + plugins.
- Local plugins always win over server plugins when names collide.
- Server plugins never override local-only plugins.
- Sync diagnostics include shadowing details (
shadowed_by_local).
- Server plugin records include
enabled. enabled=falseremoves the plugin from effective server-synced state on next sync.- This only affects server-distributed plugins.
- Hook execution is policy-driven, not environment-variable-driven.
- Effective policy resolution:
- per-plugin
hooks_policy(allow|deny|inherit) - fallback to global server default (
settings.default_hooks_policy)
- per-plugin
- When denied, plugin sync still succeeds and reports skipped hooks.
- Default max ZIP size:
10MB(configurable via server plugin settings). - ZIP payload validation includes:
- ZIP signature check
- unsafe path detection (
../, absolute paths, drive roots) - uncompressed-size threshold checks
- Client plugin root:
~/.supercli/plugins - Local plugin lock:
~/.supercli/plugins/plugins.lock.json - Server plugin lock:
~/.supercli/plugins/server.lock.json - Server plugin content:
~/.supercli/plugins/server/<name>/<version>/
GET /api/plugins?format=jsonlist plugins + settingsPOST /api/pluginscreate/update JSON pluginPOST /api/plugins/uploadupload ZIP plugin (multipart or JSON base64)PATCH /api/plugins/:nameupdate metadata (enabled,hooks_policy)DELETE /api/plugins/:nameremove pluginGET /api/plugins/:name/manifestfetch manifestGET /api/plugins/:name/archivefetch ZIP payloadGET /api/plugins/settingsandPUT /api/plugins/settingsmanage defaults