Plugin System
The plugin system allows extending Octipus’s capabilities by dropping plugins into the extensions/ directory. Each plugin provides tools that are automatically registered and available to agents.
Plugin Structure
Section titled “Plugin Structure”extensions/ my-plugin/ plugin.json # Manifest (required) index.ts # Entry file (required)Manifest (plugin.json)
Section titled “Manifest (plugin.json)”{ "name": "my-plugin", "version": "1.0.0", "description": "Does something useful", "author": "Your Name", "main": "index.ts", "tools": [ { "name": "my_tool", "description": "Does a specific thing", "parameters": { "input": { "type": "string", "description": "The input", "required": true } } } ]}Entry File (index.ts)
Section titled “Entry File (index.ts)”export default { name: 'my-plugin',
async initialize(context) { context.logger.info('Plugin loaded'); },
tools: { async my_tool(args) { return { result: `Processed: ${args.input}` }; }, },
async shutdown() {},};Loading
Section titled “Loading”- At startup, the loader scans
extensions/for directories withplugin.json - Manifests are validated (name, version, description, main, tools)
- Entry files are dynamically imported
initialize()is called with a logger context- Each plugin is wrapped as a
BaseTooland registered with the tool registry - Plugin tools become available to agents as
plugin-<name>__<tool_name>
| Method | Path | Description |
|---|---|---|
| GET | /api/plugins | List all loaded plugins |
| GET | /api/plugins/:name | Plugin details |
| POST | /api/plugins/:name/reload | Hot-reload from disk |
Skill Sharing
Section titled “Skill Sharing”Skills can be exported and imported for sharing between instances:
| Method | Path | Description |
|---|---|---|
| GET | /api/skills/export | Export skills as JSON or markdown |
| GET | /api/skills/:id/export | Export single skill |
| POST | /api/skills/import | Import skills with conflict handling |
Markdown format uses YAML frontmatter for metadata and structured sections for principles, best practices, and anti-patterns.