Extend ModelFlow's capabilities. Build tools, commands, and integrations that every model can call.
A plugin is a ModelFlow extension module that provides universal capabilities to all AI models. It can be a CLI tool, an API integration, or an automation script. Plugins communicate with ModelFlow through standardized interfaces, callable by any model — OpenAI, DeepSeek, Kimi, and more.
Expose CLI commands to models. Invoke explicitly with /tool-name in chat, or let models auto-select in workflows.
Connect external services — databases, cloud storage, SaaS APIs. Models can query data, create resources, trigger flows.
Inject custom UI — visualization panels, chart rendering, interactive forms. Built with HTML/CSS/JS, linked to model outputs.
Each plugin contains a manifest.json descriptor and tool implementations. Tools declare inputs via JSON Schema and return results via stdout/files. A minimal plugin needs just one manifest + one executable script.
The manifest defines name, version, description, and tool list. Each tool declares: name, description, parameters (JSON Schema), and a run command. Models use the description to automatically decide when to invoke a tool.
Tools can be any executable — shell scripts, Python, Node.js, Rust binaries. Receive JSON parameters via stdin, output results as JSON to stdout. Supports text output, file paths, and structured data.
Place your plugin folder in ModelFlow's plugins directory for local testing. Post in the Plugin Community for review. After security review, your plugin will be listed in the official catalog.
Every plugin root directory must contain a manifest.json. Full schema:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "A short description of what this plugin does",
"author": "your-name",
"tools": [
{
"name": "search-files",
"description": "Search files in the workspace by pattern",
"parameters": {
"type": "object",
"properties": {
"pattern": { "type": "string", "description": "Glob pattern to match" },
"path": { "type": "string", "description": "Directory to search in" }
},
"required": ["pattern"]
},
"run": "node tools/search.js"
}
]
}nameUnique identifier, kebab-caseversionSemantic versiondescriptionWhat the plugin does; models use this to decide when to callauthorAuthor name or orgtoolsArray of tool objectstools[].runLaunch command, relative to plugin root