User GuidePlugin Marketplace

Plugin Marketplace

The Plugin Marketplace is a centralized repository of plugins that extend StudioBrain’s functionality. Browse, install, and manage plugins directly from the application.

Overview

The Plugin Marketplace allows you to:

  • Browse available plugins with search and filtering
  • Install plugins from the marketplace registry
  • Activate/Deactivate plugins per tenant
  • Enable/Disable installed plugins (tenant-scoped operations)
  • Uninstall plugins from your tenant
  • Rate and Review plugins (coming soon)
  • View Health Status of plugins (admin feature)

Accessing the Marketplace

Via UI

  1. Navigate to Settings > Plugins > Marketplace
  2. Browse or search for plugins
  3. Click Install to add a plugin
  4. Click Activate to enable the plugin for your tenant

Via API

All marketplace operations are available through REST API endpoints (see API Reference below).

Marketplace Categories

Plugins are organized into categories:

Creative Tools

  • ComfyUI Workflows - Run image generation workflows
  • Voice Forge - AI voice synthesis
  • Music Gen - Background music generation
  • LoRA Trainer - Custom model training

Export & Publishing

  • PDF Exporter - Export to PDF documents
  • Showrunner Exporter - TV production format
  • UEFN Exporter - Unreal Editor for Fortnite
  • Unity Exporter - Unity data format
  • Unreal Exporter - Unreal Engine format

Integrations

  • Jira Sync - Jira issue tracking
  • Discord Poster - Discord notifications
  • Google Sheets Sync - Spreadsheet sync
  • Notion Sync - Notion database sync
  • Obsidian Vault - Markdown vault export
  • Webhook Automations - Custom webhooks
  • YouTube Manager - YouTube integration
  • Social Publisher - Social media posting

Project Management

  • Kanban Board - Production tracking
  • Time Tracker - Time logging
  • Version History - Version management

Development

  • Blender Bridge - 3D asset creation
  • Hello World - Developer example

Installing Plugins

Prerequisites

Before installing a plugin, ensure:

  1. You have an active StudioBrain subscription (limits vary by tier)
  2. The plugin is compatible with your entity types
  3. You have network access to the plugin’s backend (if applicable)

Tier Limits

TierMax Plugins
Free3
Solo/Indie10
TeamUnlimited
EnterpriseUnlimited
Self-hostedUnlimited

Note: Plugin limits are enforced at activation time, not installation. You can install plugins but won’t be able to activate them if you’ve reached your tier limit.

Installation Steps

  1. Browse the marketplace using search or categories
  2. Read the plugin description and reviews
  3. Click Install button
  4. The plugin is now installed but not activated

Activation

After installation:

  1. Go to Settings > Plugins
  2. Find your installed plugin
  3. Toggle Enable switch or use the API to activate
  4. Configure plugin-specific settings if needed

Marketplace API Reference

List Marketplace Plugins

GET /api/plugins/marketplace

Browse available plugins with filtering and pagination.

Query Parameters:

ParameterTypeDefaultDescription
categorystringnullFilter by category
searchstringnullFull-text search
featuredbooleanfalseOnly featured plugins
limitinteger50Max results (1-200)
offsetinteger0Pagination offset

Response:

{
  "plugins": [
    {
      "plugin_id": "comfyui_workflows",
      "name": "ComfyUI Workflows",
      "description": "Run ComfyUI image generation workflows",
      "author": "Biloxi Studios",
      "version": "1.0.0",
      "repository": "https://github.com/BiloxiStudios/...",
      "icon_url": "https://...",
      "category": "creative",
      "tags": ["ai", "image", "comfyui"],
      "min_tier": "free",
      "is_verified": true,
      "is_featured": true,
      "manifest": { /* plugin manifest */ },
      "average_rating": 4.8,
      "install_count": 1234
    }
  ],
  "total": 50,
  "limit": 50,
  "offset": 0
}

Get Plugin Info

GET /api/plugins/marketplace/{plugin_id}

Get details for a specific marketplace plugin.

Response:

{
  "plugin_id": "comfyui_workflows",
  "name": "ComfyUI Workflows",
  "description": "Run ComfyUI image generation workflows from within the entity editor.",
  "author": "Biloxi Studios",
  "version": "1.0.0",
  "repository": "https://github.com/BiloxiStudios/comfyui-plugin",
  "icon_url": "https://...",
  "category": "creative",
  "tags": ["ai", "image", "comfyui"],
  "min_tier": "free",
  "is_verified": true,
  "is_featured": true,
  "manifest": {
    "name": "ComfyUI Workflows",
    "version": "1.0.0",
    "author": "Biloxi Studios",
    "panels": [
      {
        "id": "workflow-panel",
        "name": "Workflow Runner",
        "entity_types": ["Character", "Location"]
      }
    ],
    "settings": {
      "comfyui_url": {
        "type": "text",
        "label": "ComfyUI Server URL",
        "required": true
      },
      "default_workflow": {
        "type": "select",
        "label": "Default Workflow",
        "options": ["portrait.yaml", "landscape.yaml"]
      }
    }
  },
  "created_at": "2025-06-15T10:00:00Z",
  "updated_at": "2026-02-20T14:30:00Z"
}

