docs/guides/projects.md
Projects are one of Agent Zero's most powerful features for organizing your work. They create isolated workspaces with dedicated context, instructions, memory, and secrets - preventing context bleed between unrelated tasks or clients.
This tutorial will guide you through creating, configuring, and using projects effectively.
A project in Agent Zero is an isolated workspace that includes:
/a0/usr/projects/<project_name>/Think of projects as separate "personas" or "modes" for your agent - each with its own context, memory, and capabilities.
There are two ways to access the Projects interface:
Once in the Projects modal:
The wizard includes:
[!TIP] Choose meaningful titles and distinct colors, especially if you plan to work with multiple projects. This helps you quickly identify which project is active.
Agent Zero's Git Projects feature allows you to clone repositories directly into your project workspace:
The cloning process:
/a0/usr/projects/<project_name>/main branchAfter cloning completes, you'll see:
[!NOTE] If the cloned repository already contains a
.a0proj/folder withproject.json, Agent Zero will merge the existing configuration with your specified title and color preferences.
Once created, you can configure your project through the Edit Project interface:
The Description field helps both you and the agent understand the project's purpose. This is purely informational and helps provide context when switching between projects.
Example:
An intelligent Excel automation system that processes financial spreadsheets
from multiple sources, performs data validation and cleaning, consolidates
information, generates executive reports, and flags anomalies or compliance issues.
The Instructions field is critical - these are automatically injected into the agent's system prompt when the project is active. Write clear, specific instructions that guide the agent's behavior for this project.
Example:
## Your Role
You are an expert Financial Data Analyst and Excel Automation Specialist.
Your job is to process, analyze, and report on financial spreadsheet data
with precision and business acumen.
## Operational Context
- Work directory: `/usr/projects/excel-finance/`
- Input data location: `/usr/projects/excel-finance/data/incoming/`
- Processed files: `/usr/projects/excel-finance/data/processed/`
- Reports output: `/usr/projects/excel-finance/reports/`
- Templates: `/usr/projects/excel-finance/templates/`
## Core Responsibilities
### 1. Data Ingestion & Discovery
- Scan `/data/incoming/` for new Excel/CSV files
- Identify data types, sheets, and file structures
- Log source details and timestamps
### 2. Data Validation & Cleaning
- Check for missing values, duplicates, and format inconsistencies
- Validate numerical ranges and date formats
- Flag suspicious patterns or outliers
- Document all cleaning operations
### 3. Data Consolidation
- Merge data from multiple sources
- Normalize column names and formats
- Handle currency conversions and date standardization
- Create master datasets for reporting
### 4. Executive Reporting
- Generate summary reports using templates in `/templates/`
- Include key metrics, trends, and visualizations
- Highlight anomalies and compliance issues
- Export as formatted Excel files with proper styling
### 5. Compliance & Quality Checks
- Flag potential compliance issues
- Verify calculations and formulas
- Maintain audit trail of all operations
- Alert on critical errors or anomalies
## Quality Standards
- Always validate input data before processing
- Use professional Excel formatting in outputs
- Include metadata (processing date, sources, versions)
- Document assumptions and limitations
- Provide clear error messages and suggestions
[!IMPORTANT] Well-written instructions are the key to effective project-specific agent behavior. Be specific about:
- The agent's role and expertise level
- Directory paths and file locations
- Expected workflows and procedures
- Quality standards and validation rules
- Output formats and requirements
Besides the main instructions field, you can add multiple instruction files in the .a0proj/instructions/ directory. These are automatically loaded and concatenated with the main instructions.
This is useful for:
Projects support two memory modes:
[!TIP] Use own memory for:
- Client projects with confidential information
- Different programming languages/frameworks
- Distinct domains (e.g., finance vs. marketing)
Use global memory for:
- Related sub-projects in the same domain
- When you want the agent to remember across all work
- Personal projects without sensitive data
Projects support scoped configuration values:
Stored in .a0proj/variables.env:
API_BASE_URL=https://api.example.com
DEFAULT_TIMEOUT=30
OUTPUT_FORMAT=json
LOG_LEVEL=info
Stored in .a0proj/secrets.env:
API_KEY=sk-abc123xyz...
DATABASE_PASSWORD=super_secret_pwd
GITHUB_TOKEN=ghp_xyz789...
SMTP_PASSWORD=email_pwd_here
[!IMPORTANT]
- Secrets are stored locally in the container
- They are masked in the UI when editing
- Backups may not include secrets - keep a separate copy
- Reference secrets in prompts by name: "Use my
API_KEYto authenticate"
Projects can enable or disable specific subagents. This is configured via the UI and stored in .a0proj/agents.json. The browser tool is not a subagent; it is a built-in plugin.
Projects can carry their own model settings without adding model data to .a0proj/project.json. The selected project model config is stored in the _model_config plugin's project-scoped path:
/a0/usr/projects/<project_name>/.a0proj/plugins/_model_config/config.json
Project-only presets are stored next to that config:
/a0/usr/projects/<project_name>/.a0proj/plugins/_model_config/presets.yaml
The project preset YAML is the same plain list used by global model presets:
- name: Research
chat:
provider: openrouter
name: anthropic/claude-sonnet-4.6
api_base: ""
ctx_length: 200000
ctx_history: 0.7
vision: true
utility:
provider: openrouter
name: openai/gpt-5.4-mini
api_base: ""
ctx_length: 128000
ctx_input: 0.7
When you select a preset for a project, Agent Zero copies the preset's chat and utility settings into the project config. It does not keep a live link to the preset, and embedding model settings remain copied from the current effective config.
Import project-specific knowledge documents:
.a0proj/knowledge/ organized by memory areaProjects can automatically inject their directory structure into the agent's context:
Settings (configurable per project):
The default gitignore for projects excludes:
.a0proj/
venv/
__pycache__/
node_modules/
.npm/
.git/
This feature is incredibly useful for code projects - the agent automatically "sees" your project structure and can navigate it intelligently.
To use a project, you need to activate it for your current chat:
[!NOTE] Each chat can have its own active project. You can have multiple chats open with different projects active simultaneously.
Once activated, the agent's behavior changes according to the project's configuration:
The agent now:
Example prompt after activation:
Hi A0. Start first development phase:
- recon
- scope definition
- AGENTS.md generation
The agent will understand the context based on the project's instructions and work accordingly.
Understanding the project directory structure helps you work effectively:
/a0/usr/projects/<project_name>/
├── .a0proj/ # Project metadata (hidden)
│ ├── project.json # Main configuration
│ ├── variables.env # Non-sensitive variables
│ ├── secrets.env # Sensitive credentials
│ ├── agents.json # Subagent settings
│ ├── instructions/ # Additional instruction files
│ │ ├── 01-setup.md
│ │ ├── 02-workflow.md
│ │ └── ...
│ └── knowledge/ # Project knowledge files
│ ├── main/
│ ├── fragments/
│ └── ...
├── src/ # Your actual project files
├── data/ # Data files
├── docs/ # Documentation
└── ... # Other project content
[!TIP] The
.a0proj/folder is automatically excluded from file structure injection (via gitignore patterns) to keep the agent's context clean.
Use projects to isolate each client:
/usr/projects/client-acme/
/usr/projects/client-globex/
/usr/projects/client-initech/
Each with:
Create projects for different tech stacks:
/usr/projects/python-ml-research/
/usr/projects/nodejs-webapp/
/usr/projects/go-microservices/
Each with language-specific:
Organize by business domain:
/usr/projects/finance-automation/
/usr/projects/marketing-analytics/
/usr/projects/hr-automation/
Each with domain-specific:
Projects work exceptionally well with Agent Zero's Tasks & Scheduling feature:
Example:
See Tasks & Scheduling for more details.
.a0proj/secrets.env to version controlProblem: Agent doesn't seem to follow project instructions
Solutions:
Problem: Agent remembers things from other projects
Solutions:
Problem: Repository won't clone
Solutions:
Problem: Agent can't access project secrets
Solutions:
API_KEY"Problem: Agent doesn't see project files
Solutions:
Now that you understand projects, explore:
[!TIP] Start with a simple project to learn the system, then gradually add complexity. Projects are most powerful when instructions are well-crafted and memory is properly managed.