Files
wings88/.a0proj/memory/index.pkl
T

1247 lines
50 KiB
Plaintext
Raw Normal View History

2026-03-22 11:11:45 +00:00
ÈŒ&langchain_community.docstore.in_memory”ŒInMemoryDocstore”“”)”}”Œ_dict”}”(Œ
KV5nnBpdaM”Œlangchain_core.documents.base”ŒDocument”“”)”}”(Œ__dict__”}”(Œid”hŒmetadata”}”(Œsource”Œ)/a0/knowledge/main/about/github_readme.md”Œarea”Œmain”Œ source_file”Œgithub_readme.md”Œ source_path”hŒ file_type”Œmd”Œknowledge_source”ˆŒimport_timestamp”NhhŒ timestamp”Œ2026-03-21 10:10:32”uŒ page_content”X <div align="center">
# `Agent Zero`
<p align="center">
<a href="https://trendshift.io/repositories/11745" target="_blank"><img src="https://trendshift.io/api/badge/repositories/11745" alt="frdel%2Fagent-zero | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
</p>
[![Agent Zero Website](https://img.shields.io/badge/Website-agent--zero.ai-0A192F?style=for-the-badge&logo=vercel&logoColor=white)](https://agent-zero.ai) [![Thanks to Sponsors](https://img.shields.io/badge/GitHub%20Sponsors-Thanks%20to%20Sponsors-FF69B4?style=for-the-badge&logo=githubsponsors&logoColor=white)](https://github.com/sponsors/agent0ai) [![Follow on X](https://img.shields.io/badge/X-Follow-000000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/Agent0ai) [![Join our Discord](https://img.shields.io/badge/Discord-Join%20our%20server-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/B8KZKNsPpj) [![Subscribe on YouTube](https://img.shields.io/badge/YouTube-Subscribe-red?style=for-the-badge&logo=youtube&logoColor=white)](https://www.youtube.com/@AgentZeroFW) [![Connect on LinkedIn](https://img.shields.io/badge/LinkedIn-Connect-blue?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/jan-tomasek/) [![Follow on Warpcast](https://img.shields.io/badge/Warpcast-Follow-5A32F3?style=for-the-badge)](https://warpcast.com/agent-zero)
## Documentation:
[Introduction](#a-personal-organic-agentic-framework-that-grows-and-learns-with-you) •
[Installation](./docs/setup/installation.md) •
[How to update](./docs/setup/installation.md#how-to-update-agent-zero) <br>
[Development Setup](./docs/setup/dev-setup.md) •
[Usage](./docs/guides/usage.md)
Or see DeepWiki generated documentation:
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/agent0ai/agent-zero)
</div>
<div align="center">
> ### 🚨 **AGENT ZERO SKILLS** 🚨
> **Skills System** - portable, structured agent capabilities using the open `SKILL.md` standard (compatible with Claude Code, Codex and more).
>
> **Plus:** Git-based Projects with authentication for public/private repositories - clone codebases directly into isolated workspaces.
>
> See [Usage Guide](./docs/guides/usage.md) and [Projects Tutorial](./docs/guides/projects.md) to get started.
</div>
[![Showcase](/docs/res/showcase-thumb.png)](https://youtu.be/lazLNcEYsiQ)
## A personal, organic agentic framework that grows and learns with you
- Agent Zero is not a predefined agentic framework. It is designed to be dynamic, organically growing, and learning as you use it.
- Agent Zero is fully transparent, readable, comprehensible, customizable, and interactive.
- Agent Zero uses the computer as a tool to accomplish its (your) tasks.
# âš™ï¸ Installation
Click to open a video to learn how to install Agent Zero:
[![Easy Installation guide](/docs/res/easy_ins_vid.png)](https://www.youtube.com/watch?v=w5v5Kjx51hs)
A detailed setup guide for Windows, macOS, and Linux with a video can be found in the Agent Zero Documentation at [this page](./docs/setup/installation.md).
### âš¡ Quick Start
```bash
# Pull and run with Docker
docker pull agent0ai/agent-zero
docker run -p 50001:80 agent0ai/agent-zero
# Visit http://localhost:50001 to start
```
# 💡 Key Features
1. **General-purpose Assistant**
- Agent Zero is not pre-programmed for specific tasks (but can be). It is meant to be a general-purpose personal assistant. Give it a task, and it will gather information, execute commands and code, cooperate with other agent instances, and do its best to accomplish it.
- It has a persistent memory, allowing it to memorize previous solutions, code, facts, instructions, etc., to solve tasks faster and more reliably in the future.
![Agent 0 Working](/docs/res/ui_screen2.png)
2. **Computer as a Tool**”Œtype”h uŒ__pydantic_extra__”NŒ__pydantic_fields_set__””(hhhŒ__pydantic_private__”NubŒ
Dfl2s19T3t”h
)”}”(h
}”(hh&h}”(hhhhhhhhhhhˆhNhh&hhuhX"![Agent 0 Working](/docs/res/ui_screen2.png)
2. **Computer as a Tool**
- Agent Zero uses the operating system as a tool to accomplish its tasks. It has no single-purpose tools pre-programmed. Instead, it can write its own code and use the terminal to create and use its own tools as needed.
- The only default tools in its arsenal are online search, memory features, communication (with the user and other agents), and code/terminal execution. Everything else is created by the agent itself or can be extended by the user.
- Tool usage functionality has been developed from scratch to be the most compatible and reliable, even with very small models.
- **Default Tools:** Agent Zero includes tools like knowledge, code execution, and communication.
- **Creating Custom Tools:** Extend Agent Zero's functionality by creating your own custom tools.
- **Skills (SKILL.md Standard):** Skills are contextual expertise loaded dynamically when relevant. They use the open SKILL.md standard (developed by Anthropic), making them compatible with Claude Code, Cursor, Goose, OpenAI Codex CLI, and GitHub Copilot.
3. **Multi-agent Cooperation**
- Every agent has a superior agent giving it tasks and instructions. Every agent then reports back to its superior.
- In the case of the first agent in the chain (Agent 0), the superior is the human user; the agent sees no difference.
- Every agent can create its subordinate agent to help break down and solve subtasks. This helps all agents keep their context clean and focused.
![Multi-agent](docs/res/usage/multi-agent.png)
4. **Completely Customizable and Extensible**
- Almost nothing in this framework is hard-coded. Nothing is hidden. Everything can be extended or changed by the user.
- The whole behavior is defined by a system prompt in the **prompts/default/agent.system.md** file. Change this prompt and change the framework dramatically.
- The framework does not guide or limit the agent in any way. There are no hard-coded rails that agents have to follow.
- Every prompt, every small message template sent to the agent in its communication loop can be found in the **prompts/** folder and changed.
- Every default tool can be found in the **python/tools/** folder and changed or copied to create new predefined tools.
- **Automated configuration** via `A0_SET_` environment variables for deployment automation and easy setup.
![Prompts](/docs/res/profiles.png)
5. **Communication is Key**
- Give your agent a proper system prompt and instructions, and it can do miracles.
- Agents can communicate with their superiors and subordinates, asking questions, giving instructions, and providing guidance. Instruct your agents in the system prompt on how to communicate effectively.
- The terminal interface is real-time streamed and interactive. You can stop and intervene at any point. If you see your agent heading in the wrong direction, just stop and tell it right away.
- There is a lot of freedom in this framework. You can instruct your agents to regularly report back to superiors asking for permission to continue. You can instruct them to use point-scoring systems when deciding when to delegate subtasks. Superiors can double-check subordinates' results and dispute. The possibilities are endless.
## 🚀 Real-world use cases
- **Financial Analysis & Charting** - `"Find last month's Bitcoin/USD price trend, correlate with major cryptocurrency news events, generate annotated chart with highlighted key dates"`
- **Excel Automation Pipeline** - `"Scan incoming directory for financial spreadsheets, validate and clean data, consolidate from multiple sources, generate executive reports with flagged anomalies"`
- **API Integration Without Code** - `"Use this Google Gemini API snippet to generate product images, remember the integration for future use"` - agent learns and stores the solution in memory”h!h uh"Nh#”(hhhh%NubŒ
9DLQfNjrxt”h
)”}”(h
}”(hh-h}”(hhhhhhhhhhhˆhNhh-hhuhX - **API Integration Without Code** - `"Use this Google Gemini API snippet to generate product images, remember the integration for future use"` - agent learns and stores the solution in memory
- **Automated Server Monitoring** - `"Check server status every 30 minutes: CPU usage, disk space, memory. Alert if metrics exceed thresholds"` (scheduled task with project-scoped credentials)
- **Multi-Client Project Isolation** - Separate projects for each client with isolated memory, custom instructions, and dedicated secrets - prevents context bleed across sensitive work
## 🳠Fully Dockerized, with Speech-to-Text and TTS
![Settings](docs/res/settings-page-ui1.png)
- Customizable settings allow users to tailor the agent's behavior and responses to their needs.
- The Web UI output is very clean, fluid, colorful, readable, and interactive; nothing is hidden.
- You can load or save chats directly within the Web UI.
- The same output you see in the terminal is automatically saved to an HTML file in **logs/** folder for every session.
![Time example](/docs/res/time_example.jpg)
- Agent output is streamed in real-time, allowing users to read along and intervene at any time.
- No coding is required; only prompting and communication skills are necessary.
- With a solid system prompt, the framework is reliable even with small models, including precise tool usage.
## 👀 Keep in Mind
1. **Agent Zero Can Be Dangerous!**
- With proper instruction, Agent Zero is capable of many things, even potentially dangerous actions concerning your computer, data, or accounts. Always run Agent Zero in an isolated environment (like Docker) and be careful what you wish for.
2. **Agent Zero Is Prompt-based.**
- The whole framework is guided by the **prompts/** folder. Agent guidelines, tool instructions, messages, utility AI functions, it's all there.
## 📚 Read the Documentation
| Page | Description |
|-------|-------------|
| [Installation](./docs/setup/installation.md) | Installation, setup and configuration |
| [Usage](./docs/guides/usage.md) | Basic and advanced usage |
| [Guides](./docs/guides/) | Step-by-step guides: Usage, Projects, API Integration, MCP Setup, A2A Setup |
| [Development Setup](./docs/setup/dev-setup.md) | Development and customization |
| [WebSocket Infrastructure](./docs/developer/websockets.md) | Real-time WebSocket handlers, client APIs, filtering semantics, envelopes |
| [Extensions](./docs/developer/extensions.md) | Extending Agent Zero |
| [Connectivity](./docs/developer/connectivity.md) | External API endpoints, MCP server connections, A2A protocol |
| [Architecture](./docs/developer/architecture.md) | System design and components |
| [Contributing](./docs/guides/contribution.md) | How to contribute |
| [Troubleshooting](./docs/guides/troubleshooting.md) | Common issues and their solutions |
## 🎯 Changelog
### v0.9.8 - Skills, UI Redesign & Git projects
[Release video](https://youtu.be/NV7s78yn6DY)”h!h uh"Nh#”(hhhh%NubŒ
tLBC2pmMzx”h
)”}”(h
}”(hh4h}”(hhhhhhhhhhhˆhNhh4hhuh
## 🎯 Changelog
### v0.9.8 - Skills, UI Redesign & Git projects
[Release video](https://youtu.be/NV7s78yn6DY)
- Skills
- Skills System replacing the legacy Instruments with a new `SKILL.md` standard for structured, portable agent capabilities.
- Built-in skills, and UI support for importing and listing skills
- Real-time WebSocket infrastructure replacing the polling-based approach for UI state synchronization
- UI Redesign
- Process groups to visually group agent actions with expand/collapse support
- Timestamps, steps count and execution time with tool-specific badges
- Step detail modals with key-value and raw JSON display
- Collapsible responses with show more/less and copy buttons on code blocks and tables
- Message queue system allowing users to queue messages while the agent is still processing
- In-browser file editor for viewing and editing files without leaving the UI
- Welcome screen redesign with info and warning banners for connection security, missing API keys, and system resources
- Scheduler redesign with standalone modal, separate task list, detail and editor components, and project support
- Smooth response rendering and scroll stabilization across chat, terminals, and image viewer
- Chat width setting and reworked preferences panel
- Image viewer improvements with scroll support and expanded viewer
- Redesigned sidebar with reusable dropdown component and streamlined buttons
- Inline button confirmations for critical actions
- Improved login design and new logout button
- File browser enhanced with rename and file actions dropdown
- Git projects
- Git-based projects with clone authentication for public and private repositories
- Four new LLM providers: CometAPI, Z.AI, Moonshot AI, and AWS Bedrock
- Microsoft Dev Tunnels integration for secure remote access
- User data migration to `/usr` directory for cleaner separation of user and system files
- Subagents system with configurable agent profiles for different roles
- Memory operations offloaded to deferred tasks for better performance
- Environment variables can now configure settings via `A0_SET_*` prefix in `.env`
- Automatic migration with overwrite support for `.env`, scheduler, knowledge, and legacy directories
- Projects support extended to MCP, A2A, and external API
- Workdir outside project support for more flexible file organization
- Agent number tracking in backend and responses for multi-agent identification
- Many bug fixes and stability improvements across the UI, MCP tools, scheduler, uploads, and WebSocket handling
### v0.9.7 - Projects
[Release video](https://youtu.be/RrTDp_v9V1c)
- Projects management
- Support for custom instructions
- Integration with memory, knowledge, files
- Project specific secrets
- New Welcome screen/Dashboard
- New Wait tool
- Subordinate agent configuration override support
- Support for multiple documents at once in document_query_tool
- Improved context on interventions
- Openrouter embedding support
- Frontend components refactor and polishing
- SSH metadata output fix
- Support for windows powershell in local TTY utility
- More efficient selective streaming for LLMs
- UI output length limit improvements
### v0.9.6 - Memory Dashboard
[Release video](https://youtu.be/sizjAq2-d9s)
- Memory Management Dashboard
- Kali update
- Python update + dual installation
- Browser Use update
- New login screen
- LiteLLM retry on temporary errors
- Github Copilot provider support”h!h uh"Nh#”(hhhh%NubŒ
sTm0FPSqKv”h
)”}”(h
}”(hh;h}”(hhhhhhhhhhhˆhNhh;hhuhXj### v0.9.5 - Secrets
[Release video](https://www.youtube.com/watch?v=VqxUdt7pjd8)
- Secrets management - agent can use credentials without seeing them
- Agent can copy paste messages and files without rewriting them
- LiteLLM global configuration field
- Custom HTTP headers field for browser agent
- Progressive web app support
- Extra model params support for JSON
- Short IDs for files and memories to prevent LLM errors
- Tunnel component frontend rework
- Fix for timezone change bug
- Notifications z-index fix
### v0.9.4 - Connectivity, UI
[Release video](https://www.youtube.com/watch?v=C2BAdDOduIc)
- External API endpoints
- Streamable HTTP MCP A0 server
- A2A (Agent to Agent) protocol - server+client
- New notifications system
- New local terminal interface for stability
- Rate limiter integration to models
- Delayed memory recall
- Smarter autoscrolling in UI
- Action buttons in messages
- Multiple API keys support
- Download streaming
- Tunnel URL QR code
- Internal fixes and optimizations
### v0.9.3 - Subordinates, memory, providers Latest
[Release video](https://www.youtube.com/watch?v=-LfejFWL34k)
- Faster startup/restart
- Subordinate agents can have dedicated prompts, tools and system extensions
- Streamable HTTP MCP server support
- Memory loading enhanced by AI filter
- Memory AI consolidation when saving memories
- Auto memory system configuration in settings
- LLM providers available are set by providers.yaml configuration file
- Venice.ai LLM provider supported
- Initial agent message for user + as example for LLM
- Docker build support for local images
- File browser fix
### v0.9.2 - Kokoro TTS, Attachments
[Release video](https://www.youtube.com/watch?v=sPot_CAX62I)
- Kokoro text-to-speech integration
- New message attachments system
- Minor updates: log truncation, hyperlink targets, component examples, api cleanup
### v0.9.1 - LiteLLM, UI improvements
[Release video](https://youtu.be/crwr0M4Spcg)
- Langchain replaced with LiteLLM
- Support for reasoning models streaming
- Support for more providers
- Openrouter set as default instead of OpenAI
- UI improvements
- New message grouping system
- Communication smoother and more efficient
- Collapsible messages by type
- Code execution tool output improved
- Tables and code blocks scrollable
- More space efficient on mobile
- Streamable HTTP MCP servers support
- LLM API URL added to models config for Azure, local and custom providers
### v0.9.0 - Agent roles, backup/restore
[Release video](https://www.youtube.com/watch?v=rMIe-TC6H-k)
- subordinate agents can use prompt profiles for different roles
- backup/restore functionality for easier upgrades
- security and bug fixes
### v0.8.7 - Formatting, Document RAG Latest
[Release video](https://youtu.be/OQJkfofYbus)
- markdown rendering in responses
- live response rendering
- document Q&A tool
### v0.8.6 - Merge and update
[Release video](https://youtu.be/l0qpK3Wt65A)
- Merge with Hacking Edition
- browser-use upgrade and integration re-work
- tunnel provider switch
### v0.8.5 - **MCP Server + Client**
[Release video](https://youtu.be/pM5f4Vz3_IQ)
- Agent Zero can now act as MCP Server
- Agent Zero can use external MCP servers as tools
### v0.8.4.1 - 2
Default models set to gpt-4.1
- Code execution tool improvements
- Browser agent improvements
- Memory improvements
- Various bugfixes related to context management
- Message formatting improvements
- Scheduler improvements
- New model provider
- Input tool fix
- Compatibility and stability improvements
### v0.8.4
[Release video](https://youtu.be/QBh_h_D_E24)
- **Remote access (mobile)**
### v0.8.3.1
[Release video](https://youtu.be/AGNpQ3_GxFQ)
- **Automatic embedding**
### v0.8.3
[Release video](https://youtu.be/bPIZo0poalY)
- ***Planning and scheduling***
### v0.8.2
[Release video](https://youtu.be/xMUNynQ9x6Y)
- **Multitasking in terminal**
- **Chat names**”h!h uh"Nh#”(hhhh%NubŒ
1K14cggHPO”h
)”}”(h
}”(hhBh}”(hhhhhhhhhhhˆhNhhBhhuh### v0.8.3
[Release video](https://youtu.be/bPIZo0poalY)
- ***Planning and scheduling***
### v0.8.2
[Release video](https://youtu.be/xMUNynQ9x6Y)
- **Multitasking in terminal**
- **Chat names**
### v0.8.1
[Release video](https://youtu.be/quv145buW74)
- **Browser Agent**
- **UX Improvements**
### v0.8
[Release video](https://youtu.be/cHDCCSr1YRI)
- **Docker Runtime**
- **New Messages History and Summarization System**
- **Agent Behavior Change and Management**
- **Text-to-Speech (TTS) and Speech-to-Text (STT)**
- **Settings Page in Web UI**
- **SearXNG Integration Replacing Perplexity + DuckDuckGo**
- **File Browser Functionality**
- **KaTeX Math Visualization Support**
- **In-chat File Attachments**
### v0.7
[Release video](https://youtu.be/U_Gl0NPalKA)
- **Automatic Memory**
- **UI Improvements**
- **Instruments**
- **Extensions Framework**
- **Reflection Prompts**
- **Bug Fixes**
## 🤠Community and Support
- [Join our Discord](https://discord.gg/B8KZKNsPpj) for live discussions or [visit our Skool Community](https://www.skool.com/agent-zero).
- [Follow our YouTube channel](https://www.youtube.com/@AgentZeroFW) for hands-on explanations and tutorials
- [Report Issues](https://github.com/agent0ai/agent-zero/issues) for bug fixes and features”h!h uh"Nh#”(hhhh%NubŒ
2D6FRytthd”h
)”}”(h
}”(hhIh}”(hŒ(/a0/knowledge/main/about/installation.md”hhhŒinstallation.md”hhNhŒmd”hˆhNhhIhŒ2026-03-21 10:10:32”uh# Installation Guide
Click to open a video to learn how to install Agent Zero:
[![Easy Installation guide](../res/easy_ins_vid.png)](https://www.youtube.com/watch?v=w5v5Kjx51hs)
## **Goal:** Go from zero to a first working chat with minimal setup.
## Step 1: Install Docker Desktop
Docker Desktop provides the runtime environment for Agent Zero, ensuring consistent behavior and security across platforms. The entire framework runs within a Docker container, providing isolation and easy deployment.
**Choose your operating system:**
<table>
<tr>
<td align="center" width="33%">
<a href="#windows-installation">
<img src="../res/setup/oses/windows.png" width="80" alt="Windows"/><br/>
<b>Windows</b>
</a>
</td>
<td align="center" width="33%">
<a href="#macos-installation">
<img src="../res/setup/oses/apple.png" width="80" alt="macOS"/><br/>
<b>macOS</b>
</a>
</td>
<td align="center" width="33%">
<a href="#linux-installation">
<img src="../res/setup/oses/linux.png" width="80" alt="Linux"/><br/>
<b>Linux</b>
</a>
</td>
</tr>
</table>
---
<a name="windows-installation"></a>
## <img src="../res/setup/oses/windows.png" width="30" alt="Windows"/> Windows Installation
**1.1. Download Docker Desktop**
Go to the [Docker Desktop download page](https://www.docker.com/products/docker-desktop/) and download the Windows version (Intel/AMD is the main download button).
<img src="../res/setup/image-8.png" alt="docker download" width="200"/>
<br><br>
**1.2. Run the Installer**
Run the installer with default settings.
<img src="../res/setup/image-9.png" alt="docker install" width="300"/>
<img src="../res/setup/image-10.png" alt="docker install" width="300"/>
<br><br>
**1.3. Launch Docker Desktop**
Once installed, launch Docker Desktop from your Start menu or desktop shortcut.
<img src="../res/setup/image-11.png" alt="docker installed" height="100"/>
✅ **Docker is now installed!**
### Continue to [Step 2: Run Agent Zero](#step-2-run-agent-zero)
---
<a name="macos-installation"></a>
## <img src="../res/setup/oses/apple.png" width="30" alt="macOS"/> macOS Installation
**1.1. Download Docker Desktop**
Go to the [Docker Desktop download page](https://www.docker.com/products/docker-desktop/) and download the macOS version (choose Apple Silicon or Intel based on your Mac).
<img src="../res/setup/image-8.png" alt="docker download" width="200"/>
<br><br>
**1.2. Install Docker Desktop**
Drag and drop the Docker application to your Applications folder.
<img src="../res/setup/image-12.png" alt="docker install" width="300"/>
<br><br>
**1.3. Launch Docker Desktop**
Open Docker Desktop from your Applications folder.
<img src="../res/setup/image-13.png" alt="docker installed" height="100"/>
<br><br>
**1.4. Configure Docker Socket**
> [!NOTE]
> **Important macOS Configuration:** In Docker Desktop's preferences (Docker menu) → Settings → Advanced, enable "Allow the default Docker socket to be used (requires password)."
![docker socket macOS](../res/setup/macsocket.png)
✅ **Docker is now installed!**
### Continue to [Step 2: Run Agent Zero](#step-2-run-agent-zero)
---
<a name="linux-installation"></a>
## <img src="../res/setup/oses/linux.png" width="30" alt="Linux"/> Linux Installation
**1.1. Choose Installation Method**
You can install either Docker Desktop or docker-ce (Community Edition).
**Option A: Docker Desktop (Recommended for beginners)**
Follow the instructions for your specific Linux distribution [here](https://docs.docker.com/desktop/install/linux-install/).
**Option B: docker-ce (Lightweight alternative)**
Follow the installation instructions [here](https://docs.docker.com/engine/install/).
**1.2. Post-Installation Steps (docker-ce only)**
If you installed docker-ce, add your user to the `docker` group:
```bash
sudo usermod -aG docker $USER
```
Log out and back in, then authenticate:
```bash
docker login
```
**1.3. Launch Docker**
If you installed Docker Desktop, launch it from your applications menu.”h!h uh"Nh#”(hhhh%NubŒ
oWQAtW44VO”h
)”}”(h
}”(hhTh}”(hhNhhhhOhhNhhPhˆhNhhThhQuhX%Log out and back in, then authenticate:
```bash
docker login
```
**1.3. Launch Docker**
If you installed Docker Desktop, launch it from your applications menu.
✅ **Docker is now installed!**
> [!TIP]
> **Deploying on a VPS/Server?** For production deployments with reverse proxy, SSL, and domain configuration, see the [VPS Deployment Guide](vps-deployment.md).
---
## Step 2: Run Agent Zero
### 2.1. Pull the Agent Zero Docker Image
**Using Docker Desktop GUI:**
- Search for `agent0ai/agent-zero` in Docker Desktop
- Click the `Pull` button
- The image will be downloaded to your machine in a few minutes
![docker pull](../res/setup/1-docker-image-search.png)
**Using Terminal:**
```bash
docker pull agent0ai/agent-zero
```
### 2.2. (Optional) Map Folders for Persistence
Choose or create a folder on your computer where Agent Zero will save its data.
### Setting up persistence is needed only if you want your data and files to remain available even after you delete the container.
You can pick any location you find convenient:
- **Windows:** `C:\agent-zero-data`
- **macOS/Linux:** `/home/user/agent-zero-data`
You can map just the `/a0/usr` directory (recommended) or individual subfolders of `/a0` to a local directory.
> [!CAUTION]
> Do **not** map the entire `/a0` directory: it contains the application code and can break upgrades.
> [!TIP]
> Choose a location that's easy to access and backup. All your Agent Zero data will be directly accessible in this directory.
### 2.3. Run the Container
**Using Docker Desktop GUI:**
- In Docker Desktop, go to the "Images" tab
- Click the `Run` button next to the `agent0ai/agent-zero` image
- Open the "Optional settings" menu
- **Ensure at least one host port is mapped to container port `80`** (set host port to `0` for automatic assignment)
- Click the `Run` button
![docker port mapping](../res/setup/2-docker-image-run.png)
![docker volume mapping](../res/setup/2-docker-image-run-3.png)
The container will start and show in the "Containers" tab:
![docker containers](../res/setup/4-docker-container-started.png)
### 2.4. Access the Web UI
The framework will take a few seconds to initialize. Find the mapped port in Docker Desktop (shown as `<PORT>:80`) or click the port right under the container ID:
![docker logs](../res/setup/5-docker-click-to-open.png)
Open `http://localhost:<PORT>` in your browser. The Web UI will open - Agent Zero is ready for configuration!
![docker ui](../res/setup/6-docker-a0-running-new.png)
> [!TIP]
> You can also access the Web UI by clicking the port link directly under the container ID in Docker Desktop.
> [!NOTE]
> After starting the container, you'll find all Agent Zero files in your chosen directory. You can access and edit these files directly on your machine, and the changes will be immediately reflected in the running container.
**Running A0 using Terminal?**
```bash
docker run -p 0:80 -v /path/to/your/work_dir:/a0/usr agent0ai/agent-zero
```
- Replace `0` with a fixed port if you prefer (e.g., `50080:80`)
---
## Step 3: Configure Agent Zero
The UI will show a warning banner "Missing LLM API Key for current settings". Click on `Add your API key` to enter Settings and start configuring A0.
### Settings Configuration
Agent Zero provides a comprehensive settings interface to customize various aspects of its functionality. Access the settings by clicking the "Settings" button with a gear icon in the sidebar.
### Agent Configuration
- **Agent Profile:** Select the agent profile (e.g., `agent0`, `hacker`, `researcher`). Profiles can override prompts, tools, and extensions.
- **Memory Subdirectory:** Select the subdirectory for agent memory storage, allowing separation between different instances.
- **Knowledge Subdirectory:** Specify the location of custom knowledge files to enhance the agent's understanding.”h!h uh"Nh#”(hhhh%NubŒ
b1rgZuFvWO”h
)”}”(h
}”(hh[h}”(hhNhhhhOhhNhhPhˆhNhh[hhQuhXv> [!NOTE]
> Since v0.9.7, custom prompts belong in `/a0/agents/<agent_name>/prompts/` rather than a shared `/prompts` folder. See the [Extensions guide](../developer/extensions.md#prompts) for details.
> [!NOTE]
> The Hacker profile is included in the main image. After launch, choose the **hacker** agent profile in Settings if you want the security-focused prompts and tooling. The "hacker" branch is deprecated.
![settings](../res/setup/settings/1-agentConfig.png)
### Chat Model Settings
- **Provider:** Select the chat model provider (e.g., Anthropic)
- **Model Name:** Choose the specific model (e.g., claude-sonnet-4-5)
- **Context Length:** Set the maximum token limit for context window
- **Context Window Space:** Configure how much of the context window is dedicated to chat history
![chat model settings](../res/setup/settings/2-chat-model.png)
**Model naming is provider-specific.**
Use `claude-sonnet-4-5` for Anthropic, but use `anthropic/claude-sonnet-4-5` for OpenRouter. If you see "Invalid model ID," verify the provider and naming format on the provider website, or search the web for "<name-of-ai-model> model naming".
> [!TIP]
> **Context window tuning:** Set the total context window size first (for example, 100k), then adjust the chat history portion as a fraction of that total. A large fraction on a very large context window can still be enormous.
> [!TIP]
> **API URL:** URL of the API endpoint for the chat model - only needed for some providers like Ollama, LM Studio, Azure, etc.
### Utility Model Configuration
- **Provider & Model:** Select a model for utility tasks like memory organization and summarization
- **Temperature:** Adjust the determinism of utility responses
> [!NOTE]
> Utility models need to be strong enough to extract and consolidate memory reliably. Very small models (e.g., 4B) often fail at this; 70B-class models or high-quality cloud "flash/mini" models work best.
### Embedding Model Settings [Optional]
- **Provider:** Choose the embedding model provider (e.g., OpenAI)
- **Model Name:** Select the specific embedding model (e.g., text-embedding-3-small)
> [!NOTE]
> Agent Zero uses a local embedding model by default (runs on CPU), but you can switch to OpenAI embeddings like `text-embedding-3-small` or `text-embedding-3-large` if preferred.
### Speech to Text Options
- **Model Size:** Choose the speech recognition model size
- **Language Code:** Set the primary language for voice recognition
- **Silence Settings:** Configure silence threshold, duration, and timeout parameters for voice input
### API Keys
Configure API keys for various service providers directly within the Web UI. Click `Save` to confirm your settings.
> [!NOTE]
> **OpenAI API vs Plus subscription:** A ChatGPT Plus subscription does not include API credits. You must provide a separate API key for OpenAI usage in Agent Zero.
> [!TIP]
> For OpenAI-compatible providers (e.g., custom gateways or Z.AI/GLM), add the API key under **External Services → Other OpenAI-compatible API keys**, then select **OpenAI Compatible** as the provider in model settings.
> [!CAUTION]
> **GitHub Copilot Provider:** When using the GitHub Copilot provider, after selecting the model and entering your first prompt, the OAuth login procedure will begin. You'll find the authentication code and link in the output logs. Complete the authentication process by following the provided link and entering the code, then you may continue using Agent Zero.
### Authentication
- **UI Login:** Set username for web interface access
- **UI Password:** Configure password for web interface security
- **Root Password:** Manage Docker container root password for SSH access
![settings](../res/setup/settings/3-auth.png)
### Development Settings
- **RFC Parameters (local instances only):** Configure URLs and ports for remote function calls between instances
- **RFC Password:** Configure password for remote function calls”h!h uh"Nh#”(hhhh%NubŒ
FEYpysrqnM”h
)”}”(h
}”(hhbh}”(hhNhhhhOhhNhhPhˆhNhhbhhQuhX- **RFC Parameters (local instances only):** Configure URLs and ports for remote function calls between instances
- **RFC Password:** Configure password for remote function calls
Learn more about Remote Function Calls in the [Development Setup guide](dev-setup.md#step-6-configure-ssh-and-rfc-connection).
> [!IMPORTANT]
> Always keep your API keys and passwords secure.
> [!NOTE]
> On Windows host installs (non-Docker), you must use RFC to run shell code on the host system. The Docker runtime handles this automatically.
---
## Choosing Your LLMs
The Settings page is the control center for selecting the Large Language Models (LLMs) that power Agent Zero. You can choose different LLMs for different roles:
| LLM Role | Description |
| --- | --- |
| `chat_llm` | This is the primary LLM used for conversations and generating responses. |
| `utility_llm` | This LLM handles internal tasks like summarizing messages, managing memory, and processing internal prompts. Using a smaller, less expensive model here can improve efficiency. |
| `browser_llm` | This LLM powers the browser agent for web navigation and interaction tasks. Vision support is recommended for better page understanding. |
| `embedding_llm` | The embedding model shipped with A0 runs on CPU and is responsible for generating embeddings used for memory retrieval and knowledge base lookups. Changing the `embedding_llm` will re-index all of A0's memory. |
**How to Change:**
1. Open Settings page in the Web UI.
2. Choose the provider for the LLM for each role (Chat model, Utility model, Browser model, Embedding model) and write the model name.
3. Click "Save" to apply the changes.
### Important Considerations
#### Model Naming by Provider
Use the naming format required by your selected provider:
| Provider | Model Name Format | Example |
| --- | --- | --- |
| OpenAI | Model name only | `claude-sonnet-4-5` |
| OpenRouter | Provider prefix mostly required | `anthropic/claude-sonnet-4-5` |
| Ollama | Model name only | `gpt-oss:20b` |
> [!TIP]
> If you see "Invalid model ID," verify the provider and naming format on the provider website, or search the web for "<name-of-ai-model> model naming".
#### Context Window & Memory Split
- Set the **total context window** (e.g., 100k) first.
- Then tune the **chat history portion** as a fraction of that total.
- Extremely large totals can make even small fractions very large; adjust thoughtfully.
#### Utility Model Guidance
- Utility models handle summarization and memory extraction.
- Very small models (≈4B) usually fail at reliable context extraction.
- Aim for ~70B class models or strong cloud "flash/mini" models for better results.
#### Reasoning/Thinking Models
- Reasoning can increase cost and latency. Some models perform better **without** reasoning.
- If a model supports it, disable reasoning via provider-specific parameters (e.g., Venice `disable_thinking=true`).
---
## Installing and Using Ollama (Local Models)
Ollama is a powerful tool that allows you to run various large language models locally.
---
<a name="windows-ollama-installation"></a>
### <img src="../res/setup/oses/windows.png" width="30" alt="Windows"/> Windows Ollama Installation
Download and install Ollama from the official website:
<button>[Download Ollama Setup](https://ollama.com/download/OllamaSetup.exe)</button>
Once installed, continue to [Pulling Models](#pulling-models).
---
<a name="macos-ollama-installation"></a>
### <img src="../res/setup/oses/apple.png" width="30" alt="macOS"/> macOS Ollama Installation
**Using Homebrew:**
```bash
brew install ollama
```
**Using Installer:**
Download from the [official website](https://ollama.com/).
Once installed, continue to [Pulling Models](#pulling-models).
---
<a name="linux-ollama-installation"></a>
### <img src="../res/setup/oses/linux.png" width="30" alt="Linux"/> Linux Ollama Installation
Run the installation script:
```bash
curl -fsSL https://ollama.com/install.sh | sh
```”h!h uh"Nh#”(hhhh%NubŒ
LD7eM4Wsgc”h
)”}”(h
}”(hhih}”(hhNhhhhOhhNhhPhˆhNhhihhQuhRun the installation script:
```bash
curl -fsSL https://ollama.com/install.sh | sh
```
Once installed, continue to [Pulling Models](#pulling-models).
---
### Pulling Models
**Finding Model Names:**
Visit the [Ollama model library](https://ollama.com/library) for a list of available models and their corresponding names. Ollama models are referenced by **model name only** (for example, `llama3.2`).
**Pull a model:**
```bash
ollama pull <model-name>
```
Replace `<model-name>` with the name of the model you want to use. For example: `ollama pull mistral-large`
### Configuring Ollama in Agent Zero
1. Once you've downloaded your model(s), select it in the Settings page of the GUI.
2. Within the Chat model, Utility model, or Embedding model section, choose **Ollama** as provider.
3. Write your model code as expected by Ollama, in the format `llama3.2` or `qwen2.5:7b`
4. Provide your API base URL to your Ollama API endpoint, usually `http://host.docker.internal:11434`
5. Click `Save` to confirm your settings.
![ollama](../res/setup/settings/4-local-models.png)
> [!NOTE]
> If Agent Zero runs in Docker and Ollama runs on the host, ensure port **11434** is reachable from the container. If both services are in the same Docker network, you can use `http://<container_name>:11434` instead of `host.docker.internal`.
### Managing Downloaded Models
**Listing downloaded models:**
```bash
ollama list
```
**Removing a model:**
```bash
ollama rm <model-name>
```
> [!TIP]
> Experiment with different model combinations to find the balance of performance and cost that best suits your needs. E.g., faster and lower latency LLMs will help, and you can also use `faiss_gpu` instead of `faiss_cpu` for the memory.
---
## How to Update Agent Zero
> [!NOTE]
> Since v0.9, Agent Zero includes a Backup & Restore workflow in the Settings UI. This is the **safest** way to upgrade Docker instances.
### Recommended Update Process (Docker)
1. **Keep the old container running** and note its port.
2. **Pull the new image** (`agent0ai/agent-zero:latest`).
3. **Start a new container** on a different host port.
4. In the **old** instance, open **Settings → Backup & Restore** and create a backup.
5. In the **new** instance, restore that backup from the same panel.
> [!TIP]
> If the new instance fails to load settings, remove `/a0/usr/settings.json` and restart to regenerate default settings.
---
## Using Agent Zero on Your Mobile Device
Agent Zero can be accessed from mobile devices and other computers using the built-in **Tunnel feature**.
### Recommended: Using Tunnel (Remote Access)
The Tunnel feature allows secure access to your Agent Zero instance from anywhere:
1. Open Settings in the Web UI
2. Navigate to the **External Services** tab
3. Click on **Flare Tunnel** in the navigation menu
4. Click **Create Tunnel** to generate a secure HTTPS URL
5. Share this URL to access Agent Zero from any device
> [!IMPORTANT]
> **Security:** Always set a username and password in Settings → Authentication before creating a tunnel to secure your instance on the internet.
For complete details on tunnel configuration and security considerations, see the [Remote Access via Tunneling](../guides/usage.md#remote-access-via-tunneling) section in the Usage Guide.
### Alternative: Local Network Access
If you prefer to keep access limited to your local network:
1. Find the mapped port in Docker Desktop (format: `<PORT>:80`, e.g., `32771:80`)
2. Access from the same computer: `http://localhost:<PORT>`
3. Access from other devices on the network: `http://<YOUR_COMPUTER_IP>:<PORT>`
> [!TIP]
> Find your computer's IP address with `ipconfig` (Windows) or `ifconfig`/`ip addr` (macOS/Linux). It's usually in the format `192.168.x.x` or `10.0.x.x`.
For developers or users who need to run Agent Zero directly on their system, see the [In-Depth Guide for Full Binaries Installation](dev-setup.md).
---
## Advanced: Automated Configuration via Environment Variables”h!h uh"Nh#”(hhhh%NubŒ
p4B3ShreeS”h
)”}”(h
}”(hhph}”(hhNhhhhOhhNhhPhˆhNhhphhQuhX” ---
## Advanced: Automated Configuration via Environment Variables
Agent Zero settings can be automatically configured using environment variables with the `A0_SET_` prefix in your `.env` file. This enables automated deployments without manual configuration.
**Usage:**
Add variables to your `.env` file in the format:
```env
A0_SET_{setting_name}={value}
```
**Examples:**
```env
# Model configuration
A0_SET_chat_model_provider=anthropic
A0_SET_chat_model_name=claude-3-5-sonnet-20241022
A0_SET_chat_model_ctx_length=200000
# Memory settings
A0_SET_memory_recall_enabled=true
A0_SET_memory_recall_interval=5
# Agent configuration
A0_SET_agent_profile=custom
A0_SET_agent_memory_subdir=production
```
**Docker usage:**
When running Docker, you can pass these as environment variables:
```bash
docker run -p 50080:80 \
-e A0_SET_chat_model_provider=anthropic \
-e A0_SET_chat_model_name=claude-3-5-sonnet-20241022 \
agent0ai/agent-zero
```
**Notes:**
- These provide initial default values when settings.json doesn't exist or when new settings are added to the application. Once a value is saved in settings.json, it takes precedence over these environment variables.
- Sensitive settings (API keys, passwords) use their existing environment variables
- Container/process restart required for changes to take effect
---
### Manual Migration (Legacy or Non-Docker)
2026-03-22 11:11:45 +00:00
If you are migrating from older, non-Docker setups, A0 handles the migration of legacy folders and files automatically at runtime. The right place to save your files and directories is `a0/usr`.
## Conclusion
After following the instructions for your specific operating system, you should have Agent Zero successfully installed and running. You can now start exploring the framework's capabilities and experimenting with creating your own intelligent agents.
**Next Steps:**
- For production server deployments, see the [VPS Deployment Guide](vps-deployment.md)
- For development setup and extensions, see the [Development Setup Guide](dev-setup.md)
- For remote access via tunnel, see [Remote Access via Tunneling](../guides/usage.md#remote-access-via-tunneling)
If you encounter any issues during the installation process, please consult the [Troubleshooting section](../guides/troubleshooting.md) of this documentation or refer to the Agent Zero [Skool](https://www.skool.com/agent-zero) or [Discord](https://discord.gg/B8KZKNsPpj) community for assistance.”h!h uh"Nh#”(hhhh%NubŒ
fZe16ZOiep”h
)”}”(h
}”(hhwh}”(hŒ fragments”hŒ2026-03-21 11:07:07”hhwŒ_consolidation_similarity”G?ìÌÌÌÌÌÍuhŒUBuild tools: Vite for bundling, with scripts for dev, build, preview, test, and lint.”h!h uh"Nh#”(hhhh%NubŒ
GLufw2l5yP”h
)”}”(h
}”(hhh}”(hŒ solutions”hŒ2026-03-21 11:14:44”hhh~G?ðuhXj# Problem
Setting up a complete test infrastructure for a 3D flight simulator project using Jest for unit testing and Playwright for end-to-end testing with Chromium browser. The project needs to run automated tests both locally and in CI with Gitea Actions.
# Solution
1. Create Playwright configuration file with Chromium as the target browser:
```bash
cat > playwright.config.js << 'EOF'
const { defineConfig, devices } = require('@playwright/test');
module.exports = defineConfig({
testDir: './tests',
timeout: 30000,
expect: {
timeout: 5000,
},
fullyParallel: true,
workers: 1,
retries: 1,
reporter: 'list',
use: {
baseURL: 'http://localhost:3000',
trace: 'on-first-retry',
video: 'on-first-retry',
},
projects: [
{
name: 'chromium',
use: { ...devices['Desktop Chromium'] },
},
],
});
EOF
```
2. Create Jest configuration file:
```bash
cat > jest.config.js << 'EOF'
module.exports = {
testEnvironment: 'node',
testMatch: ['**/tests/unit/**/*.test.js'],
coverageDirectory: 'coverage',
coverageReporters: ['text', 'lcov', 'html'],
setupFilesAfterEnv: ['<rootDir>/tests/unit/setup.js'],
verbose: true,
};
EOF
```
3. Create tests/unit/setup.js for test environment setup:
```bash
cat > tests/unit/setup.js << 'EOF'
/**
* Jest setup file
* Mocks for localStorage and sessionStorage
*/
const localStorageMock = (() => {
let store = {};
return {
getItem: (key) => store[key] || null,
setItem: (key, value) => { store[key] = value.toString(); },
removeItem: (key) => { delete store[key]; },
clear: () => { store = {}; },
};
})();
Object.defineProperty(window, 'localStorage', { value: localStorageMock });
const sessionStorageMock = (() => {
let store = {};
return {
getItem: (key) => store[key] || null,
setItem: (key, value) => { store[key] = value.toString(); },
removeItem: (key) => { delete store[key]; },
clear: () => { store = {}; },
};
})();
Object.defineProperty(window, 'sessionStorage', { value: sessionStorageMock });
EOF
```
4. Create sample unit tests:
```bash
cat > tests/unit/example.test.js << 'EOF'
/**
* Example unit tests
*/
describe('Math utilities', () => {
it('should add two numbers', () => {
const result = 2 + 3;
expect(result).toBe(5);
});
it('should subtract two numbers', () => {
const result = 5 - 2;
expect(result).toBe(3);
});
it('should multiply two numbers', () => {
const result = 3 * 4;
expect(result).toBe(12);
});
});
EOF
```
5. Create sample Playwright integration tests:
```bash
cat > tests/integration/example.spec.js << 'EOF'
const { test, expect } = require('@playwright/test');
test('should display loading screen', async ({ page }) => {
await page.goto('/');
await expect(page).toHaveTitle(/3D Flight Simulator/);
await expect(page.locator('.loading-screen')).toBeVisible();
});
test('should navigate to intro screen', async ({ page }) => {
await page.goto('/');
await page.click('.start-button');
await expect(page.locator('.intro-screen')).toBeVisible();
});
EOF
```
6. Create .gitea/workflows/test.yml for CI/CD:
```bash
mkdir -p .gitea/workflows
cat > .gitea/workflows/test.yml << 'EOF'
name: Run Tests
on:
push:
branches: [ main, dev ]
pull_request:
branches: [ main, dev ]
jobs:
test:
runs-on: ubuntu-latest
container: node:18
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install dependencies
run: npm ci
- name: Install Playwright browsers
run: npx playwright install --with-deps chromium
- name: Run unit tests
run: npm test
- name: Run Playwright tests
run: npx playwright test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: test-results
path: test-results/
EOF
```
7. Create documentation in docs/testing.md with complete testing guide
8. Stage and commit all files:
```bash
git add playwright.config.js jest.config.js tests/unit/setup.js tests/unit/example.test.js tests/integration/example.spec.js .gitea/workflows/test.yml docs/testing.md
git commit -m "feat: Add test infrastructure with Jest and Playwright for Chromium"
git push origin feat/test-infrastructure
```
9. Install dependencies:
```bash
npm install
npx playwright install --with-deps chromium
npm install jest @playwright/test
```
10. Update package.json with test scripts:
```json
{
"scripts": {
"test": "jest",
"test:e2e": "playwright test",
"test:debug": "playwright test --debug"
}
}
```
Files created: 7 files (367 insertions)
- playwright.config.js
- jest.config.js
- tests/unit/setup.js
- tests/unit/example.test.js
- tests/integration/example.spec.js
- .gitea/workflows/test.yml
- docs/testing.md
All tests pass successfully (3 unit tests, 2 Playwright tests). The infrastructure supports both local execution and automated CI testing on push/PR events.”h!h uh"Nh#”(hhhh%NubŒ
S6i2C1s1SO”h
)”}”(h
}”(hhŠh}”(hh|hŒ2026-03-21 11:15:10”hhŠh~G?ðuhŒ[User is building a browser-based 3D flight simulator project called '3d_flyer' or 'wings88'”h!h uh"Nh#”(hhhh%NubŒ