The Projelli marketplace is a public GitHub repository, projelli/community-plugins. Each plugin is one folder under entries/, containing the manifest, the built bundle, and screenshots. To publish, fork the repo, add your entry, and open a pull request. After review, your plugin appears in the in-app marketplace and users can install it with one click.
id in your manifest.json that doesn't collide with an existing entry.Go to github.com/projelli/community-plugins and click Fork. Clone your fork locally.
git clone https://github.com/<your-username>/community-plugins.git
cd community-plugins
From your plugin project, run:
npm run build
This produces dist/index.js (the bundled worker entry the runtime loads).
In your fork of community-plugins, create a folder under entries/ matching your plugin id:
entries/my-plugin/
manifest.json ← copy of your plugin's manifest
index.js ← copy of your built bundle (from dist/index.js)
screenshots/
main.png ← 1280x800 PNG, primary screenshot
settings.png ← optional, additional screenshots
The folder name must match the id field in your manifest. The repo's GitHub Action regenerates the installable tarball and SHA-256 checksum on merge, so you don't need to ship those yourself.
Run the marketplace's build script from the repo root:
npm install --no-save zod@^4.3.6
PROJELLI_CATALOG_KIND=plugins node scripts/build-catalog.mjs
This validates every manifest.json against the production schema, builds a deterministic tarball per entry, and writes catalog.json. If validation fails you'll see the field path and reason. Fix any errors before opening the PR.
git checkout -b add-my-plugin
git add entries/my-plugin/
git commit -m "Add my-plugin v1.0.0"
git push origin add-my-plugin
Open a PR against main on projelli/community-plugins. Use this title format: Add <plugin-name> v<version>.
In the PR description, include:
network).A maintainer reviews every submission. Reviews focus on:
Most reviews take a few days. If we ask for changes, push another commit to the same branch and the PR updates automatically. Once merged, your plugin appears in the in-app marketplace.
To ship a new version: bump version in your manifest, build a new tarball with the new version in the filename (my-plugin-1.1.0.tgz), drop both into your existing entries/my-plugin/ folder, and open a PR. Old versions stay in the folder so users on older Projelli builds can still install compatible releases.
If you want to delist a plugin, open a PR that removes its entry folder and explain why in the PR description. Existing installations keep working; the plugin just disappears from the marketplace.
If you find a plugin in the marketplace that's doing something it shouldn't (asking for permissions it doesn't need, exfiltrating data, hiding behavior), open an issue on projelli/community-plugins with the plugin id and details. We take takedowns seriously.