Plugins & the marketplace
A plugin is a self-contained extension that runs as its own container, can show a panel inside an env, and can hand the agent new tools. Install one and it just shows up — in the UI and, when it opts in, in the agent's toolbox.
What a plugin is
A plugin is packaged as a container image plus a small manifest. Once installed, it can do three things:
- Run a service — its own container, started for the scope it declares (per-env, per-workspace, or one shared instance for the whole deployment).
- Show a panel — its web UI rendered in an iframe inside the env, so the plugin has a place to live in the product.
- Give the agent tools — when the plugin opts into MCP, its tools are injected into the env chat automatically, and the agent is told when to use them.
Two examples ship as references: a Roadmap plugin (a per-env task board the agent can drive) and Voter (a team-vote gate where the agent has to propose_changeand get team approval before building). Voter is a good illustration of the model — it adds a whole governance flow without touching withvibe's core.
Scopes & storage
A plugin declares how many containers exist and whether it keeps state:
- env — one container per env. Isolated and env-bound. The default.
- workspace — one container shared across all envs in a workspace. Right for team task boards, shared notes.
- global — one container for the whole deployment. Operator dashboards, status pages.
For storage, a plugin is either stateless, or asks the platform for a dedicated Postgres role and schema — isolated so the plugin can reach its own data but never the withvibe app database.
Installing from the marketplace
Admins install plugins from Admin → Plugins. The Marketplace tab browses a public catalog (hosted at withvibe.dev by default) — search it, pick a plugin, and one-click install. Self-hosters can point the marketplace at their own catalog with the WITHVIBE_MARKETPLACE_BASE_URL setting.
You can also install outside the marketplace:
- From a URL — paste a link to a plugin's manifest.
- From raw manifest text — paste the manifest directly.
Once installed, admins control two flags: whether the plugin is enabled deployment-wide, and whether new envs get it by default.
Using a plugin in an env
In an env, an enabled plugin gets a panel. Start it and its UI loads in the panel; stop it when you're done. A per-env manage control lets you enable or disable the plugin just for that env, layered on top of the admin default.
mcp__plugin_<id>__<tool>, and the plugin's own instructions are added to the system prompt so the agent knows when to reach for them.