mrkeyoor.com_
Mon 02 Nov 19:01 UTC
AI Toolsevaluationupdated 29 Sept 2026

langgraph review

LangGraph is a low-level Python framework for agents and workflows that must keep state, pause, resume, and survive failures. You describe work as a graph of steps and transitions, then add persistence or human interrupts where a long-running process needs control.

+348stars / 7d
Verdict

Our LangGraph CLI run installed 66 packages in 41 seconds and built in 6 seconds, but pytest ran 0 of the 510 collected tests because it rejected asyncio_mode. Use LangGraph when resuming durable, inspectable state is central to the product and your team wants control over each transition. Hold the release gate until the test environment runs cleanly, and make every external side effect idempotent.

We ran it

Lab card: what happened when we ran langgraphScreenshot of langgraph (docs.langchain.com/oss/python/langgraph)
Install✓ · 41s66 packages · 85 MB
Build✓ · 6s
Tests✗ · 15s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo675 files~192,119 lines of source · 13.9 MB · 17 CI workflows · tests dir

Answers from our run

Does langgraph build from source?

Dependencies installed in 41 seconds (66 packages), and the build succeeded in 6 seconds. We cloned commit 07b3318 into a clean Debian container with 3 CPUs and no project-specific setup.

Do langgraph's tests pass?

No. The project's own test command finished in 15 seconds and reported 0 passed, 0 failed (pytest).

Does langgraph have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use langgraph?

Developers who want a high-level agent with planning and file tools out of the box: the README directs that use case to Deep Agents.

What are the alternatives to langgraph?

Pydantic AI, AutoGen, CrewAI. Our LangGraph CLI run installed 66 packages in 41 seconds and built in 6 seconds, but pytest ran 0 of the 510 collected tests because it rejected asyncio_mode.

Setup3/541-second install and 6-second build, but pytest rejected its config
Docs4/5Clear core concepts, CLI commands, and ecosystem boundaries
Community5/542,490 stars, a September 29 push, and active issue work
Maturity3/5Durable primitives exist, but our 510-item suite ran 0 tests

Discussed on

  1. hnLangGraph Builder3 points
  2. hnLangGraph Multi-Agent Swarm3 points
  3. hnLanggraph.js: Building language agents as graphs3 points

Who it’s for

Python developers building agents whose state must survive restarts or long pauses.
Teams that need explicit branches, loops, subgraphs, and human approval points.
Engineers who want to control orchestration while choosing their own models and tools.
Platform teams prepared to configure a LangGraph API server or package an app in Docker.

Who it’s NOT for

Developers who want a high-level agent with planning and file tools out of the box: the README directs that use case to Deep Agents.
JavaScript teams expecting this package to be the supported JS runtime: the README points them to the separate langgraphjs repository.
Release pipelines that require a green fresh-container suite: pytest collected 510 items in our run, then stopped before running any because asyncio_mode was an unknown option.
Simple request-response tools with no branching, checkpoint, or resume requirement: LangGraph deliberately exposes low-level orchestration.
Systems where a repeated external write is unacceptable without application-level idempotency: open issue 9106 reproduces a completed sibling node running again after parallel interrupts resume one at a time.

Setup reality

Our fresh Debian sandbox installed commit 07b3318 in 41 seconds, pulling 66 packages and using 85 MB. The build passed in 6 seconds. Pytest failed with exit 4 after 15 seconds: it collected 510 items, ran 0, and reported Unknown config option: asyncio_mode.

The measured CLI requires Python 3.10 or newer. Local hot reload uses the inmem extra and a langgraph.json file; Docker-backed up and image builds require Docker. Model credentials and persistence services depend on the graph you configure.

The 13.9 MB checkout held 675 files and about 192,119 source lines. Our scan found 17 CI workflow files, a tests directory, no Dockerfile, and 0 known vulnerabilities. The CLI can generate a Dockerfile, so the absent repository file does not prevent container builds.

State graphs pay off when work must resume after a failure

LangGraph is aimed at agents that outlive one model response. A graph holds state while nodes perform work and edges decide what happens next. Persistence lets a run continue after a process stops. Interrupts can pause execution for a person to inspect or change state before the graph proceeds. If your agent has branches, retries, approvals, or work that may sit overnight, those mechanics solve a real problem.

The cost is that you own the graph. The README calls LangGraph low level and points developers who want a quicker, packaged agent to Deep Agents. That distinction is honest. A basic question-answer bot does not become better because someone drew it as nodes and edges. LangGraph earns the extra structure when you need to know exactly which step ran, what state it wrote, and where a resumed run should continue.

What happened when we ran it

