Orchestrate deep research across multiple AI models to produce comprehensive, professional-grade research documents.
Produce research output comparable to or exceeding OpenAI's o3 Deep Research - comprehensive, insightful, PhD-level analysis with no information loss.
Optimized for Claude Code Max plan - Claude Code (your session) acts as the orchestrator for FREE.
┌─────────────────────────────────────────────────────────────────────────┐
│ Claude Code (FREE) │
│ Your session = Orchestrator │
│ │
│ 1. Plan research angles │
│ 2. Dispatch parallel researchers │
│ 3. Validate via subagents (FREE) │
│ 4. Aggregate via Gemini 1M │
└─────────────────────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Researcher 1│ │ Researcher 2│ │ Researcher 3│ PARALLEL
│ (Perplexity)│ │ (Perplexity)│ │ (Perplexity)│
│ Sonar Pro │ │ Sonar Pro │ │ Sonar Pro │ Built-in
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘ web search
│ │ │
└───────────────┼───────────────┘
▼
┌─────────────────────────────────────────────┐
│ Claude Code Subagents │ PARALLEL
│ (FREE validation) │
└─────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────┐
│ Gemini Pro 3 │
│ 1M context aggregation │
└─────────────────────────────────────────────┘
| Component | Provider | Cost per Run |
|---|---|---|
| Orchestration | Claude Code | $0 (Max plan) |
| Research (6 angles) | Perplexity Sonar Pro | ~$0.30 |
| Validation (6 angles) | Claude Code subagents | $0 (Max plan) |
| Aggregation | Gemini Pro 3 | ~$0.05 |
| Total | ~$0.35 |
Compare to full API orchestration: ~$5+
cd ~/Documents/repos/multi-model-research
uv syncSet API keys:
export PERPLEXITY_API_KEY="pplx-..."
export GOOGLE_API_KEY="..." # For Gemini aggregationThe recommended way to use MMR is directly from Claude Code, which acts as your orchestrator:
from multi_model_research.library import (
research_angles_parallel,
aggregate_research,
save_raw_research,
)
# Define research angles
angles = [
{"id": "legal", "title": "Legal Framework", "questions": ["What laws govern X?"]},
{"id": "market", "title": "Market Analysis", "questions": ["What are current trends?"]},
# ... more angles
]
# Run parallel research (Perplexity Sonar Pro with web search)
results = research_angles_parallel(angles, instructions="Focus on 2024-2026 data")
# Save raw research for reference
save_raw_research(results, "/path/to/raw.json")
# Aggregate into final report (Gemini 1M)
report = aggregate_research(
topic="Your Research Topic",
research_outputs=results,
output_path="/path/to/final-report.md"
)# Basic research
mmr research "AI safety approaches" ./output/report.md
# With options
mmr research "Mexico real estate" ~/Documents/report.md \
--agents 4 \
--context "Focus on Baja California" \
--preset perplexity-research| Preset | Orchestrator | Researchers | Best For |
|---|---|---|---|
perplexity-research |
Claude Code | Perplexity Sonar Pro | Current web data |
opus-gemini |
Claude Opus | Gemini Pro 3 | Deep analysis |
all-gemini |
Gemini Pro 3 | Gemini Pro 3 | 1M context |
- Claude Code as orchestrator - Leverage your Max plan, no API costs for planning
- Perplexity for research - Built-in web search with citations
- Parallel execution - Research all angles simultaneously
- Subagent validation - Free validation via Claude Code subagents
- No premature summarization - Research outputs are FULL content
- Aggregation not summarization - Final report preserves all details
See DEVELOPMENT.md for detailed iteration history and current challenges.
- Parallel research execution (~2 min for 6 angles)
- Perplexity web search integration
- Claude Code subagent validation
- Raw research export (JSON)
- LLM aggregation tends to compress/summarize
- Exploring mechanical compilation + LLM analysis as separate steps
ResearchRequest- Input configurationResearchAngle- A specific research areaResearchOutput- Full research from one agentValidationResult- Pass/fail with issuesFinalReport- Aggregated output
MIT