Using the Marketplace
Marketplace is the only store UI. Open Settings → Plugins → Marketplace (the same browser also hosts the catalog-data tabs). There is no second plugin store, and installing is per-project. Tenant policy is an allowlist.
Where does it run?
| Kind | Desktop | Mobile | Cloud |
|---|---|---|---|
| Official universal | WIT Component (wasmtime Cranelift) | Same Component (wasmtime Pulley) | Official Worker, compiled at our deploy. Panels on all surfaces. |
| Official desktop-only | Component + network:local + environments: ["desktop"] | Hidden | Hidden |
| Community plugin | Component | Same Component | Panel iframe and/or the author’s backend. Never a Worker on BiloxiStudios Cloudflare. |
| Any data kind | Files in the project | Files in the project | Files in the project. No Worker. |
What Marketplace lists
| Tab | Official home | Community home |
|---|---|---|
| Plugins | studiobrain-plugins (code) | studiobrain-community plugins index (today studiobrain-community-plugins) |
| Templates / Rules / Skills / Layouts / Packs / Providers / Flows | studiobrain-templates (data only) | Same community repo, catalog/index.json |
Official templates never receive community data. Community listings do not land in studiobrain-templates.
CatalogSync refreshes official catalog data from studiobrain-templates. It does not already merge the community indexes. Community rows appear when Marketplace reads the community registry — that merge is not a silent CatalogSync feature.
Source filter
- All — official and community
- Official — Biloxi and signed vendor/partner (Verified badge)
- Community — third-party listings from the community registry
Plugin categories
Creative tools, export and publishing, integrations, project management, development, AI and automation, field widgets.
You can also filter by platform (cloud hides official desktop-only and anything the allowlist rejects), featured, and recently updated.
Official proofs you can install today: entity-notes, entity-snapshots, content-stats. Follow-on samples (Track H tickets): hello-world, webhook-automations, pdf-exporter, comparison, kanban-board, google-sheets-sync, assembly-composer, blender-bridge. prompt-engine is not a plugin.
Installing a plugin
1. Confirm the project
Install applies to the current project only. Switching projects does not carry the enablement with you.
2. Open the card
The detail page shows description, screenshots, requested capabilities, which surfaces it runs on, version, and author. Community cards state that cloud will not run a Biloxi Worker.
3. Enable (if allowlisted)
If tenant policy does not include this plugin ID, Enable is disabled. Ask an admin to add it to the allowlist.
4. Capability consent
Community plugins always show consent. Official plugins show consent for write / HTTP / network:local. Cancel leaves the project unchanged.
Plugin "Example Sync" requests:
[auto] entity_read - Read your entity data
[!] entity_write - Create and modify entities
[!] http_request - Mediated HTTP to declared domains
[Enable] [Cancel]5. Configure
Settings → Plugins → gear for API keys and options. Official desktop-only plugins may ask for local network targets (network:local).
What each permission means
entity_read / asset_read (usually auto)
Read entities and attached files. No writes.
entity_write / asset_write (consent)
Create, change, or delete. Changes show in version history.
Only grant write access to plugins you trust.
http_request (consent)
Outbound HTTP through the host. Official cloud Workers are limited to declared domains. Community cloud calls, if any, go to the author’s backend — not a Worker we host.
network:local (official desktop only)
Talk to localhost / LAN. Hidden on cloud and mobile. Not available to community plugins.
file_read / file_write
Not a Marketplace community capability. Official desktop tools that need a local path declare it explicitly and still require consent.
ai_generate (usually auto)
Calls StudioBrain generation. Cloud usage is billed in BrainBits and cannot exceed your balance.
Enable, disable, uninstall
- Enable / disable — per-project. Disable hides panels and stops the Component or official Worker for that project. Config stays.
- Uninstall — removes that project’s install, grants, and plugin-scoped data. Reinstall from Marketplace.
- Official bundled proofs can be disabled; they are not a second store.
Revoking permissions
Settings → Plugins → gear → Permissions. Revoke takes effect immediately. The guest gets an error if it calls a revoked capability.
Platform differences
Cloud (app.studiobrain.ai)
- Official plugins: our deployed Worker + panels.
- Community plugins: panels and/or the author’s backend. No community Worker on BiloxiStudios Cloudflare.
- No
network:local. No fetched-WASM compile. - Tenant allowlist plus any plan cap on how many plugins a project may enable.
Desktop
- Official and community Components in wasmtime Cranelift.
- Official desktop-only +
network:localallowed with consent. - Same Marketplace UI.
Mobile
- Same Component as desktop, wasmtime Pulley (SBAI-7745).
- No wasmi. No desktop-only /
network:localplugins.
Catalog-data tabs
Templates, rules, skills, layouts, canvas, and workflows are files in the project. They never run as Workers.
- Templates — packs or individuals into the project template dirs, then Activate ingests the type (
ingest_template). See Template Packs and Marketplace Type Sync. - Rules — into
_Rules/. Apply to a type; not a new sidebar type. See AI Generation Rules. - Skills — into the project skill dirs. See Agent Skills.
- Layouts —
_Templates/Layouts/. See UI Layouts. - Canvas —
_Canvas/*.canvas.yamlgeneration graphs. Not Workflow. - Workflows —
workflow_definitions/_Workflows/. Automation (/api/flows) is not a Marketplace tab.
Official rows come from studiobrain-templates. Community rows come from the community catalog-data index.
Desktop, mobile, and cloud share this Marketplace. After a template Activate, schema.updated updates the sidebar on every surface (desktop pulls file bytes; mobile refetches the cloud catalog).
Catalog API
Marketplace tabs call the catalog API with a kind and a source. Treat community as a separate source. Do not assume CatalogSync already unioned it into official.
GET /api/catalog?kind={kind}&source={all|official|community}| Param | Description |
|---|---|
kind | plugins, templates, rules, skills, schemas, layouts |
source | all, official, community |
search / category / limit / offset | Filter and page |
{
"items": [
{
"id": "entity-notes",
"name": "Entity Notes",
"kind": "plugins",
"source": "official",
"author": "Biloxi Studios",
"version": "0.1.0"
}
],
"total": 1,
"limit": 20,
"offset": 0
}Troubleshooting
Not in Marketplace
- Platform filter: desktop-only official plugins are hidden on cloud/mobile.
- Allowlist: the tenant may omit that ID.
- Community: the plugins or catalog-data index PR is not merged yet. CatalogSync will not sneak it into official data.
Consent loops
The plugin added a capability, or you revoked one. Review and accept or leave it disabled.
Fails after enable
Check Settings → Plugins → [Plugin] → Logs. Community cloud failures are often “no Worker” — use the panel or the author’s documented backend URL.