Open Deep Research is an open-source framework designed for comprehensive, automated information gathering. Unlike closed systems, it does not restrict you to a single model or search tool; instead, it offers a fully configurable environment. The system orchestrates multiple AI providers, search APIs, and Model Context Protocol (MCP) servers to conduct research in parallel. Through a visual web interface, users can manage ongoing tasks and refine data. You maintain complete control over the process—selecting preferred search APIs, setting concurrency levels, and adjusting iteration depth.
The framework relies on a suite of specialized models for summarization, research, compression, and report generation. To function effectively, these models must support structured output, tool calling, and integration with your chosen search API. Open Deep Research accommodates local files and remote MCP servers, includes a dedicated batch evaluation suite, and provides several deployment paths: LangGraph Studio, LangGraph Platform, or the Open Agent Platform. It also includes two legacy automation strategies for backward compatibility.
Clone the repository
git clone https://github.com/langchain-ai/open_deep_research.git
cd open_deep_research
Configure environment variables
Copy the example environment file and define your specific models, search tools, and API credentials.
cp .env.example .env
Initialize the assistant
Launch the LangGraph server locally. Your browser should open the interface automatically.
macOS
# Install the uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install dependencies and launch the LangGraph server
uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.11 langgraph dev --allow-blocking
Windows / Linux
# Install dependencies
pip install -e .
pip install -U "langgraph-cli[inmem]"
# Start the LangGraph server
langgraph dev
Access the Studio UI
http://127.0.0.1:2024https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024http://127.0.0.1:2024/docstrue in the Studio JSON input box.The framework is compatible with any model supported by the init_chat_model() API.
Open Deep Research provides two distinct methodologies for report generation.
src/open_deep_research/graph.py)This implementation utilizes a structured plan-and-execute logic.
This method offers superior control and is recommended for projects requiring high accuracy and specific structural requirements.
Customize the workflow using the following parameters:
report_structure – Define a custom outline (defaults to standard research format).number_of_queries – Set the number of search queries generated per section (default: 2).max_search_depth – Set the limit for reflection and search iterations (default: 2).planner_provider – Specify the model provider for planning (default: anthropic).planner_model – Choose the specific planning model (default: claude-3-7-sonnet-latest).planner_model_kwargs – Pass additional arguments to the planner.writer_provider – Specify the model provider for writing (default: anthropic).writer_model – Choose the model for generating the report text (default: claude-3-5-sonnet-latest).writer_model_kwargs – Pass additional arguments to the writer.search_api – Select the primary web search API (default: tavily).src/open_deep_research/multi_agent.py)This version utilizes a supervisor-researcher hierarchy.
This approach is best suited for time-sensitive tasks where rapid delivery is prioritized over manual oversight.
Search API parameters vary by provider. Below are the supported configurations for specific tools:
Exa: max_characters, num_results, include_domains, exclude_domains, subpages
include_domains and exclude_domains are mutually exclusive.ArXiv: load_max_docs, get_full_documents, load_all_available_meta
PubMed: top_k_results, email, api_key, doc_content_chars_max
Linkup: depth
Example Exa configuration snippet:
thread = {"configurable": {"thread_id": str(uuid.uuid4()),
"search_api": "exa",
"search_api_config": {
"num_results": 5,
"include_domains": ["nature.com", "sciencedirect.com"]
},
# additional configuration...
}}
init_chat_model().on_demand tier should note the 6000 TPM (Tokens Per Minute) limit; generating extensive reports may require a paid tier for higher throughput.deepseek-R1 may struggle with function calling, a capability essential for structured section generation and scoring within this framework. For best results, use providers known for robust tool integration: OpenAI, Anthropic, or high-capacity open models like Groq's llama-3.3-70b-versatile.If you encounter the following error, it typically indicates a model's failure to return structured data:
groq.APIError: Failed to call a function. Please adjust your prompt. See 'failed_generation' for more details.
You can evaluate and compare the output of both implementations using the provided test script.
# Run tests using default Anthropic models
python tests/run_test.py --all
# Run tests using OpenAI o3 models
python tests/run_test.py --all \
--supervisor-model "openai:o3" \
--researcher-model "openai:o3" \
--planner-provider "openai" \
--planner-model "o3" \
--writer-provider "openai" \
--writer-model "o3" \
--eval-model "openai:o3" \
--search-api "tavily"
Performance logs are sent to LangSmith, enabling side-by-side quality comparisons between different model configurations.
What to Eat: AI Recipes and Meal Planning You Can Self-Host
Feiniao VPN: Free Trial, 4K Streaming & Unblock Netflix (2026 Guide)
Flyde Visual Programming: Custom Nodes & Code Integration
Besnow Cloud VPN: 60% Off Coupon + 30-Day Free Trial
Zen Browser: about:config Tweaks, 1Password Setup, and Customization Guide
Agentic-Trading: Multi-Agent Simulator with A2A Protocol and ADK
UTCP Explained: A Universal Tool Calling Protocol for APIs, LLMs, and Beyond
SerenityOS Build Guide: A C++ Unix-Like System for x86, Arm, and RISC-V
syftr: Optimize Agent Workflows with Pareto Front Search
Ventoy USB Tool: Boot Multiple ISOs Without Reformatting
How to Highlight Top 3 and Bottom 3 Bars in an Excel Chart
How to Add Missing Games to Shendeng VPN’s Library