Our run installed commit 07b3318 in 41 seconds, pulling 66 packages and using 85 MB on disk. The build succeeded in 6 seconds. We ran the CLI project in a fresh unprivileged Debian container with 3 CPUs, 8 GB of RAM, Python 3.12, and no secrets. Pip-audit reported 0 known vulnerabilities. These measurements cover package setup and the CLI build, not agent latency or model quality.

Pytest failed with exit 4 after 15 seconds. It collected 510 items, then ran 0 tests and printed Unknown config option: asyncio_mode. The log showed pytest 9.1.1 and listed its loaded plugins, but it did not name a root cause beyond the rejected option. The CLI's pyproject.toml includes pytest-asyncio in its test dependency group. We cannot tell from the supplied log why that configuration was unavailable during this run.

The checkout contained 675 files, about 192,119 source lines, and 13.9 MB before installation. Our scan found 17 CI workflow files and a tests directory, so this is not a project with no test material. It had no Dockerfile at the repository path we scanned. The CLI itself has a dockerfile command that generates one for an application, which explains how a user can build containers without a checked-in root Dockerfile.

The CLI serves on port 2024 or launches Docker on port 8123

langgraph dev runs an API server with hot reload on port 2024 by default. The documented local path needs Python 3.10 or newer, the inmem optional dependency, and a langgraph.json file pointing to your graph. That configuration also names local or package dependencies and can load an environment file. Your model API keys come from the graph and provider you choose, rather than LangGraph imposing one model vendor.

langgraph up moves the API server into Docker and exposes port 8123 by default. The same CLI can build an image for one or more target platforms or generate a Dockerfile for a custom deployment. Its README warns against putting credentials in copied dependency URLs or configuration files, and recommends a secret-backed Git credential helper for private code. That warning matters because image layers are hard to clean after a secret is copied into them.

Parallel interrupts currently have a duplicate-write report

Open issue 9106, filed September 29, 2026, demonstrates two parallel nodes inside a subgraph pausing before external side effects. When the interrupts are resumed one at a time, the report says the first completed node runs again while the second resumes, causing a duplicate external record. The final graph state still looks correct in the reproduction. That combination is dangerous because a state assertion can pass while the outside system receives the action twice.

The report is about a specific nested, parallel interrupt topology, not every resumed graph. Still, it lands directly on LangGraph's main promise: controlled durable execution. Treat email sends, payments, ticket creation, and database writes as retryable operations. Give them idempotency keys or deduplication at the receiving boundary. Human approval does not make a repeated side effect safe by itself, especially when the approval is the event that triggers a resume.

LangGraph works alone, while hosted operations point to LangSmith

The core README says LangGraph can be used without LangChain. That gives you room to bring another model client, tool layer, or storage design. Its public interface draws on NetworkX, while its execution ideas cite Pregel and Apache Beam. The practical attraction is control: application code defines the state and transitions instead of hiding orchestration behind a role prompt.

Debugging and hosted deployment in the README point toward LangSmith. LangSmith adds traces, evaluation, visual inspection, and a deployment service; Studio supports visual work on graphs. You can decline that service and keep the core local, but then your team owns comparable observability and operations. Decide early whether you are choosing LangGraph by itself or the wider LangChain stack, since those have different credential, hosting, and cost reviews.

A September 29 push sits beside 836 open issues and pull requests

GitHub showed 42,490 stars and a September 29, 2026 push. Its combined open counter was 836; separate searches found 590 issues and 246 pull requests. The latest release returned by GitHub was the CLI development tag cli==0.4.32.dev0, published September 23. Those dates show active work, while the queue gives adopters plenty of component-specific history to search before selecting a checkpointer or deployment path.

LangGraph is the right kind of complicated for an agent that must stop, wait, and resume without losing its place. The abstractions map to that job instead of pretending every agent is a chat loop. Our CLI build passed, but the 510 collected tests never ran, so we would not wave it through a release review yet. Fix that test environment first, then exercise your exact checkpoint and interrupt topology before an external write can reach a user.

Alternatives

ProjectWhat it isPick it when
Pydantic AI gh↗A typed Python agent framework built around Pydantic models and provider-neutral tooling.pick this instead when typed agent inputs and outputs matter more than graph-shaped orchestration.
AutoGen gh↗An event-driven framework for agent applications and multi-agent conversations.pick this instead when message-driven agents fit the problem better than an explicit state graph.
CrewAI gh↗A Python framework organized around role-based crews and task flows.pick this instead when role-based delegation is the main idea you want developers to work with.

Sources

  1. LangGraph repository and README
  2. LangGraph CLI README at the measured commit
  3. LangGraph CLI pyproject at the measured commit
  4. Parallel interrupt duplicate-write issue
  5. LangGraph CLI 0.4.32.dev0 release

More ai tools reviews

kornia · skills · anarlog · pr-agent · agent-sprite-forge · KiroCrew · the whole board →