Skip to main content

Plugin Package Structure

plugin.json — Manifest

Every plugin must have a plugin.json manifest in its directory.

index.ts — Entry Point

Every plugin exports a createPlugin function:

Config

Plugins are configured in config.json5 under the plugins key:

Per-Agent Config Overrides

Different agents can have different plugin configs via pluginConfigs:

Tool Naming Rules

All tools registered by a plugin must start with the plugin name: This is enforced at registration time. Combined with unique plugin names, it guarantees no tool name collisions.
  • Single-tool plugins: Register a tool with the plugin name (e.g. plugin git → tool git)
  • Multi-tool plugins: Use dot notation (e.g. plugin telegram → tools telegram.send_message, telegram.get_chat_info)

PluginContext

The PluginContext object is provided to every plugin and gives access to gateway capabilities:

Installing Plugins

beige plugins install downloads the plugin and adds it to your config.json5 with its path and default config values. Review the config to fill in any required values (like API keys).

Auto-installation on Gateway Start

The gateway automatically installs any plugin that has a _source in config but whose path doesn’t exist on disk. This means you can copy a config.json5 from another machine and just run beige gateway start — all plugins will be fetched and installed before the gateway comes up.
If a plugin is already installed (its path exists), the gateway skips it. To upgrade to a newer version after changing _source, run beige plugins update explicitly — the gateway will not reinstall a plugin that is already present on disk.