Research Analyst (Agent Zero) — Manual Install Guide
Prerequisites
- ✓A running Agent Zero instance (v0.9.8 or later)
- ✓SSH access to your VPS
- ✓Docker installed on your VPS
Estimated time: ~18 minutes
Installation Steps
Connect to your VPS
SSH into the server where your Agent Zero instance is running.
ssh root@your-vps-ipCreate the plugin directory
Create the plugin directory inside the Agent Zero container for the Research Analyst (Agent Zero) plugin.
docker exec agent-zero mkdir -p /a0/usr/plugins/research-analyst/Create plugins/research-analyst/plugin.json
Plugin manifest declaring name, version, hooks, and tool registrations
docker exec -i agent-zero sh -c 'cat > "/a0/usr/plugins/research-analyst/plugin.json"' << 'BUNDLEOF'
{
"name": "research-analyst",
"version": "1.0.0",
"description": "Deep research specialist with multi-pass methodology and source verification",
"author": "RunClaw",
"agent_zero_version": ">=0.9.8",
"hooks": [
"agent_init"
],
"tools": [
"deep_search"
],
"dependencies": []
}
BUNDLEOFView file contents/a0/usr/plugins/research-analyst/plugin.json
{
"name": "research-analyst",
"version": "1.0.0",
"description": "Deep research specialist with multi-pass methodology and source verification",
"author": "RunClaw",
"agent_zero_version": ">=0.9.8",
"hooks": [
"agent_init"
],
"tools": [
"deep_search"
],
"dependencies": []
}Create plugins/research-analyst/prompts/system.md
System prompt additions for research methodology and behavior
docker exec agent-zero mkdir -p "/a0/usr/plugins/research-analyst/prompts" && docker exec -i agent-zero sh -c 'cat > "/a0/usr/plugins/research-analyst/prompts/system.md"' << 'BUNDLEOF'
# Research Analyst Plugin
You have the Research Analyst plugin active. You are a specialist in deep, methodical research.
## Core Methodology
1. **Landscape Scan** -- Start broad. Map the territory before diving deep.
2. **Targeted Deep Dives** -- Identify the 3-5 most important subtopics and investigate each thoroughly.
3. **Cross-Reference Verification** -- Never trust a single source. Verify key claims across independent sources.
4. **Structured Reporting** -- Present findings in clear, hierarchical reports with citations.
## Research Standards
- Always cite sources with URLs when available
- Distinguish between facts, estimates, and opinions
- Flag confidence levels: HIGH (multiple independent sources), MEDIUM (single credible source), LOW (inference/extrapolation)
- When sources conflict, present both perspectives with your assessment
- Include a "Limitations" section noting what you could NOT verify
## Output Formats
Default to structured markdown reports with:
- Executive summary (3-5 bullet points)
- Detailed findings by subtopic
- Data tables where applicable
- Recommendations section
- Sources list
BUNDLEOFView file contents/a0/usr/plugins/research-analyst/prompts/system.md
# Research Analyst Plugin
You have the Research Analyst plugin active. You are a specialist in deep, methodical research.
## Core Methodology
1. **Landscape Scan** -- Start broad. Map the territory before diving deep.
2. **Targeted Deep Dives** -- Identify the 3-5 most important subtopics and investigate each thoroughly.
3. **Cross-Reference Verification** -- Never trust a single source. Verify key claims across independent sources.
4. **Structured Reporting** -- Present findings in clear, hierarchical reports with citations.
## Research Standards
- Always cite sources with URLs when available
- Distinguish between facts, estimates, and opinions
- Flag confidence levels: HIGH (multiple independent sources), MEDIUM (single credible source), LOW (inference/extrapolation)
- When sources conflict, present both perspectives with your assessment
- Include a "Limitations" section noting what you could NOT verify
## Output Formats
Default to structured markdown reports with:
- Executive summary (3-5 bullet points)
- Detailed findings by subtopic
- Data tables where applicable
- Recommendations section
- Sources list
Create plugins/research-analyst/prompts/instructions.md
Detailed behavioral instructions for research tasks
docker exec agent-zero mkdir -p "/a0/usr/plugins/research-analyst/prompts" && docker exec -i agent-zero sh -c 'cat > "/a0/usr/plugins/research-analyst/prompts/instructions.md"' << 'BUNDLEOF'
# Research Analyst -- Behavioral Instructions
## When Given a Research Task
1. **Clarify scope** -- If the request is ambiguous, ask 1-2 clarifying questions before starting.
2. **Announce your plan** -- Before researching, briefly outline the 3-5 areas you'll investigate.
3. **Research in passes** -- Do NOT try to find everything in one search. Use multiple targeted searches.
4. **Track sources** -- Maintain a running list of sources consulted. Include URLs.
5. **Synthesize, don't summarize** -- Your value is in connecting dots across sources, not repeating them.
## Report Structure
For any report longer than 500 words, use this structure:
```
## Executive Summary
[3-5 bullet points with the key findings]
## Methodology
[Brief description of research approach and sources consulted]
## Findings
### [Subtopic 1]
...
### [Subtopic 2]
...
## Analysis
[Cross-cutting insights, trends, implications]
## Recommendations
[Actionable next steps based on findings]
## Limitations
[What you couldn't verify, gaps in available data]
## Sources
[Numbered list of all sources with URLs]
```
## Quality Checks
Before delivering a report:
- Have you verified key claims with 2+ sources?
- Are all statistics attributed to specific sources?
- Have you flagged any LOW confidence claims?
- Is the executive summary standalone-readable?
BUNDLEOFView file contents/a0/usr/plugins/research-analyst/prompts/instructions.md
# Research Analyst -- Behavioral Instructions
## When Given a Research Task
1. **Clarify scope** -- If the request is ambiguous, ask 1-2 clarifying questions before starting.
2. **Announce your plan** -- Before researching, briefly outline the 3-5 areas you'll investigate.
3. **Research in passes** -- Do NOT try to find everything in one search. Use multiple targeted searches.
4. **Track sources** -- Maintain a running list of sources consulted. Include URLs.
5. **Synthesize, don't summarize** -- Your value is in connecting dots across sources, not repeating them.
## Report Structure
For any report longer than 500 words, use this structure:
```
## Executive Summary
[3-5 bullet points with the key findings]
## Methodology
[Brief description of research approach and sources consulted]
## Findings
### [Subtopic 1]
...
### [Subtopic 2]
...
## Analysis
[Cross-cutting insights, trends, implications]
## Recommendations
[Actionable next steps based on findings]
## Limitations
[What you couldn't verify, gaps in available data]
## Sources
[Numbered list of all sources with URLs]
```
## Quality Checks
Before delivering a report:
- Have you verified key claims with 2+ sources?
- Are all statistics attributed to specific sources?
- Have you flagged any LOW confidence claims?
- Is the executive summary standalone-readable?
Create plugins/research-analyst/tools/deep_search.py
Multi-pass web search tool with broad-to-specific methodology
docker exec agent-zero mkdir -p "/a0/usr/plugins/research-analyst/tools" && docker exec -i agent-zero sh -c 'cat > "/a0/usr/plugins/research-analyst/tools/deep_search.py"' << 'BUNDLEOF'
"""
Tool: DeepSearch
Description: Multi-pass web search with broad-to-specific methodology
Plugin: research-analyst
Performs research in three passes:
1. Broad landscape scan with general queries
2. Targeted deep dives on specific subtopics
3. Verification pass to cross-reference key claims
"""
from python.helpers.tool import Tool, Response
class DeepSearch(Tool):
"""Perform multi-pass deep research on a topic.
Use this tool when you need thorough research with source verification.
Provide a topic and optional focus areas for targeted investigation.
"""
async def execute(self, topic: str = "", focus_areas: str = "", **kwargs):
"""Execute a multi-pass research sweep.
Args:
topic: The main research topic or question
focus_areas: Comma-separated list of specific areas to investigate
"""
if not topic:
return Response(
message="Please provide a research topic.",
break_loop=False,
)
passes = []
# Pass 1: Broad landscape scan
broad_query = f"overview {topic} current state 2026"
passes.append(f"## Pass 1: Landscape Scan\nQuery: {broad_query}")
# Pass 2: Targeted deep dives
if focus_areas:
areas = [a.strip() for a in focus_areas.split(",")]
else:
areas = [topic]
for area in areas:
targeted_query = f"{area} detailed analysis comparison"
passes.append(
f"## Pass 2: Deep Dive\nArea: {area}\nQuery: {targeted_query}"
)
# Pass 3: Verification
verify_query = f"{topic} benchmarks data statistics facts"
passes.append(f"## Pass 3: Verification\nQuery: {verify_query}")
research_plan = "\n\n".join(passes)
return Response(
message=(
f"Research plan for: {topic}\n\n"
f"{research_plan}\n\n"
"Executing search passes using available web search tools. "
"Results will be cross-referenced and compiled into a structured report."
),
break_loop=False,
)
BUNDLEOFView file contents/a0/usr/plugins/research-analyst/tools/deep_search.py
"""
Tool: DeepSearch
Description: Multi-pass web search with broad-to-specific methodology
Plugin: research-analyst
Performs research in three passes:
1. Broad landscape scan with general queries
2. Targeted deep dives on specific subtopics
3. Verification pass to cross-reference key claims
"""
from python.helpers.tool import Tool, Response
class DeepSearch(Tool):
"""Perform multi-pass deep research on a topic.
Use this tool when you need thorough research with source verification.
Provide a topic and optional focus areas for targeted investigation.
"""
async def execute(self, topic: str = "", focus_areas: str = "", **kwargs):
"""Execute a multi-pass research sweep.
Args:
topic: The main research topic or question
focus_areas: Comma-separated list of specific areas to investigate
"""
if not topic:
return Response(
message="Please provide a research topic.",
break_loop=False,
)
passes = []
# Pass 1: Broad landscape scan
broad_query = f"overview {topic} current state 2026"
passes.append(f"## Pass 1: Landscape Scan\nQuery: {broad_query}")
# Pass 2: Targeted deep dives
if focus_areas:
areas = [a.strip() for a in focus_areas.split(",")]
else:
areas = [topic]
for area in areas:
targeted_query = f"{area} detailed analysis comparison"
passes.append(
f"## Pass 2: Deep Dive\nArea: {area}\nQuery: {targeted_query}"
)
# Pass 3: Verification
verify_query = f"{topic} benchmarks data statistics facts"
passes.append(f"## Pass 3: Verification\nQuery: {verify_query}")
research_plan = "\n\n".join(passes)
return Response(
message=(
f"Research plan for: {topic}\n\n"
f"{research_plan}\n\n"
"Executing search passes using available web search tools. "
"Results will be cross-referenced and compiled into a structured report."
),
break_loop=False,
)
Create plugins/research-analyst/extensions/agent_init/setup.py
Initialization extension that logs plugin activation on agent start
docker exec agent-zero mkdir -p "/a0/usr/plugins/research-analyst/extensions/agent_init" && docker exec -i agent-zero sh -c 'cat > "/a0/usr/plugins/research-analyst/extensions/agent_init/setup.py"' << 'BUNDLEOF'
"""
Extension: agent_init
Plugin: research-analyst
Runs when the agent initializes. Logs activation of the Research Analyst plugin
and sets up any required runtime state.
"""
from python.helpers.log import Log
async def execute(agent, **kwargs):
"""Initialize the Research Analyst plugin."""
Log.info("Research Analyst plugin activated", head="plugin")
Log.info(
"Multi-pass research methodology enabled: landscape -> deep dive -> verify",
head="plugin",
)
# Store plugin state on the agent for other extensions to reference
if not hasattr(agent, "plugin_state"):
agent.plugin_state = {}
agent.plugin_state["research-analyst"] = {
"active": True,
"version": "1.0.0",
"passes": ["landscape", "deep_dive", "verify"],
}
BUNDLEOFView file contents/a0/usr/plugins/research-analyst/extensions/agent_init/setup.py
"""
Extension: agent_init
Plugin: research-analyst
Runs when the agent initializes. Logs activation of the Research Analyst plugin
and sets up any required runtime state.
"""
from python.helpers.log import Log
async def execute(agent, **kwargs):
"""Initialize the Research Analyst plugin."""
Log.info("Research Analyst plugin activated", head="plugin")
Log.info(
"Multi-pass research methodology enabled: landscape -> deep dive -> verify",
head="plugin",
)
# Store plugin state on the agent for other extensions to reference
if not hasattr(agent, "plugin_state"):
agent.plugin_state = {}
agent.plugin_state["research-analyst"] = {
"active": True,
"version": "1.0.0",
"passes": ["landscape", "deep_dive", "verify"],
}
Restart Agent Zero
Restart the Agent Zero container to load the new plugin.
docker restart agent-zeroVerify installation
Open your Agent Zero interface and verify the plugin loads correctly.
Note:Look for "Research Analyst (Agent Zero)" in the available plugins or extensions.
That was 9 steps.
With RunClaw, it's just one click.
Install with RunClawDone reading?
RunClaw handles all of this automatically. Create your first agent in minutes.
Try RunClaw FreeNo credit card required