withvibe
Plugins

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.

Tools show up on their own
If a plugin declares MCP tools, you don't wire anything up. When it's enabled and running, its tools are forwarded into the agent's turn and surface as 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.
Want to build one?
See Building a pluginfor the manifest fields and the conventions your container has to follow. When it's ready, list it on the marketplace — sign in to the publisher portal with GitHub to submit it (see Publishing to the marketplace).