Remove memory-plugin assumptions from root and non-plugin DOX contracts so disabled plugins are not implied as available runtime behavior.
Keep the memory plugin documented only in its owning plugin subtree and mark it optional from the parent plugin index.
Split the monolithic a0-development skill into a lean entry point plus focused reference files for runtime, DOX, tools, extensions, API/WebUI, profiles, prompts, skills, projects, and plugin workflow.
Update the skill DOX ownership for the new references directory and clarify the root framework-vs-agent Python runtimes plus port-discovery guidance.
Verified with git diff --check, targeted skill/tool tests under PYTHONPATH, and live localhost:32769 skill loading/read_file checks before committing.
Introduce a new prompt "protocol" separate from extras: add LoopData.protocol_temporary and protocol_persistent, include protocol contents before message history during prompt construction, and clear temporary protocol data each turn. Add helper _build_context_message to render protocol/extras, update response input conversion to include protocol, and move project instructions & active/loaded skills injection into protocol. Update docs, prompts, plugin metadata, the SkillsTool message, and add tests to verify protocol placement and behavior.
Limit LiteLLM module mutation to documented global switches such as drop_params, while preserving configured LiteLLM kwargs as per-call options. Avoid freezing global kwargs into provider defaults so runtime settings remain current, and extend focused tests for drop_params, additional_drop_params, and provider default behavior.
Upgrade LiteLLM to 1.88.1 so Agent Zero is above the CVE-2026-42271 patched floor, and move the OpenAI SDK pin to 2.41.1 to satisfy LiteLLM's new dependency range.
Pin Starlette to the patched 1.0.1 release for the Host-header request.url.path advisory.
Fold requirements2.txt back into requirements.txt now that browser-use is no longer part of the repo dependency set, and update installer and setup docs to use a single requirements file.
Add selectable workspace support to the Time Travel plugin and introduce normalized global LiteLLM configuration handling.
models.py: add DEFAULT_LITELLM_GLOBAL_KWARGS and helpers to normalize, load, apply, and merge LiteLLM global kwargs; call configure_litellm/set per-call merges in LiteLLM wrappers so framework defaults, configured globals, and per-call overrides combine correctly. Add tests to assert merging and runtime application.
plugins/_time_travel: update docs and plugin metadata to describe workdir/project selection. API handlers now accept workspace_id and a new history_workspaces endpoint lists selectable workspaces. helpers/time_travel: implement workspace listing, selection, and resolution logic (workdir/project options, availability/locking, default selection). UI: add workspace picker to time-travel panel, wire selection/load into time-travel store, pass workspace_id to API calls, and add click hook to open the panel. Update styles and refresh/load behavior accordingly.
Tests: extend tests for LiteLLM global kwargs merging and adapt stream test to expect merged params; add tests for selectable workspaces, default selection, and locked external workdir handling.
Introduce DOX (AGENTS.md) contracts across the repository to formalize ownership and local work contracts: adds .github/AGENTS.md plus AGENTS.md files for agents, api, conf, docker, docs, extensions, helpers, knowledge, lib, plugins, prompts, scripts, skills, tests, tools, usr, webui (and several subfolders). Update root AGENTS.md (content and last-updated date) to include DOX framework guidance and a child DOX index. Update .gitignore to allow usr/ and usr/plugins AGENTS.md files. Remove legacy deep-dive files under docs/agents (banners, components, modals, plugins) and migrate frontend/plugin references to webui/ and plugins/ DOX locations. Also adjust plugins/README.md and several skills/*/SKILL.md files to align with the new DOX layout.
- Remove RELEASE_NOTES_DIR env var and docs/release_notes/ directory with v1.0 and v1.1 markdown files
- Add OPENROUTER_API_KEY and OPENROUTER_MODEL to workflow environment variables
- Add OPENROUTER_CHAT_COMPLETIONS_URL constant and OPENROUTER_SYSTEM_PROMPT_PATH pointing to scripts/openrouter_release_notes_system_prompt.md
- Add require_env, load_text, github_repository_parts, github_api_get helpers
Move plugin config modal initialization into pluginSettingsStore.openConfig(), so callers only pass plugin name and optional scope. Resolve invalid project/agent scopes inside the store, initialize toggle state on the resolved scope, remove the old saveMode/core-save path, and delete stale saveMode guidance from docs and plugin skills.
docs: update installation guide thumbnail and URL
- Updated the video URL and thumbnail to be the new script-based installation guide from YT in README.md and internal docs.
---
- Standardize Python imports for user plugins to `usr.plugins.<plugin_name>...`,
replacing sys.path hacks and symlink-dependent patterns
- Add cleanup policy: plugins must not leave permanent system modifications
(symlinks, orphaned services, stray files) after deletion
- Remove superseded plugin-import-standards-report.md (recommendations are now
integrated into the actual docs)
- Updated surfaces: AGENTS.md, AGENTS.plugins.md, developer/plugins.md,
a0-create-plugin skill
---
update AGENTS.md and enhance agent-facing knowledge of A0
Enhanced the knowledge of the framework by removing the 1:1 copy of our GitHub README.md at the root and replacing it with a docs set for agents, to know more about Agent Zero without all the noise from URLs, explanations meant only for users.
Updated AGENTS.md accordingly.
Add @extension.extensible decorators to all plugin API handler methods and core plugin functions to enable extension points. Implement plugin hooks system allowing plugins to define custom behavior via hooks.py file. Add call_plugin_hook function to execute plugin-specific hooks for events like uninstall, save_plugin_config, and get_plugin_config. Introduce uninstall_plugin function that calls uninstall hook before deletion. Move circular
Refactor plugin settings to use a per-modal prototype/context instead of binding directly to the global store. Introduces pluginSettingsPrototype (renamed export) and a lightweight instantiate helper (Alpine.magic('instantiate')) to clone the prototype into a modal-local context. Plugin config HTMLs (code_execution, infection_check, memory, text_editor) now bind UI fields to config.* and use context.* for modal-level state and actions; plugin settings components (plugin-settings.html, plugin-configs.html, plugin-settings-store.js, pluginListStore.js) were updated to create and consume the local context and to pass context into nested modals. Documentation and the SKILL guide were updated to describe the new modal contract and usage. This change scopes settings UI state to modal instances, enabling safer local state and easier integration with core-setting wrappers (use context.saveMode = 'core').
- Updated documentation to reflect the new plugin structure and activation rules.
- Refactored activation rules related code in the API and frontend to accommodate the new plugin settings and activation logic.
- Added support for clearing per-scope overrides when toggling plugins.