The repository is archived after an August 10 push
Open Deep Research is easy to understand as a reference implementation. A LangGraph supervisor breaks a question into research work, search tools collect material, models summarize and compress it, and another model writes the final report. Configuration separates summarization, research, compression, and report models. Search can come from Tavily, native OpenAI or Anthropic tools, or MCP servers. That separation makes the code useful for learning and experimentation.
The maintenance status changes the buying decision. GitHub marks the repository archived and read-only, despite a last push on August 10, 2026. It had 12,673 stars and 73 combined open issues and pull requests when fetched. There is no latest GitHub release. Recent code activity before archival shows that people were still proposing provider additions and fixes, but those dates do not restore an upstream path for merging them. A production adopter now needs a fork strategy.
Four model roles let cost and quality move independently
The default configuration assigns one model to search-result summaries and separate choices to research, compression, and final writing. Every selected model must support tool calling and structured output. This is a practical design because a cheaper summarizer can process search pages while a stronger model handles the report. It also creates 4 places where provider behavior, context limits, credentials, and pricing can differ.
Tavily is the default search API, while native web search is documented for OpenAI and Anthropic. MCP configuration opens the door to private or specialist sources. None of those choices makes source quality automatic. A model still chooses queries, compresses what it found, and writes conclusions from partial material. The resulting citations and claims need inspection, especially for legal, medical, financial, or rapidly changing subjects.
What happened when we ran it
Our sandbox installed commit 1b7d2e8 in 91 seconds. The Python environment added 224 packages and occupied 795 MB. The build completed successfully in 4 seconds, and pip-audit found 0 known vulnerabilities. The checkout contained 45 files, about 7,112 lines of source, and 6.5 MB before dependencies, so most of the disk cost came from the environment rather than project code.
The only pytest case failed after 21 seconds with exit code 1. Its final error was LangSmithAuthError: the request to /datasets received HTTP 401 Unauthorized. The run used no secrets, so this result establishes that the supplied test path was not self-contained in our fresh environment. It does not establish whether correct LangSmith credentials would make the report-quality assertion pass.
Pytest also reported 11 warnings from src/legacy/multi_agent.py. The visible messages say config_schema, input, and output are deprecated in LangGraph and point to replacement schema arguments. Those warnings did not cause the HTTP 401, but they identify migration work a fork will eventually face. Our run used Python 3.12 in an unprivileged Debian container with 3 CPUs and 8 GB of RAM.
The benchmark uses 100 judged research tasks
The README documents Deep Research Bench, a set of 100 tasks split between English and Chinese across 22 fields. Reports are scored by an LLM judge against expert-written references. The published table includes model combinations, token totals, costs, and RACE scores from 2025 runs. That is better evidence than a few handpicked demos, but it is still a model-judged benchmark with provider versions and prompts tied to specific commits.
Running the full evaluation is not a casual smoke test. The README estimates $20 to $100 for the 100 examples depending on model selection, and the extraction workflow relies on a LangSmith dataset and experiment. Our HTTP 401 confirms that authentication is load-bearing in the current test path. Teams comparing forks should pin the dataset, model identifiers, prompts, and judge configuration, then save the report artifacts rather than comparing one headline score across changed conditions.
Child failures could still produce a final report
Issue 283 describes a serious main-graph failure path. The shown exception handler contains or True, so any child ConductResearch exception can be treated like a normal end to research. The graph may then continue to final report generation with only the notes collected before the failure. Pull request 286 proposes removing that unconditional branch and surfacing non-token-limit errors, but an archived repository cannot merge it through the usual route.
Legacy code has another coordination report. Issue 284 says one completed section can send the supervisor forward before every parallel section returns; pull request 299 proposes waiting for all planned workers. These reports concern named paths and include proposed regression coverage. A team using the current main graph should prioritize issue 283, while anyone borrowing src/legacy/multi_agent.py should inspect both the early join and the deprecation warnings our test emitted.
LangGraph Studio is convenient, but deployment is yours
The quick start creates an environment, copies .env, and launches a LangGraph development server with a Studio UI. The documented local API listens on port 2024. Hosted use points to LangGraph Platform, while Open Agent Platform is presented as a configurable interface for nontechnical users. The repository contains no Dockerfile, so self-hosters must define their own image, secret handling, persistence, limits, and network policy.
Open Deep Research remains a useful code reading exercise because the workflow is compact enough to follow and broad enough to expose real research-agent problems. Our 224-package install and 795 MB environment are manageable for experimentation. The archived state, the authenticated single test, and the unresolved child-error path make it a poor default dependency for a new service. Fork it with explicit ownership, or start from an active alternative and use this repository for design ideas.

