agent-zero/plugins
linkliti 296c7095ea Polish DOX prose to match frdel imperative-contract pattern
Diary verbs and packed bullets in AGENTS.md updates converted to imperative contracts and parallel ownership lines matching e138e33c baseline.
2026-09-04 15:09:34 +03:00
..
_a0_acp Add ACP plugin thumbnail 2026-08-21 15:47:22 +02:00
_a0_connector Polish DOX prose to match frdel imperative-contract pattern 2026-09-04 15:09:34 +03:00
_agent_editor Align Agent Editor toast action styling 2026-08-12 14:34:16 +02:00
_browser Clarify host-browser connection wording 2026-09-02 06:46:48 -07:00
_chat_branching Skip markdown-wrapped action bars in branch button injection 2026-09-03 15:08:59 +03:00
_chat_compaction Preserve compacted context in provider history 2026-08-23 14:15:36 +02:00
_chat_naming Defer automatic chat naming until after responses 2026-08-27 14:13:29 +02:00
_code_execution Add text_editor custom message handler and CSS 2026-09-03 15:08:59 +03:00
_commands Add scoped composer references 2026-08-18 12:40:51 +02:00
_context_doctor Polish DOX prose to match frdel imperative-contract pattern 2026-09-04 15:09:34 +03:00
_context_window Refresh context usage during generation 2026-08-27 14:28:01 +02:00
_desktop Repair the pinned Xpra runtime stack 2026-08-19 21:22:17 +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 Hide disabled capabilities from system prompts 2026-08-31 01:55:40 +02:00
_migrate_agents Remove Migrate Agents sidebar shortcut 2026-08-12 14:51:19 +02:00
_model_config Avoid password prompts for credential fields 2026-08-26 22:09:39 +02:00
_oauth Default model transports to Chat Completions 2026-08-27 12:40:13 +02:00
_office Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_onboarding Merge pull request #1828 from er-s-an/codex/fix-onboarding-model-presets-modal 2026-08-27 13:59:34 +02: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 Avoid password prompts for credential fields 2026-08-26 22:09:39 +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 Handle empty promptinclude scans cleanly 2026-08-31 01:56:02 +02:00
_skills Add profile skill visibility policies 2026-08-12 14:34:15 +02:00
_telegram_integration Avoid password prompts for credential fields 2026-08-26 22:09:39 +02:00
_text_editor Polish DOX prose to match frdel imperative-contract pattern 2026-09-04 15:09:34 +03: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 Context Doctor plugin 2026-08-24 19:51:30 +03: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.