plugins/README.md
This directory contains the system-level plugins bundled with Agent Zero.
plugins/: Core system plugins. Reserved for framework updates — do not place custom plugins here.usr/plugins/: The correct location for all user-developed and custom plugins. This directory is gitignored.For detailed guides on how to create, extend, or configure plugins, refer to:
docs/agents/AGENTS.plugins.md: Full-stack plugin architecture, manifest format, extension points, and Plugin Index submission.docs/developer/plugins.md: Human-facing developer guide covering the full plugin lifecycle.AGENTS.md: Main framework guide and backend context.skills/a0-plugin-router/SKILL.md: Agent-facing entry point that routes plugin tasks to the appropriate specialist skill.skills/a0-create-plugin/SKILL.md: Agent-facing authoring workflow (local and community plugins).Plugins are automatically discovered based on the presence of a plugin.yaml file. Each plugin can contribute:
@extensible hooks under extensions/python/_functions/....toggle-1 and .toggle-0 files, including advanced per-scope switching in the WebUIagents/<profile>/agent.yamlBackend extension layouts:
extensions/python/<point>/ for named lifecycle hooksextensions/python/_functions/<module>/<qualname>/<start|end>/ for implicit @extensible hooksDo not use the retired flattened extensions/python/<module>_<qualname>_<start|end>/ form.
Every plugin requires a plugin.yaml at its root:
name: my_plugin # required for community plugins
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
execute.py)Plugins can include an optional execute.py at the plugin root for user-triggered operations such as setup, post-install steps, maintenance, repairs, migrations, or resource refreshes. Users trigger it from the Plugin List UI.
Guidelines:
0 on success and print progress messages for user feedbackhooks.py instead when the behavior is framework-internal or should happen automaticallyhooks.py)Plugins can also include an optional hooks.py at the plugin root. The framework loads it on demand and can call exported hook functions by name through helpers.plugins.call_plugin_hook(...).
hooks.py runs inside the Agent Zero framework runtime and Python environment.sys.executable -m pip install ..., packages are installed into the same Python environment that runs Agent Zero.In Docker, hooks.py normally affects /opt/venv-a0; the agent execution runtime is /opt/venv.
The Plugin Index at https://github.com/agent0ai/a0-plugins is the community-maintained registry of plugins available to all Agent Zero users.
To share a plugin with the community:
plugin.yaml must include a name field matching the intended index folder name. Add a LICENSE file at the repo root (required for Plugin Index listings so users have explicit terms of use).https://github.com/agent0ai/a0-plugins and add a folder plugins/<your_plugin_name>/ containing a separate index manifest named index.yaml (not plugin.yaml):title: My Plugin
description: What this plugin does.
github: https://github.com/yourname/your-plugin-repo
tags:
- tools
Optional additional fields: screenshots (up to 5 image URLs).
Note: The index index.yaml is a different file with a different schema from the runtime plugin.yaml. Folder names use ^[a-z0-9_]+$ (underscores, no hyphens) and must match the name field in the remote plugin.yaml exactly.
Agent Zero now includes a built-in Plugin Hub flow through the always-enabled Plugin Installer plugin. From the Plugins dialog, users can either open the Browse tab or click Install, which opens the installer modal on its own Browse tab.
The Plugin Hub surfaces Plugin Index entries directly in the UI and lets users search, filter, inspect, and install community plugins without leaving Agent Zero.