Submitting to Community Marketplace

The Community Marketplace lets third-party developers distribute StudioBrain plugins to all users. Submissions go through the studiobrain-community-plugins GitHub repository. This page covers the requirements, submission process, and review workflow.

Requirements

Before submitting, your plugin must meet these criteria:

Runtime: WASM Only

Community plugins must use the WASM runtime. Python and Lua plugins cannot be distributed through the marketplace because they run outside the sandbox.

⚠️

If your plugin includes backend/routes.py or backend/events.py files (native Python), it will be rejected by the automated validation. Compile your logic to WASM instead. See Migrating from Python to WASM for guidance.

Complete plugin.json

Your manifest must include all required fields:

FieldRequiredNotes
idYesGlobally unique. Check existing IDs in the repository before choosing.
nameYesHuman-readable name.
versionYesSemantic version (1.0.0).
descriptionYesOne-line description. 10-200 characters.
authorYesYour name or organization. Must match your GitHub username or org.
licenseYesSPDX identifier. Open-source licenses only (MIT, Apache-2.0, GPL-3.0, etc.).
platformsYesMust include cloud. Desktop-only plugins cannot be submitted.
wasm.moduleYesPath to the .wasm binary.
capabilities.host_functionsYesDeclare all host functions used.
capabilities.http_domainsConditionalRequired if http_request is in host_functions.

Platform Declaration

Your plugin must declare platform compatibility. At minimum, it must support cloud:

{
  "platforms": ["cloud", "desktop", "core"]
}

If your plugin uses file_read or file_write, it cannot support cloud and therefore cannot be submitted to the community marketplace.

No Secrets or Credentials

The plugin source and built WASM binary must not contain hardcoded API keys, tokens, passwords, or other credentials. Use the settings system for user-provided credentials.

Size Limits

ArtifactLimit
.wasm binary10 MB
Total plugin directory (including panels, assets)25 MB
Panel HTML files (each)500 KB

Submission Steps

1. Fork the Repository

Fork studiobrain-community-plugins on GitHub.

2. Add Your Plugin Entry

Edit index.json in the repository root. Add an entry to the plugins array:

{
  "plugins": [
    {
      "id": "my-plugin",
      "name": "My Plugin",
      "version": "1.0.0",
      "description": "Does something useful with entities",
      "author": "your-github-username",
      "license": "MIT",
      "repository": "https://github.com/you/studiobrain-my-plugin",
      "download_url": "https://github.com/you/studiobrain-my-plugin/releases/download/v1.0.0/my-plugin.zip",
      "icon": "Puzzle",
      "category": "creative",
      "platforms": ["cloud", "desktop", "core"],
      "min_studiobrain_version": "2026.4",
      "featured": false
    }
  ]
}

Field Reference

FieldDescription
idMust match the id in your plugin.json.
nameDisplay name. Must match plugin.json.
versionCurrent version. Must match plugin.json.
descriptionShort description for the marketplace listing.
authorYour GitHub username or organization name.
licenseSPDX identifier. Must be open-source.
repositoryURL to your plugin’s source code. Must be publicly accessible.
download_urlDirect URL to a .zip archive of the built plugin. Typically a GitHub Release asset.
iconLucide icon name.
categoryOne of: creative, export, integration, project-management, development, ai, field-widget.
platformsArray of supported platforms.
min_studiobrain_versionMinimum StudioBrain version.
featuredSet to false. Only the StudioBrain team sets this to true.

3. Prepare Your Release

Create a GitHub Release on your plugin repository:

  1. Tag your repository with the version (e.g., v1.0.0).
  2. Build the WASM binary.
  3. Create a .zip archive containing the complete plugin directory:
# Build the WASM module
cargo build --target wasm32-wasi --release
cp target/wasm32-wasi/release/my_plugin.wasm plugin.wasm
 
# Create the release archive
zip -r my-plugin.zip plugin.json plugin.wasm panels/ assets/ README.md
  1. Upload the .zip as a release asset on GitHub.
  2. Copy the download URL (e.g., https://github.com/you/my-plugin/releases/download/v1.0.0/my-plugin.zip) and use it as the download_url in your index.json entry.

4. Submit a Pull Request

Push your changes to your fork and open a PR against the main branch of studiobrain-community-plugins. The PR should:

  • Add or update your entry in index.json.
  • Include a brief description of the plugin.
  • Link to your plugin’s repository and release.

CI Validation

When you open a PR, automated checks run:

JSON Schema Validation

The CI validates your index.json entry against the schema:

  • All required fields are present.
  • id is unique (no duplicates in the existing catalog).
  • version is a valid semver string.
  • category is one of the allowed values.
  • platforms includes cloud.
  • download_url is a reachable HTTPS URL.

WASM-Only Check

The CI downloads your plugin archive and verifies:

  • A plugin.json exists in the archive root.
  • A .wasm file exists at the path declared in wasm.module.
  • No backend/ directory with Python files (native Python is not allowed).
  • No *.py or *.lua files outside of WASM compilation sources.

Size Check

  • .wasm binary is under 10 MB.
  • Total archive size is under 25 MB.

Manifest Consistency

  • id, name, version in the archive’s plugin.json match the index.json entry.
  • capabilities.host_functions in plugin.json does not include file_read or file_write if cloud is in platforms.
  • If http_request is declared, http_domains is non-empty.

What Happens If Validation Fails

The PR will show a failing check with a description of each issue. Fix the issues in your plugin or index.json entry and push again. The checks re-run automatically.

Review Process

Automated Review

All submissions go through the automated CI checks described above. If all checks pass, the plugin is eligible for merge.

Plugins are not required to go through manual review to appear in the marketplace. However, to be marked as featured (highlighted on the marketplace home page), a plugin must pass manual review by the StudioBrain team.

Manual review checks:

  • Plugin does what the description claims.
  • No malicious behavior (excessive network calls, data exfiltration, resource exhaustion).
  • UI panels follow StudioBrain’s theme system (uses CSS custom properties, not hardcoded colors).
  • Documentation is adequate (README with usage instructions).
  • License is correctly declared.

Manual review is optional and happens asynchronously. Your plugin will appear in the Community tab of the marketplace as soon as the PR is merged, regardless of manual review status.

Updating Your Plugin

To release a new version:

  1. Build and publish a new release on your plugin repository (e.g., v1.1.0).
  2. Open a PR on studiobrain-community-plugins updating your entry in index.json:
    • Update version to the new version.
    • Update download_url to point to the new release asset.
    • Update min_studiobrain_version if the new version requires a newer StudioBrain release.
  3. The same CI validation runs on the updated entry.
  4. Once merged, the marketplace catalog refreshes and users see the update.

Users who have already installed your plugin will see an “Update available” badge in Settings > Plugins.

Removing Your Plugin

To remove your plugin from the marketplace, open a PR that deletes your entry from index.json. Users who have already installed the plugin will keep their local copy, but it will no longer appear in the marketplace catalog.

Best Practices

  • Use descriptive IDs. acme-jira-bridge is better than my-plugin.
  • Keep the WASM binary small. Use wasm-opt to strip debug info and optimize.
  • Test on Cloud. Your plugin must work in the WASM sandbox with domain-restricted networking.
  • Document your settings. If the plugin requires API keys or external service URLs, explain where users get them.
  • Follow semver. Bump the major version for breaking changes, minor for new features, patch for fixes.
  • Include screenshots. Add screenshots to your plugin’s README showing the UI panels in action.

Next Steps