Development
Plugins
Plugins are the main extension model in Agent Zero. Use them to ship backend logic, frontend UI, scoped settings, and activation rules without forking core code. You can keep plugins private or share them with the community through the Plugin Index.
Plugin Overview
Agent Zero discovers plugins from directory conventions and loads user plugins before built-in plugins. This makes local customization safe while preserving core defaults.
What a Plugin Can Add
- Backend: API handlers, tools, helpers, and lifecycle extensions
- Frontend: plugin settings pages and WebUI extension-point content
- Agent profiles: plugin-distributed profiles via
agents/<profile>/agent.yaml - Scoped settings: project and agent-profile aware config loading
- Activation controls: ON/OFF rules per scope using toggle files
Priority order: usr/plugins/ overrides plugins/ when plugin folder names collide.
Manifest: plugin.yaml
Every plugin must include a YAML manifest. JSON manifests are legacy and should be migrated.
title: My Plugin
description: What this plugin does.
version: 1.0.0
settings_sections:
- agent
per_project_config: false
per_agent_config: false
always_enabled: false
Key Fields
title: human-readable display name shown in the UIdescription: short summary shown in the plugin listversion: plugin version stringsettings_sections: where settings appear (agent,external,mcp,developer,backup)per_project_config: enables project-scoped config and toggle rulesper_agent_config: enables agent-profile scoped config and toggle rulesalways_enabled: forces plugin ON and disables UI toggles
Recommended Structure
usr/plugins/<plugin_name>/
├── plugin.yaml
├── default_config.yaml # optional defaults
├── api/
├── tools/
├── helpers/
├── prompts/
├── agents/
│ └── <profile>/agent.yaml
├── extensions/
│ ├── python/<extension_point>/
│ └── webui/<extension_point>/
└── webui/
├── config.html # optional settings UI
└── ...
Scoped Settings Resolution
Plugin settings resolve from most specific scope to least specific fallback.
project/.a0proj/agents/<profile>/plugins/<name>/config.jsonproject/.a0proj/plugins/<name>/config.jsonusr/agents/<profile>/plugins/<name>/config.jsonusr/plugins/<name>/config.jsonplugins/<name>/default_config.yaml
Note: save operations are scope-aware, while fallback defaults can be YAML.
Activation Model
Toggle Files
.toggle-1= ON.toggle-0= OFF- No explicit rule = ON by default
WebUI States
- ON/OFF: simple global state from explicit rule or default
- Advanced: appears when project/profile-specific overrides exist
- Switch modal: scope-aware control surface for per-scope activation
Scope sync: "Configure Plugin" in the switch modal passes the currently selected scope into settings, so activation and configuration stay aligned.
Plugin Management API
Core endpoint: POST /api/plugins
get_configsave_configlist_configsdelete_configtoggle_plugin
Best Practices
- Build custom plugins in
usr/plugins/, not in coreplugins/ - Keep plugin folder names stable — they are the unique plugin identifier
- Use
default_config.yamlfor safe defaults and keep overrides minimal - Use
always_enabledonly for plugins that must never be disabled - Expose settings via
webui/config.htmlwhen users need scope-level control - Add a
README.mdandLICENSEto your plugin — they're shown in the Plugin List UI
For deeper implementation details, see AGENTS.plugins.md.
Plugin Index
The Plugin Index is a community-maintained registry of Agent Zero plugins. Listing your plugin there makes it discoverable by all Agent Zero users.
Two Distinct plugin.yaml Files
There are two separate plugin.yaml schemas used at different stages — they must not be confused:
Runtime manifest — lives inside your plugin directory and drives Agent Zero behavior:
title: My Plugin
description: What this plugin does.
version: 1.0.0
settings_sections:
- agent
per_project_config: false
per_agent_config: false
Index manifest — submitted to the a0-plugins repo for discoverability only:
title: My Plugin
description: What this plugin does.
github: https://github.com/yourname/your-plugin-repo
tags:
- tools
- example
Repository Structure
Community plugins should live in their own GitHub repository, with the plugin contents at the repository root. The github field in the index manifest must point to that repository.
your-plugin-repo/ ← GitHub repository root
├── plugin.yaml ← runtime manifest
├── default_config.yaml
├── README.md
├── LICENSE
├── api/
├── tools/
├── extensions/
└── webui/
How to Submit
- Create a GitHub repository with the runtime
plugin.yamlat the repo root. - Fork agent0ai/a0-plugins and add
plugins/<your-plugin-name>/plugin.yaml(index manifest) to your fork. Optionally include a square thumbnail image (≤ 20 KB). - Open a Pull Request — one PR must add exactly one new plugin folder.
- CI validates automatically. A maintainer reviews and merges.
For available tags, see TAGS.md in the Plugin Index repository.
Plugin Marketplace Coming Soon
A built-in Plugin Marketplace (an always-active plugin) is planned for a future release. It will allow users to browse the Plugin Index and install or update community plugins directly from the Agent Zero UI — no manual file management required.
This page will be updated once the Plugin Marketplace is released.