What it's for

LangGraph is for work that has to come back.

A chain is a list: A, then B, then C. Real products retry, wait for a person, fan out, or pick up two days later. That's a graph.

Jobs

What it looks like in a product

Support

A ticket that looks again

Where is order 4421?

A chain

One lookup, empty, then "I don't know." The list cannot come back.

A graph

Lookup misses. Decide loops to a better query, finds the order, answers. Or it hands off to a human.

  1. START
  2. lookup
  3. decide
  4. answer
  5. END
Step this in the lab →

Approvals

A refund that waits

A $240 refund is over policy. It needs a manager.

A chain

Auto-refund or refuse. A list has no pause. The human is a different request.

A graph

Draft the refund, yield, sit for hours or days. The manager says yes. The same run continues and the money moves.

  1. START
  2. draft
  3. paused
  4. pay
  5. END
Step this in the lab →

Research

A question that isn't done

What's our Q3 churn by plan?

A chain

One search, one write. It ships a thin answer because the list already moved on.

A graph

Search, judge, rewrite the query, search again, then write. The loop is the work.

  1. START
  2. search
  3. judge
  4. write
  5. END
Step this in the lab →

Fan-out

Twelve tickets, one standup

Summarize every open ticket before the 9am huddle.

A chain

One giant prompt, or twelve calls in a line. Slow, and one bad ticket poisons the rest.

A graph

Split into twelve children in the same step. Each summarizes its ticket. The parent joins them into one brief.

  1. START
  2. split
  3. 12× summarize
  4. join
  5. END
Step this in the lab →

Coding

Fix it until the tests pass

The checkout test is flaky. Fix it.

A chain

One shot of code. Usually wrong. You start a new call to try again.

A graph

Edit, run tests, fail, edit, pass, stop. There is no Agent class. The loop is the agent.

  1. START
  2. agent
  3. tests
  4. END
Step this in the lab →

Durable work

Same thread, Tuesday

They come back two days later. "Also refund the mug."

A chain

A new call. Thursday never happened.

A graph

Same thread. The checkpointer is the cursor through this run. The Store still knows they like terse replies.

  1. START
  2. work
  3. [days]
  4. resume
  5. END
Step this in the lab →

Patterns

When to reach for it

Use it when the work retries, waits, fans out, or lives across days. Skip it for one LLM call or a straight A→B→C chain.

  • The work retries / comes backa cycle
  • A human has to say yesa pause, then resume
  • Many items, one resultfan-out, then join
  • A nested team with its own stepsa subgraph
  • Specialists pass a job arounda handoff
  • It should still be true next weeklong-term memory (Store), not this run's cursor

Two kinds of memory. The checkpointer is the cursor through this run — the refund that sits overnight. The Store is what should still be true next week — Tuesday still knows they like terse replies.

Two kinds of memory
CheckpointerStore
ScopeThis run / this threadThis user / this tenant, next week
HoldsSnapshots you can replayNotes you put and get later
Reach for itPause, resume, time travelA brand-new thread should still know yesterday's tone

FAQ

Three questions

Is this a replacement for LCEL / a single chat call?

No. If the path is A then B then C and it never comes back, stay on a chain. The ticket that looks again, the refund that waits, the standup brief — those retry, pause, or fan out. That's when a graph earns its keep.

Do I need a checkpointer for a toy script?

You can compile without one. You need one the moment the refund sits overnight, or Tuesday picks up the same thread. Production graphs almost always have one.

Supervisor or swarm?

Supervisor: one node delegates; specialists are tools (or subgraphs). Swarm: peers hand off. The standup brief is fan-out, not a swarm — don't reach for a team when a split-and-join will do. Step both in the lab.