agent-zero/plugins
Alessandro 3397c4f87c Reduce sidebar agent indentation and remove row tooltips
Reduce indentation from 30px to 25px at the first two child levels, preserving the deeper-level taper.

Remove new-chat and overflow tooltips from sidebar rows while retaining accessible labels and both Chats header tooltips. Update sidebar contracts to match.

Validation: 7 focused pytest checks passed, sidebar folder frontend checks passed, and live browser checks confirmed row labels and header tooltips.
2026-09-23 18:44:19 +02:00
..
_a0_acp Add ACP plugin thumbnail 2026-08-21 15:47:22 +02:00
_a0_connector Align remote execution and Computer Use tool contracts 2026-09-12 18:24:54 +02:00
_agent_editor Clarify required Agent Editor instructions 2026-09-02 16:34:13 +02:00
_browser Fix Browser startup state and stale URLs across chats 2026-09-17 19:19:20 +02: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 fix(chat-naming): preserve subordinate labels 2026-09-23 14:53:07 +02:00
_code_execution Fix flashing process groups during memory search 2026-09-16 16:17:37 +02:00
_commands Extend slash command support to WhatsApp 2026-09-14 14:08:47 +02:00
_context_doctor Let Responses text reach the core response dispatcher 2026-09-06 18:57:45 +02:00
_context_window Add reusable overflow menus for chat controls 2026-09-23 06:24:49 +02:00
_desktop Keep LibreOffice saves on the renamed document 2026-09-17 04:41:34 +02:00
_discovery Unify WebUI icons and fix message collapsing 2026-07-31 13:32:41 +00:00
_document_query fix(prompts): validate examples and sharpen skill descriptions 2026-09-08 02:37:44 +02:00
_editor Simplify Files navigation and preserve picker lifecycle 2026-09-17 04:23:42 +02:00
_email_integration Keep Email configuration as the sole plugin page 2026-09-12 17:28:23 +02:00
_error_retry Surface provider refusals and stop automatic retries 2026-09-23 15:19:12 +02:00
_goal Document remaining tool arguments in prompts and DOX 2026-09-10 17:00:19 +03: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 Polish Files and Memory selection toolbars 2026-09-08 16:01:52 +02:00
_migrate_agents Remove Migrate Agents sidebar shortcut 2026-08-12 14:51:19 +02:00
_model_config Cache parsed global model presets 2026-09-23 18:10:54 +02:00
_oauth Reuse pooled connections for Codex upstream requests 2026-09-23 18:11:36 +02:00
_office Keep LibreOffice saves on the renamed document 2026-09-17 04:41:34 +02: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 fix(prompts): validate examples and sharpen skill descriptions 2026-09-08 02:37:44 +02:00
_pin_to_top fix(pin-to-top): scope indicators to shared row components 2026-09-22 21:32:43 +02:00
_plugin_installer Rebase local plugin commits during updates 2026-09-16 00:44:04 +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
_sidebar_folders Reduce sidebar agent indentation and remove row tooltips 2026-09-23 18:44:19 +02:00
_skills Add profile skill visibility policies 2026-08-12 14:34:15 +02:00
_telegram_integration Extend slash command support to WhatsApp 2026-09-14 14:08:47 +02:00
_text_editor Fix flashing process groups during memory search 2026-09-16 16:17:37 +02: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 Extend slash command support to WhatsApp 2026-09-14 14:08:47 +02:00
_whisper_stt Improve Browser startup and annotations 2026-08-16 15:22:10 +02:00
AGENTS.md feat(sidebar-folders): organize chats and tasks by project 2026-09-22 23:05:11 +02:00
README.md refactor(skills): consolidate plugin authoring and discovery 2026-09-08 03:09: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.