Add the always-enabled `_discovery` plugin to turn the welcome screen into a discovery surface for the Plugin Hub and A0 integrations. Includes a hero card plus Telegram, Email, and WhatsApp feature cards, with persistent dismiss/restore state, CTA routing to plugin config screens, and self-contained placeholder artwork. Implemented entirely through the existing WebUI extension mechanism with no core welcome-screen changes. stores cleanup layout polish and onboarding integration Move feature card titles beside thumbnails for better space efficiency and visibility. Restructure card markup and styles to support a fluid grid layout and horizontal alignment. Integrate discovery cards into the final onboarding step via a new 'onboarding-success-end' extension point, ensuring new users see extension opportunities immediately after setup. Hide discovery cards on the dashboard while the missing API key onboarding banner is visible to reduce UI noise and user confusion during initial config. update discovery card initialization and loading logic Enhance the discovery store to fetch cards from the API, improving the dynamic loading of discovery cards based on user context. This change optimizes the user experience by ensuring relevant cards are displayed immediately after onboarding and when modals are closed. And on top of that, there's a proper backend for these new cards. |
||
|---|---|---|
| .. | ||
| _browser_agent | ||
| _chat_branching | ||
| _chat_compaction | ||
| _code_execution | ||
| _discovery | ||
| _email_integration | ||
| _error_retry | ||
| _infection_check | ||
| _memory | ||
| _model_config | ||
| _onboarding | ||
| _plugin_installer | ||
| _plugin_scan | ||
| _plugin_validator | ||
| _promptinclude | ||
| _telegram_integration | ||
| _text_editor | ||
| _whatsapp_integration | ||
| README.md | ||
Agent Zero - Core Plugins
This directory contains the system-level plugins bundled with Agent Zero.
Directory Structure
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.
Documentation
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).
What a Plugin Can Provide
Plugins are automatically discovered based on the presence of a plugin.yaml file. Each plugin can contribute:
- Backend: API handlers, tools, helpers, named lifecycle extensions, and implicit
@extensiblehooks underextensions/python/_functions/... - Frontend: HTML/JS UI contributions via core extension breakpoints
- Settings: Isolated configuration scoped per-project and per-agent profile
- Activation: Global and scoped ON/OFF rules via
.toggle-1and.toggle-0files, including advanced per-scope switching in the WebUI - Agent profiles: Plugin-distributed subagent definitions under
agents/<profile>/agent.yaml
Backend extension layouts:
extensions/python/<point>/for named lifecycle hooksextensions/python/_functions/<module>/<qualname>/<start|end>/for implicit@extensiblehooks
Do not use the retired flattened extensions/python/<module>_<qualname>_<start|end>/ form.
Plugin Manifest
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
Plugin Script (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:
- Treat it as a manual plugin script, not as the primary way to use the plugin
- Prefer making it safe to rerun, or detect state and explain why a rerun is not appropriate
- Return
0on success and print progress messages for user feedback - Use
hooks.pyinstead when the behavior is framework-internal or should happen automatically
Runtime Hooks (hooks.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.pyruns inside the Agent Zero framework runtime and Python environment.- Use it for framework-internal work such as install hooks, cache preparation, registration, or filesystem setup.
- If it runs
sys.executable -m pip install ..., packages are installed into the same Python environment that runs Agent Zero. - If you need to install into the separate agent runtime or into the system environment, explicitly target that environment from a subprocess by selecting the correct interpreter, virtualenv, or package manager.
In Docker, hooks.py normally affects /opt/venv-a0; the agent execution runtime is /opt/venv.
Plugin Index & Community Sharing
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:
- Create a standalone GitHub repository with the plugin contents at the repo root. The runtime
plugin.yamlmust include anamefield matching the intended index folder name. Add aLICENSEfile at the repo root (required for Plugin Index listings so users have explicit terms of use). - Fork
https://github.com/agent0ai/a0-pluginsand add a folderplugins/<your_plugin_name>/containing a separate index manifest namedindex.yaml(notplugin.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).
- Open a Pull Request. CI validates the submission; a maintainer reviews and merges.
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.
Plugin Hub
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.