Plugin authoring & packaging
What a plugin folder contains, how it is packaged, and where the desktop loads it from.
What you ship
A plugin is a folder (or a ZIP of that folder) with:
manifest.jsonat the root (same level as yourdist/folder). See the Manifest reference.- A built
entryfile (for exampledist/index.js, ESM) referenced bymanifest.json. Bundle yoursrc/index.ts(and any dependencies) into that single file — plugins cannotrequire/importthird-party packages at runtime.
com.example.hello/ com.example.hello-1.0.0.zip
├── manifest.json ├── manifest.json
└── dist/ └── dist/
└── index.js └── index.js
How it loads
- Marketplace install (operators): the desktop downloads the ZIP, extracts it, reads
manifest.jsonfrom the extract root, then loadsentry. - Where it lives: installed plugins are discovered under
%APPDATA%/BodegaSuite/plugins/<id>/. The repo'spackages/plugin-*andplugins/directories are source/mirror only — not loaded. - For testing your own build before publishing, see Local testing & troubleshooting.
Where to go next
- Developer quickstart — scaffold, build, sideload, publish
- Plugin lifecycle — the
activate/deactivatecontract - BodegaAPI reference — the full mediated API
- UI contributions — navbar buttons & theme switching
- Publishing to the marketplace — ZIP, checklist, install
Deeper reference (monorepo)
Maintainers also keep docs/03-technology/07-plugin-author-guide.md and
docs/harness/plugin-system.md in the Git repository, and the canonical manifest contract lives in
packages/schemas/src/plugin-manifest.ts.