Extending Pandora
Plugins add new capabilities to your agent — tools it can use, specialist agents it can delegate to, and channels that connect it to external platforms. Everything is a package: drop it in, enable it, done.
New to plugin development? Start with Create Your First Plugin.
What You Can Build
| Type | What it does | Example |
|---|---|---|
| Tool | Gives the agent a new ability | Web search, weather lookup, file conversion |
| Agent | A specialist sub-agent the main agent can delegate to | Deep research, code review, data analysis |
| Channel | Connects Pandora to an external messaging platform | Telegram, Discord, Slack |
You can also build a custom chat frontend using the React SDK, or use the SDK Client directly for non-React apps.
Key Concepts
Plugin — A standalone package with a pandora.manifest.json at its root. Plugins are installed in the packages/ directory and must be explicitly enabled on the Plugins page.
Entry Point — The TypeScript file that exports a plugin’s capabilities. Tool entry points export a tools array, agent entry points export an agent object, and channel entry points export a factory function.
Sandbox — The security boundary for tool execution. Tools default to compartment mode (sandboxed, zero capabilities by default). Tools that need native dependencies use host mode (full process access). Agents and channels always run in host mode.
Namespacing — All tools, agents, and channels are registered as pluginId:entityId (e.g. @pandorakit/tavily-search:tavily_search). This prevents collisions between plugins.
Config Fields — User-configurable settings declared in the manifest. These render as form inputs on the Plugins page and are passed to your plugin at runtime.
Environment Variables — Secrets declared in the manifest’s envVars array. Set on the server, not through the UI. Plugins with missing required env vars are skipped at load time.
Plugin Lifecycle
A plugin goes through four stages:
- Discovery — Pandora scans
packages/forpandora.manifest.jsonfiles at startup - Loading — Entry points are imported (compartment mode for sandboxed tools, host mode for agents/channels)
- Validation — Required env vars and config fields are checked
- Activation — Tools, agents, and channels are registered and become available
Plugins support hot reload — when configuration changes on the Plugins page, the runtime re-validates all plugins and rebuilds the registries without a server restart.
| Symptom | Likely cause |
|---|---|
| Plugin not listed on Plugins page | Manifest missing, malformed, or not in packages/ |
| Plugin listed but greyed out | Missing required env vars or config fields |
| Plugin enabled but tools not available | Entry point exports don’t match expected shape, or sandbox permissions too restrictive |
Check the server logs for [manifest] and [runtime] prefixed messages.