Plugin Package Structure
plugin.json — Manifest
Every plugin must have a
plugin.json manifest in its directory.index.ts — Entry Point
Every plugin exports acreatePlugin function:
Config
Plugins are configured inconfig.json5 under the plugins key:
Per-Agent Config Overrides
Different agents can have different plugin configs viapluginConfigs:
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→ toolgit) - Multi-tool plugins: Use dot notation (e.g. plugin
telegram→ toolstelegram.send_message,telegram.get_chat_info)
PluginContext
ThePluginContext 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.
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.