# Plugin Publishing Guide How to build, publish and install a LobbyForge plugin through the marketplace, without contributing to the core repository. ## Overview LobbyForge plugins follow a **two-tier distribution model**: | Tier | Where | How it runs | Example | |------|-------|-------------|---------| | **Official (in-repo)** | `plugins/`, compiled into the app | in the app process, React panel in the app | Hushle, Quiz | | **Community (marketplace)** | published by you, installed at runtime | sandboxed: QuickJS in the plugin worker, UI in a sandboxed iframe | your game | Community plugins do **not** need to be in the LobbyForge repository. You publish the bundle on your own hosting (GitHub Releases, a CDN) and submit its URL to the marketplace of the instance that will run it. The catalog is **per instance**: an entry approved on one instance (including the official one) does not appear on any other. After that instance's owner approves it, the owner can install it there. Since ADR-007 ([ARCHITECTURE_DECISIONS.md](ARCHITECTURE_DECISIONS.md)) a marketplace plugin is installed **without trusting its author**: - its server code (`server.js`) runs in a QuickJS WebAssembly VM inside the `plugin-worker` container: plain JavaScript, no Node APIs, no network, no file system, no timers, a fresh VM for every call; - its UI (`ui/`, optional) runs in `