Skip to content

Install Open Deep Research 0.0.16 [Deploy Guide]

Deploy LangChain Open Deep Research 0.0.16 locally with uv, LangGraph Studio, real API keys, and fixes for Tavily and tool-calling failures.

6 min readIntermediate

Closed-lab “deep research” is optional. The agent graph that scopes a question, fans out search units, compresses notes, and writes a cited report is already public – package open_deep_research0.0.16 – and you can run it on a laptop today.

This is a deploy guide, not a product pitch. Commands, paths, keys, and the failure modes that burned my first two evenings on open source deep research with LangChain’s stack.

Heads-up before you clone: the GitHub repo langchain-ai/open_deep_research was archived read-only on Aug 21, 2026 (~12.7k stars at archival, per the repo page). Code and PyPI 0.0.16 still run; future dependency bumps are on you.

System requirements (what actually matters)

Per pyproject.toml, you need Python ≥ 3.10. The recommended LangGraph dev command pins 3.11. That’s the version I use.

Resource Minimum Comfortable
OS macOS, Linux, or Windows (WSL2 happier) Same
Python 3.10+ 3.11
RAM 8 GB if you only call cloud LLMs 16 GB+
Disk ~1-2 GB clone + venv 5 GB free
Network Outbound HTTPS to LLM + search APIs Stable link for long runs
Accounts One LLM key + Tavily (default search) LangSmith optional for Studio polish

No GPU if you stay on hosted models. Local Ollama/vLLM only works when the model does structured outputs and tool calling – the README states that flatly.

Official download / source

Primary source: clone the archived repo. Graphs and configs still live there.

git clone https://github.com/langchain-ai/open_deep_research.git
cd open_deep_research

Alternate: pip install open-deep-research==0.0.16 from PyPI (MIT). I still prefer the clone so langgraph.json, .env.example, and tests/ sit on disk.

Want the architecture story? LangChain’s July 16, 2025 announcement covers scope → research → write on LangGraph. Read it after install, not before.

Install Open Deep Research step by step

Install uv if it’s missing:

curl -LsSf https://astral.sh/uv/install.sh | sh
# restart shell or source your profile so `uv` is on PATH

From the repo root:

  1. Create and activate a venv
  2. Sync dependencies
  3. Copy the env template
uv venv
source .venv/bin/activate # Windows: .venvScriptsactivate
uv sync
# fallback if needed:
# uv pip install -r pyproject.toml

cp .env.example .env

Windows users who hate uvx edge cases can pip install -e ., then pip install "langgraph-cli[inmem]", then langgraph dev inside the activated venv – same graph, more manual steps.

Pro tip: Keep the venv activated for every later command. Half the “module not found” reports I’ve seen were a shell that never ran source .venv/bin/activate.

First-time configuration (minimum viable)

Edit .env. Default Tavily + OpenAI path needs at least:

OPENAI_API_KEY=sk-...
TAVILY_API_KEY=tvly-...

# optional but useful with Studio
LANGSMITH_API_KEY=
LANGSMITH_TRACING=true
LANGSMITH_PROJECT=open-deep-research-local

# leave false for local dev (OAP-only flag)
GET_API_KEYS_FROM_CONFIG=false

As of the 0.0.16 tree / cloned README: summarization defaults to openai:gpt-4.1-mini; research, compression, and final report default to openai:gpt-4.1; search defaults to Tavily. Swap providers later in LangGraph Studio under Manage Assistants, or by editing configuration fields. Whatever you pick still has to support tool calling and structured outputs.

I left Anthropic and Google blank on first boot. OpenAI + Tavily alone produced a real report.

Verify the install works

Launch the in-memory LangGraph server from the repo root (venv on):

uvx --refresh --from "langgraph-cli[inmem]" --with-editable . --python 3.11 langgraph dev --allow-blocking

Expect something like:

  • API – http://127.0.0.1:2024
  • Studio UI – https://smith.langchain.com/studio/?baseUrl=http://127.0.0.1:2024
  • OpenAPI – http://127.0.0.1:2024/docs

Open Studio. Drop a short research question into messages. Submit. Watch nodes move. Green light = final report with real Tavily URLs, not vague “according to sources.”

Quick health check without a full run: load /docs in a browser. OpenAPI page up means the process is alive.

There’s a moment – first time Studio streams a supervisor handoff into parallel research units – when it stops feeling like a toy chat wrapper. Self-hosting this stack is mostly for that feeling. Is the ops cost worth it for your workflow? Only a real query answers that.

Common install errors and fixes

Bogus answers / invented citations. Turns out TAVILY_API_KEY can sit in .env and still never reach the runtime apiKeys map (community thread: GitHub issue #171 on this repo). Confirm the key is in the same shell that started langgraph dev, restart after every .env edit, and in Studio check the assistant config isn’t overriding search with empty credentials. When search fails open, the model still writes confidently. That’s the trap.

research_supervisor 400:"auto" tool choice requires --enable-auto-tool-choice... Local OpenAI-compatible stacks (issue #190) hit this; hosted OpenAI/Anthropic usually don’t. On vLLM-class servers, start inference with auto tool choice plus a tool-call parser, or point research at a provider that already speaks tools natively.

Compress Research dies: Maximum retries exceeded / invalid function_call content type. Issue #218 traces it to tool history serialized into shapes the Responses-style API rejects. People recover by switching the compression model, shortening research depth, or pinning provider/SDK pairs the graph expects. If compress keeps failing, drop concurrency and simplify the query before you touch prompts.

The catch is concurrency. Config exposes max_concurrent_research_units (default 5, slider 1-20 in configuration.py metadata). Crank it for a flashy demo; enjoy mid-run 429s against provider TPM/RPM limits. Start at 3-5.

uvx / Python mismatch. Editable install fails? Force --python 3.11, delete .venv, recreate, uv sync again.

Upgrade, migration, uninstall

While archived: you’re on 0.0.16. Pulling main won’t mint new tags. CVE in a dependency? Bump inside your fork or venv, then smoke-test one short query. No official migration script from earlier 0.0.x – re-copy .env.example, re-check model IDs (documented defaults moved toward the gpt-4.1 family).

Cleanup:

# stop langgraph dev (Ctrl+C)
deactivate
cd ..
rm -rf open_deep_research # or your clone path
# if you also pip-installed elsewhere:
pip uninstall open-deep-research

# optional disk tidy
# uv cache prune

Delete LangSmith project junk you created. Revoke keys you pasted onto a shared machine.

After install, if you want depth: LangGraph deploy options, MCP tool wiring, and the other README-linked materials on the same repo.

FAQ

Do I need LangSmith to run Open Deep Research locally?

No. Port 2024 and the local graph run on LLM + search keys alone. LangSmith only makes the hosted Studio UI nicer.

How much does a real research run cost?

One short query: usually cents to a few dollars, model and depth dependent. Full eval is another planet. The README warns a 100-task Deep Research Bench sweep can land around $20-$100. One published defaults run logged about $45.98, 58M tokens, RACE near 0.43 (submission ~0.4344, #6 in that table). Budget before you batch.

Can I skip Tavily?

Say your org already pays OpenAI or Anthropic and hates another search bill. Search is configurable – Tavily is only the default – and the config enums expose native provider search paths among others. You still need the matching provider key, plus a researcher model that actually supports that tool path. Wire extras through MCP in Studio if you must. Test one narrow question before you trust a long report.

Next: clone, uv sync, two keys in .env, the uvx ... langgraph dev line, one hard question in Studio. Touch concurrency sliders last.