Get Marketplace Info

GET /api/plugins/marketplace/info

Return marketplace status, current tenant plugin count, and limits.

Response:

{
  "mode": "cloud",  // "cloud" or "self-hosted"
  "tier": "indie",
  "max_plugins": 10,
  "enabled_plugin_count": 4,
  "can_install_more": true
}

Install Marketplace Plugin

POST /api/plugins/marketplace/tenant/install

Install a plugin for the current tenant.

Request Body:

{
  "plugin_id": "comfyui_workflows",
  "source": "marketplace",
  "source_url": null
}

Response:

{
  "message": "Plugin 'comfyui_workflows' installed for tenant 'tenant-abc123'",
  "installation": {
    "installation_id": "inst-xyz789",
    "plugin_id": "comfyui_workflows",
    "enabled": false,
    "source": "marketplace",
    "installed_by": "user-456",
    "installed_at": "2026-03-10T10:00:00Z"
  }
}

Activate Marketplace Plugin

POST /api/plugins/marketplace/{plugin_id}/activate

Activate a marketplace plugin for the current tenant.

The plugin must exist in the marketplace registry (pre-installed in the Docker image). Activation creates or re-enables a plugin_installations row with source='marketplace' — no server restart is needed.

Response:

{
  "message": "Plugin 'comfyui_workflows' activated for tenant 'tenant-abc123'",
  "installation": {
    "installation_id": "inst-xyz789",
    "plugin_id": "comfyui_workflows",
    "enabled": true,
    "source": "marketplace",
    "installed_at": "2026-03-10T10:00:00Z",
    "updated_at": "2026-03-10T10:05:00Z"
  }
}

Deactivate Marketplace Plugin

POST /api/plugins/marketplace/{plugin_id}/deactivate

Deactivate a marketplace plugin for the current tenant.

Sets enabled=False on the plugin_installations row. The plugin backend routes continue to exist but PluginRegistry.is_plugin_enabled() will return False for this tenant.

Response:

{
  "message": "Plugin 'comfyui_workflows' deactivated for tenant 'tenant-abc123'",
  "installation": {
    "installation_id": "inst-xyz789",
    "plugin_id": "comfyui_workflows",
    "enabled": false,
    "source": "marketplace",
    "installed_at": "2026-03-10T10:00:00Z",
    "updated_at": "2026-03-10T10:10:00Z"
  }
}

List Tenant Plugins

GET /api/plugins/marketplace/tenant/installed

List plugins installed for the current tenant.

Query Parameters:

ParameterTypeDefaultDescription
enabled_onlybooleanfalseOnly enabled plugins

Response:

{
  "installations": [
    {
      "installation_id": "inst-xyz789",
      "plugin_id": "comfyui_workflows",
      "enabled": true,
      "source": "marketplace",
      "installed_by": "user-456",
      "installed_at": "2026-03-10T10:00:00Z",
      "updated_at": "2026-03-10T10:05:00Z"
    }
  ]
}

Enable Installed Plugin

POST /api/plugins/marketplace/tenant/{plugin_id}/enable

Enable an installed plugin for the current tenant.

Tier Limit: Plugin limits are enforced at activation time. If you’ve reached your tier limit, you’ll need to disable another plugin first.

Response:

{
  "message": "Plugin 'comfyui_workflows' enabled",
  "installation": {
    "installation_id": "inst-xyz789",
    "plugin_id": "comfyui_workflows",
    "enabled": true,
    "source": "marketplace",
    "installed_at": "2026-03-10T10:00:00Z",
    "updated_at": "2026-03-10T10:15:00Z"
  }
}

Disable Installed Plugin

POST /api/plugins/marketplace/tenant/{plugin_id}/disable

Disable an installed plugin for the current tenant.

Response:

{
  "message": "Plugin 'comfyui_workflows' disabled",
  "installation": {
    "installation_id": "inst-xyz789",
    "plugin_id": "comfyui_workflows",
    "enabled": false,
    "source": "marketplace",
    "installed_at": "2026-03-10T10:00:00Z",
    "updated_at": "2026-03-10T10:20:00Z"
  }
}

Uninstall Plugin

DELETE /api/plugins/marketplace/tenant/{plugin_id}

Uninstall a plugin for the current tenant.

Warning: This removes all installation metadata. The plugin will need to be reinstalled to be used again.

Response:

{
  "message": "Plugin 'comfyui_workflows' uninstalled for tenant 'tenant-abc123'"
}

Plugin Health Summary

GET /api/plugins/marketplace/health/summary

Return in-process plugin health counters (admin feature).

