agent-zero/plugins
Alessandro cf1bec3ed9 Add Goal mode shortcut to chat composer
Add a Goal mode action to the composer popover that prefills the /goal command, focuses the input, and leaves sending to the user. Cover the prefill-only behavior with a focused plugin test.
2026-08-19 04:50:39 +02:00
..
_a0_acp Bundle Agent Zero ACP 2026-08-16 19:25:05 +02:00
_a0_connector Bound attachment metadata percent decoding 2026-08-12 14:34:15 +02:00
_agent_editor Align Agent Editor toast action styling 2026-08-12 14:34:16 +02:00
_browser Restore internal Browser tabs automatically 2026-08-16 18:02:51 +02:00
_chat_branching Add file-level DOX docs & update AGENTS indexes 2026-06-08 12:41:53 +02:00
_chat_compaction Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_chat_naming Add thumbnails for core agent utilities 2026-08-12 14:34:15 +02:00
_code_execution Harden scoped tool policy enforcement 2026-08-12 14:34:15 +02:00
_commands Add scoped composer references 2026-08-18 12:40:51 +02:00
_desktop fix(_desktop): allow shrinking the Desktop canvas surface 2026-08-12 14:34:16 +02:00
_discovery Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_document_query Fix document query SSRF regression 2026-08-12 14:34:16 +02:00
_editor Merge pull request #1710 from alogotron/feat/editor-open-button-in-tab-bar 2026-08-12 05:49:25 +02:00
_email_integration Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_error_retry Add file-level DOX docs & update AGENTS indexes 2026-06-08 12:41:53 +02:00
_goal Add Goal mode shortcut to chat composer 2026-08-19 04:50:39 +02:00
_infection_check Add file-level DOX docs & update AGENTS indexes 2026-06-08 12:41:53 +02:00
_kokoro_tts Enhance native Kokoro voice blending 2026-08-12 14:34:15 +02:00
_memory Keep capability discovery aligned with runtime 2026-08-12 14:34:15 +02:00
_migrate_agents Remove Migrate Agents sidebar shortcut 2026-08-12 14:51:19 +02:00
_model_config fix agent profile switching logic 2026-08-12 14:34:15 +02:00
_oauth Fix Codex OAuth utility responses 2026-08-19 04:23:36 +02:00
_office Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_onboarding Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_orchestrator Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_pin_to_top Add thumbnails for core agent utilities 2026-08-12 14:34:15 +02:00
_plugin_installer fix(plugin-hub): preserve dirty edits during updates 2026-08-12 14:34:16 +02:00
_plugin_scan Add file-level DOX docs & update AGENTS indexes 2026-06-08 12:41:53 +02:00
_plugin_validator Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_promptinclude Fix DeprecationWarning 2026-08-12 14:34:16 +02:00
_skills Add profile skill visibility policies 2026-08-12 14:34:15 +02:00
_telegram_integration Hide the utility agent from profile selectors 2026-08-12 14:34:15 +02:00
_text_editor feat: add tiny local tool-use profile 2026-06-24 03:59:21 -04:00
_time_travel feat: Time Travel shadow-repo retention (orphan cleanup, optional age-out, stale-lock repair) 2026-08-12 14:34:16 +02:00
_tool_access Document Agent Editor workflows and policies 2026-08-12 14:34:16 +02:00
_whats_new Disable What's New cards 2026-07-02 17:29:40 +02:00
_whatsapp_integration Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_whisper_stt Improve Browser startup and annotations 2026-08-16 15:22:10 +02:00
AGENTS.md Add built-in Migrate Agents plugin 2026-08-12 14:34:15 +02:00
README.md docs: explain plugin config caller context 2026-08-12 14:34:16 +02:00

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:

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 @extensible hooks under extensions/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-1 and .toggle-0 files, 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 hooks
  • extensions/python/_functions/<module>/<qualname>/<start|end>/ for implicit @extensible hooks

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 0 on success and print progress messages for user feedback
  • Use hooks.py instead 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.py runs 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.

Configuration Hook Context

Configuration hooks can distinguish why settings are being read or saved. Pass caller="ui" or caller="agent" to get_plugin_config(...) or save_plugin_config(...); calls without it keep the compatible default, "api".

The hook receives this as hook_context={"caller": ...}:

def get_plugin_config(default=None, hook_context=None, **kwargs):
    caller = (hook_context or {}).get("caller", "api")
    if caller == "ui":
        return redact_for_display(default)
    return default

Existing hooks need no change: hooks that ignore hook_context, including strict signatures without **kwargs, retain their previous behavior. Use the context only for behavior selection in plugin-controlled flows; it is not an authorization boundary. A config.html alone does not set the caller; the backend code loading or saving that configuration must pass it explicitly.

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:

  1. Create a standalone GitHub repository with the plugin contents at the repo root. The runtime 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).
  2. Fork 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).

  1. 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.