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:
| Field | Required | Notes |
|---|---|---|
id | Yes | Globally unique. Check existing IDs in the repository before choosing. |
name | Yes | Human-readable name. |
version | Yes | Semantic version (1.0.0). |
description | Yes | One-line description. 10-200 characters. |
author | Yes | Your name or organization. Must match your GitHub username or org. |
license | Yes | SPDX identifier. Open-source licenses only (MIT, Apache-2.0, GPL-3.0, etc.). |
platforms | Yes | Must include cloud. Desktop-only plugins cannot be submitted. |
wasm.module | Yes | Path to the .wasm binary. |
capabilities.host_functions | Yes | Declare all host functions used. |
capabilities.http_domains | Conditional | Required 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
| Artifact | Limit |
|---|---|
.wasm binary | 10 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
| Field | Description |
|---|---|
id | Must match the id in your plugin.json. |
name | Display name. Must match plugin.json. |
version | Current version. Must match plugin.json. |
description | Short description for the marketplace listing. |
author | Your GitHub username or organization name. |
license | SPDX identifier. Must be open-source. |
repository | URL to your plugin’s source code. Must be publicly accessible. |
download_url | Direct URL to a .zip archive of the built plugin. Typically a GitHub Release asset. |
icon | Lucide icon name. |
category | One of: creative, export, integration, project-management, development, ai, field-widget. |
platforms | Array of supported platforms. |
min_studiobrain_version | Minimum StudioBrain version. |
featured | Set to false. Only the StudioBrain team sets this to true. |
3. Prepare Your Release
Create a GitHub Release on your plugin repository:
- Tag your repository with the version (e.g.,
v1.0.0). - Build the WASM binary.
- Create a
.ziparchive 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- Upload the
.zipas a release asset on GitHub. - Copy the download URL (e.g.,
https://github.com/you/my-plugin/releases/download/v1.0.0/my-plugin.zip) and use it as thedownload_urlin yourindex.jsonentry.
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.
idis unique (no duplicates in the existing catalog).versionis a valid semver string.categoryis one of the allowed values.platformsincludescloud.download_urlis a reachable HTTPS URL.
WASM-Only Check
The CI downloads your plugin archive and verifies:
- A
plugin.jsonexists in the archive root. - A
.wasmfile exists at the path declared inwasm.module. - No
backend/directory with Python files (native Python is not allowed). - No
*.pyor*.luafiles outside of WASM compilation sources.
Size Check
.wasmbinary is under 10 MB.- Total archive size is under 25 MB.
Manifest Consistency
id,name,versionin the archive’splugin.jsonmatch theindex.jsonentry.capabilities.host_functionsinplugin.jsondoes not includefile_readorfile_writeifcloudis inplatforms.- If
http_requestis declared,http_domainsis 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.
Manual Review (for Featured status)
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:
- Build and publish a new release on your plugin repository (e.g.,
v1.1.0). - Open a PR on
studiobrain-community-pluginsupdating your entry inindex.json:- Update
versionto the new version. - Update
download_urlto point to the new release asset. - Update
min_studiobrain_versionif the new version requires a newer StudioBrain release.
- Update
- The same CI validation runs on the updated entry.
- 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-bridgeis better thanmy-plugin. - Keep the WASM binary small. Use
wasm-optto 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
- Creating Plugins — Full plugin development guide
- Permissions Reference — Capability system details
- Host Functions API — WASM host function reference
- Plugin Examples — Complete plugin walkthroughs