Shows activation failure counts and circuit breaker status for all plugins that have experienced failures since the last process restart.

This data is also emitted as structured log lines with the tag plugin_health and consumed by Grafana/Loki.

Response:

{
  "healthy_plugins": true,
  "plugins_with_failures": 2,
  "detail": {
    "comfyui_workflows": {
      "failures": 0,
      "circuit_open": false,
      "last_failure": null,
      "affected_tenant_count": 0
    },
    "jira_sync": {
      "failures": 3,
      "circuit_open": true,
      "last_failure": "2026-03-10T09:30:00Z",
      "affected_tenant_count": 5
    }
  }
}

Response Fields:

FieldTypeDescription
healthy_pluginsbooleanTrue if no plugins have circuit open
plugins_with_failuresintegerNumber of plugins with recorded failures
detailobjectPer-plugin health details

Per-Plugin Detail Fields:

FieldTypeDescription
failuresintegerTotal activation failures since restart
circuit_openbooleanTrue if plugin was auto-disabled after 3 failures
last_failurestringISO timestamp of most recent failure (null if none)
affected_tenant_countintegerNumber of distinct tenants affected

Plugin Health Detail (Single Plugin)

GET /api/plugins/marketplace/health/{plugin_id}

Return health detail for a single plugin.

Returns 200 with circuit_open: false even if the plugin has no recorded failures (it is healthy by default). Returns 404 only if the plugin_id is syntactically invalid.

Response:

{
  "plugin_id": "jira_sync",
  "failures": 3,
  "circuit_open": true,
  "last_failure": "2026-03-10T09:30:00Z",
  "affected_tenant_count": 5,
  "status": "circuit_open"
}

Status Values:

StatusDescription
healthyNo failures recorded
degradedHas failures but circuit is closed
circuit_openAuto-disabled after 3+ failures

Plugin Rating and Reviews (Coming Soon)

⚠️ Coming Soon: The full review system UI will be implemented in a future release. The endpoints exist for frontend development but will not show actual reviews yet.

Submit Rating

POST /api/plugins/marketplace/{plugin_id}/rate

Submit a rating (1-5) and optional review. The rating is logged for analytics; the aggregate average_rating field on PluginRegistryEntry will be updated once the full review system UI is implemented.

Request Body:

{
  "rating": 5,
  "review": "Great plugin, works perfectly!"
}

Response:

{
  "message": "Rating submitted. Thank you for your feedback.",
  "plugin_id": "comfyui_workflows",
  "rating": 5,
  "note": "Full review display UI is coming in a future release."
}

View Reviews

GET /api/plugins/marketplace/{plugin_id}/reviews

List reviews for a plugin.

⚠️ Coming Soon: Currently returns an empty list. The review storage model and UI will be added in a follow-up ticket.

Query Parameters:

ParameterTypeDefaultDescription
limitinteger20Max results (1-100)
offsetinteger0Pagination offset

Response:

{
  "plugin_id": "comfyui_workflows",
  "total": 0,
  "limit": 20,
  "offset": 0,
  "reviews": [],
  "note": "Full review display UI is coming in a future release."
}

Troubleshooting

Plugin Install Fails

Possible Causes:

  • Plugin limit reached for your tier
  • Plugin ID invalid or not in marketplace
  • Network connection issues

Solutions:

  1. Check your tier limits: GET /api/plugins/marketplace/info
  2. Verify the plugin ID exists
  3. Check network connectivity to marketplace

Plugin Not Activating

Possible Causes:

  • Plugin dependencies not met
  • Plugin incompatible with tenant configuration
  • Plugin backend unavailable

Solutions:

  1. Check plugin manifest for requirements
  2. Review plugin logs in the console
  3. Verify any external service connections

Too Many Plugins

Error: Plugin limit reached (10/10) for the 'indie' tier

Solutions:

  1. Deactivate unused plugins
  2. Upgrade to Team or Enterprise tier
  3. Switch to self-hosted (unlimited plugins)

Note: Plugin limits are enforced at activation time. You can install plugins but won’t be able to activate them if you’ve reached your tier limit.

Circuit Breaker Open

Error: Plugin circuit open or health check shows circuit_open: true

Possible Causes:

  • Plugin experienced 3+ activation failures
  • Plugin backend is down
  • Plugin has compatibility issues

Solutions:

  1. Check plugin health: GET /api/plugins/marketplace/health/{plugin_id}
  2. Review plugin logs for error details
  3. Contact plugin author or disable the plugin

Best Practices

  1. Read before installing: Review plugin descriptions and reviews
  2. Start small: Install only plugins you need immediately
  3. Monitor usage: Check plugin health status periodically
  4. Deactivate unused: Disable plugins you’re not using to reduce overhead
  5. Update regularly: Marketplace plugins receive updates - check for new versions
  6. Track limits: Be aware of your tier’s plugin limit and enforce limits at activation time