Bumps the minor-and-patch group in /libs/checkpoint-postgres with 3 updates: [orjson](https://github.com/ijl/orjson), [ruff](https://github.com/astral-sh/ruff) and [mypy](https://github.com/python/mypy). Updates `orjson` from 3.11.7 to 3.11.8 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/ijl/orjson/releases">orjson's releases</a>.</em></p> <blockquote> <h2>3.11.8</h2> <h3>Changed</h3> <ul> <li>Build and compatibility improvements.</li> </ul> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/ijl/orjson/blob/master/CHANGELOG.md">orjson's changelog</a>.</em></p> <blockquote> <h2>3.11.8 - 2026-03-31</h2> <h3>Changed</h3> <ul> <li>Build and compatibility improvements.</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/ijl/orjson/commit/5cbb3d0398a2f42de51210270286fecd798c5d78"><code>5cbb3d0</code></a> 3.11.8</li> <li><a href="https://github.com/ijl/orjson/commit/4195d7f263e33076295b75efdcbaf6a55af8674e"><code>4195d7f</code></a> writer::half</li> <li><a href="https://github.com/ijl/orjson/commit/d00641b69410728a735f0855eb1c2843b0a5819b"><code>d00641b</code></a> writer::uuid</li> <li><a href="https://github.com/ijl/orjson/commit/c84d9b4ba4853781af943fa5c493e261e2f82b84"><code>c84d9b4</code></a> build and compatibility misc</li> <li><a href="https://github.com/ijl/orjson/commit/4547234b681fac5e0e0734cf44c21e75f9654e43"><code>4547234</code></a> ffi::numpy</li> <li><a href="https://github.com/ijl/orjson/commit/0d4a5ad1f17a72528ba027554466fdec6580cdeb"><code>0d4a5ad</code></a> datetime PyRef idiom</li> <li><a href="https://github.com/ijl/orjson/commit/e93a13d372ec956d027e71d023eb534b8445ac85"><code>e93a13d</code></a> Cross-compile avoids maturin v1.12 build-details.json error</li> <li>See full diff in <a href="https://github.com/ijl/orjson/compare/3.11.7...3.11.8">compare view</a></li> </ul> </details> <br /> Updates `ruff` from 0.15.7 to 0.15.8 <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/releases">ruff's releases</a>.</em></p> <blockquote> <h2>0.15.8</h2> <h2>Release Notes</h2> <p>Released on 2026-03-26.</p> <h3>Preview features</h3> <ul> <li>[<code>ruff</code>] New rule <code>unnecessary-if</code> (<code>RUF050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24114">#24114</a>)</li> <li>[<code>ruff</code>] New rule <code>useless-finally</code> (<code>RUF072</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24165">#24165</a>)</li> <li>[<code>ruff</code>] New rule <code>f-string-percent-format</code> (<code>RUF073</code>): warn when using <code>%</code> operator on an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/24162">#24162</a>)</li> <li>[<code>pyflakes</code>] Recognize <code>frozendict</code> as a builtin for Python 3.15+ (<a href="https://redirect.github.com/astral-sh/ruff/pull/24100">#24100</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Use fully-qualified <code>anyio.lowlevel</code> import in autofix (<code>ASYNC115</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24166">#24166</a>)</li> <li>[<code>flake8-bandit</code>] Check tuple arguments for partial paths in <code>S607</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24080">#24080</a>)</li> <li>[<code>pyflakes</code>] Skip <code>undefined-name</code> (<code>F821</code>) for conditionally deleted variables (<a href="https://redirect.github.com/astral-sh/ruff/pull/24088">#24088</a>)</li> <li><code>E501</code>/<code>W505</code>/formatter: Exclude nested pragma comments from line width calculation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24071">#24071</a>)</li> <li>Fix <code>%foo?</code> parsing in IPython assignment expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24152">#24152</a>)</li> <li><code>analyze graph</code>: resolve string imports that reference attributes, not just modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/24058">#24058</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>eradicate</code>] ignore <code>ty: ignore</code> comments in <code>ERA001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24192">#24192</a>)</li> <li>[<code>flake8-bandit</code>] Treat <code>sys.executable</code> as trusted input in <code>S603</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24106">#24106</a>)</li> <li>[<code>flake8-self</code>] Recognize <code>Self</code> annotation and <code>self</code> assignment in <code>SLF001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24144">#24144</a>)</li> <li>[<code>pyflakes</code>] <code>F507</code>: Fix false negative for non-tuple RHS in <code>%</code>-formatting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24142">#24142</a>)</li> <li>[<code>refurb</code>] Parenthesize generator arguments in <code>FURB142</code> fixer (<a href="https://redirect.github.com/astral-sh/ruff/pull/24200">#24200</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Speed up diagnostic rendering (<a href="https://redirect.github.com/astral-sh/ruff/pull/24146">#24146</a>)</li> </ul> <h3>Server</h3> <ul> <li>Warn when Markdown files are skipped due to preview being disabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/24150">#24150</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify <code>extend-ignore</code> and <code>extend-select</code> settings documentation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24064">#24064</a>)</li> <li>Mention AI policy in PR template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24198">#24198</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Use trusted publishing for NPM packages (<a href="https://redirect.github.com/astral-sh/ruff/pull/24171">#24171</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/bitloi"><code>@bitloi</code></a></li> <li><a href="https://github.com/Sim-hu"><code>@Sim-hu</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md">ruff's changelog</a>.</em></p> <blockquote> <h2>0.15.8</h2> <p>Released on 2026-03-26.</p> <h3>Preview features</h3> <ul> <li>[<code>ruff</code>] New rule <code>unnecessary-if</code> (<code>RUF050</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24114">#24114</a>)</li> <li>[<code>ruff</code>] New rule <code>useless-finally</code> (<code>RUF072</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24165">#24165</a>)</li> <li>[<code>ruff</code>] New rule <code>f-string-percent-format</code> (<code>RUF073</code>): warn when using <code>%</code> operator on an f-string (<a href="https://redirect.github.com/astral-sh/ruff/pull/24162">#24162</a>)</li> <li>[<code>pyflakes</code>] Recognize <code>frozendict</code> as a builtin for Python 3.15+ (<a href="https://redirect.github.com/astral-sh/ruff/pull/24100">#24100</a>)</li> </ul> <h3>Bug fixes</h3> <ul> <li>[<code>flake8-async</code>] Use fully-qualified <code>anyio.lowlevel</code> import in autofix (<code>ASYNC115</code>) (<a href="https://redirect.github.com/astral-sh/ruff/pull/24166">#24166</a>)</li> <li>[<code>flake8-bandit</code>] Check tuple arguments for partial paths in <code>S607</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24080">#24080</a>)</li> <li>[<code>pyflakes</code>] Skip <code>undefined-name</code> (<code>F821</code>) for conditionally deleted variables (<a href="https://redirect.github.com/astral-sh/ruff/pull/24088">#24088</a>)</li> <li><code>E501</code>/<code>W505</code>/formatter: Exclude nested pragma comments from line width calculation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24071">#24071</a>)</li> <li>Fix <code>%foo?</code> parsing in IPython assignment expressions (<a href="https://redirect.github.com/astral-sh/ruff/pull/24152">#24152</a>)</li> <li><code>analyze graph</code>: resolve string imports that reference attributes, not just modules (<a href="https://redirect.github.com/astral-sh/ruff/pull/24058">#24058</a>)</li> </ul> <h3>Rule changes</h3> <ul> <li>[<code>eradicate</code>] ignore <code>ty: ignore</code> comments in <code>ERA001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24192">#24192</a>)</li> <li>[<code>flake8-bandit</code>] Treat <code>sys.executable</code> as trusted input in <code>S603</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24106">#24106</a>)</li> <li>[<code>flake8-self</code>] Recognize <code>Self</code> annotation and <code>self</code> assignment in <code>SLF001</code> (<a href="https://redirect.github.com/astral-sh/ruff/pull/24144">#24144</a>)</li> <li>[<code>pyflakes</code>] <code>F507</code>: Fix false negative for non-tuple RHS in <code>%</code>-formatting (<a href="https://redirect.github.com/astral-sh/ruff/pull/24142">#24142</a>)</li> <li>[<code>refurb</code>] Parenthesize generator arguments in <code>FURB142</code> fixer (<a href="https://redirect.github.com/astral-sh/ruff/pull/24200">#24200</a>)</li> </ul> <h3>Performance</h3> <ul> <li>Speed up diagnostic rendering (<a href="https://redirect.github.com/astral-sh/ruff/pull/24146">#24146</a>)</li> </ul> <h3>Server</h3> <ul> <li>Warn when Markdown files are skipped due to preview being disabled (<a href="https://redirect.github.com/astral-sh/ruff/pull/24150">#24150</a>)</li> </ul> <h3>Documentation</h3> <ul> <li>Clarify <code>extend-ignore</code> and <code>extend-select</code> settings documentation (<a href="https://redirect.github.com/astral-sh/ruff/pull/24064">#24064</a>)</li> <li>Mention AI policy in PR template (<a href="https://redirect.github.com/astral-sh/ruff/pull/24198">#24198</a>)</li> </ul> <h3>Other changes</h3> <ul> <li>Use trusted publishing for NPM packages (<a href="https://redirect.github.com/astral-sh/ruff/pull/24171">#24171</a>)</li> </ul> <h3>Contributors</h3> <ul> <li><a href="https://github.com/bitloi"><code>@bitloi</code></a></li> <li><a href="https://github.com/Sim-hu"><code>@Sim-hu</code></a></li> <li><a href="https://github.com/mvanhorn"><code>@mvanhorn</code></a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/astral-sh/ruff/commit/c2a8815842f9dc5d24ec19385eae0f1a7188b0d9"><code>c2a8815</code></a> Release 0.15.8 (<a href="https://redirect.github.com/astral-sh/ruff/issues/24217">#24217</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d444d52e2b9cc8bc9a078c2bd4ff6ff993290209"><code>d444d52</code></a> [ty] Infer lambda expressions with <code>Callable</code> type context (<a href="https://redirect.github.com/astral-sh/ruff/issues/22633">#22633</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/9622285ed0081fc688149f6efca87f127d9b18dd"><code>9622285</code></a> [ty] Autocomplete arguments if in arguments node (<a href="https://redirect.github.com/astral-sh/ruff/issues/24167">#24167</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/d81266252aaf0820346d55edbed79c4f25ba13d2"><code>d812662</code></a> Use the <code>release</code> environment in <code>publish-docs</code> (<a href="https://redirect.github.com/astral-sh/ruff/issues/24214">#24214</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/eda2355832f7a9c58aef6febd3e061dc9c87509a"><code>eda2355</code></a> [ty] Show <code>Final</code> source in final assignment diagnostic (<a href="https://redirect.github.com/astral-sh/ruff/issues/24194">#24194</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/929eb5238c82bfadad4549ff526f02efc0163dd0"><code>929eb52</code></a> [ty] Enforce Final attribute assignment rules for annotated and augmented wri...</li> <li><a href="https://github.com/astral-sh/ruff/commit/34998be22ec3a77d398bbd55234ef8740f768329"><code>34998be</code></a> [ty] Fix typo in comment (<a href="https://redirect.github.com/astral-sh/ruff/issues/24211">#24211</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/560aca0b2828ee2ff1b4bcc5c5ef1ef4ced229d2"><code>560aca0</code></a> [ty] Minor simplifications to some benchmark code (<a href="https://redirect.github.com/astral-sh/ruff/issues/24209">#24209</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/683bae512d03d3727a7bcdbc5a0170dafa049583"><code>683bae5</code></a> [ty] Track non-terminal-call constraints in global scope (<a href="https://redirect.github.com/astral-sh/ruff/issues/23245">#23245</a>)</li> <li><a href="https://github.com/astral-sh/ruff/commit/4704c2a4ff3dde2fd29324346720e9516b4fe387"><code>4704c2a</code></a> [ty] Remove unnecessary intermediate collection in `StaticClassLiteral::field...</li> <li>Additional commits viewable in <a href="https://github.com/astral-sh/ruff/compare/0.15.7...0.15.8">compare view</a></li> </ul> </details> <br /> Updates `mypy` from 1.19.1 to 1.20.0 <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/python/mypy/blob/master/CHANGELOG.md">mypy's changelog</a>.</em></p> <blockquote> <h1>Mypy Release Notes</h1> <h2>Next Release</h2> <h2>Mypy 1.20</h2> <p>We’ve just uploaded mypy 1.20.0 to the Python Package Index (<a href="https://pypi.org/project/mypy/">PyPI</a>). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:</p> <pre><code>python3 -m pip install -U mypy </code></pre> <p>You can read the full documentation for this release on <a href="http://mypy.readthedocs.io">Read the Docs</a>.</p> <h3>Planned Changes to Defaults and Flags in Mypy 2.0</h3> <p>As a reminder, we are planning to enable <code>--local-partial-types</code> by default in mypy 2.0, which will likely be the next feature release. This will often require at least minor code changes. This option is implicitly enabled by mypy daemon, so this makes the behavior of daemon and non-daemon modes consistent.</p> <p>Note that this release improves the compatibility of <code>--local-partial-types</code> significantly to make the switch easier (see below for more).</p> <p>This can also be configured in a mypy configuration file (use <code>False</code> to disable):</p> <pre><code>local_partial_types = True </code></pre> <p>For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-local-partial-types">documentation</a>.</p> <p>We will also enable <code>--strict-bytes</code> by default in mypy 2.0. This usually requires at most minor code changes to adopt. For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-strict-bytes">documentation</a>.</p> <p>Finally, <code>--allow-redefinition-new</code> will be renamed to <code>--allow-redefinition</code>. If you want to continue using the older <code>--allow-redefinition</code> semantics which are less flexible (e.g. limited support for conditional redefinitions), you can switch to <code>--allow-redefinition-old</code>, which is currently supported as an alias to the legacy <code>--allow-redefinition</code> behavior. To use <code>--allow-redefinition</code> in the upcoming mypy 2.0, you can't use <code>--no-local-partial-types</code>. For more information, refer to the <a href="https://mypy.readthedocs.io/en/stable/command_line.html#cmdoption-mypy-allow-redefinition-new">documentation</a>.</p> <h3>Better Type Narrowing</h3> <p>Mypy's implementation of narrowing has been substantially reworked. Mypy will now narrow more aggressively, more consistently, and more correctly. In particular, you are likely to notice new narrowing behavior in equality expressions (<code>==</code>), containment expressions (<code>in</code>),</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/python/mypy/commit/770d3ca4997032dc3a1c4f0b468e9f58e8f38505"><code>770d3ca</code></a> Remove +dev from version</li> <li><a href="https://github.com/python/mypy/commit/4738ffafc56a0d175cba06e893ffa62e756fc7e0"><code>4738ffa</code></a> Changelog updates for 1.20 (<a href="https://redirect.github.com/python/mypy/issues/21109">#21109</a>)</li> <li><a href="https://github.com/python/mypy/commit/b4f07a717c3a239a9c77808c5550fff5f2638c96"><code>b4f07a7</code></a> Use 'native-parser' instead of 'native-parse' for optional dependency (<a href="https://redirect.github.com/python/mypy/issues/21115">#21115</a>)</li> <li><a href="https://github.com/python/mypy/commit/7bec7b7f791790b1c925cdcc573ced564fbbf065"><code>7bec7b7</code></a> [mypyc] Document librt and librt.base64 (<a href="https://redirect.github.com/python/mypy/issues/21114">#21114</a>)</li> <li><a href="https://github.com/python/mypy/commit/c4825969450385cf3eb91a4fc02f273b369bc301"><code>c482596</code></a> --allow-redefinition-new is no longer experimental (<a href="https://redirect.github.com/python/mypy/issues/21110">#21110</a>)</li> <li><a href="https://github.com/python/mypy/commit/c916ca3fa79d9324dcbe130b18e24e2b5e2d1eb5"><code>c916ca3</code></a> sdist: include <code>misc/{diff-cache,apply-cache-diff}.py</code> for `mypy/test/test_di...</li> <li><a href="https://github.com/python/mypy/commit/b137e4ed41d6178f6dbd0e609db56b8c1ad5384a"><code>b137e4e</code></a> [mypyc] Speed up native-to-native imports within the same group (<a href="https://redirect.github.com/python/mypy/issues/21101">#21101</a>)</li> <li><a href="https://github.com/python/mypy/commit/978b711c21adadf5dae4db80127ddf270d79af5f"><code>978b711</code></a> [mypyc] Fix range loop variable off-by-one after loop exit (<a href="https://redirect.github.com/python/mypy/issues/21098">#21098</a>)</li> <li><a href="https://github.com/python/mypy/commit/67ada30918d1a32e1935e9ac468113e0aa002b79"><code>67ada30</code></a> [stubtest] Check runtime availability of private types not marked `@type_chec...</li> <li><a href="https://github.com/python/mypy/commit/bdef6ef8734af07cab1bf0acadc1d8ab9add93c3"><code>bdef6ef</code></a> librt cache tests: build respecting MYPY_TEST_PREFIX (<a href="https://redirect.github.com/python/mypy/issues/21097">#21097</a>)</li> <li>Additional commits viewable in <a href="https://github.com/python/mypy/compare/v1.19.1...v1.20.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore <dependency name> major version` will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself) - `@dependabot ignore <dependency name> minor version` will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself) - `@dependabot ignore <dependency name>` will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself) - `@dependabot unignore <dependency name>` will remove all of the ignore conditions of the specified dependency - `@dependabot unignore <dependency name> <ignore condition>` will remove the ignore condition of the specified dependency and ignore conditions </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Low-level orchestration framework for building stateful agents.
Trusted by companies shaping the future of agents – including Klarna, Replit, Elastic, and more – LangGraph is a low-level orchestration framework for building, managing, and deploying long-running, stateful agents.
pip install -U langgraph
If you're looking to quickly build agents with LangChain's create_agent (built on LangGraph), check out the LangChain Agents documentation.
Note
Looking for the JS/TS library? Check out LangGraph.js and the JS docs.
Why use LangGraph?
LangGraph provides low-level supporting infrastructure for any long-running, stateful workflow or agent:
- Durable execution — Build agents that persist through failures and can run for extended periods, automatically resuming from exactly where they left off.
- Human-in-the-loop — Seamlessly incorporate human oversight by inspecting and modifying agent state at any point during execution.
- Comprehensive memory — Create truly stateful agents with both short-term working memory for ongoing reasoning and long-term persistent memory across sessions.
- Debugging with LangSmith — Gain deep visibility into complex agent behavior with visualization tools that trace execution paths, capture state transitions, and provide detailed runtime metrics.
- Production-ready deployment — Deploy sophisticated agent systems confidently with scalable infrastructure designed to handle the unique challenges of stateful, long-running workflows.
Tip
For developing, debugging, and deploying AI agents and LLM applications, see LangSmith.
LangGraph ecosystem
While LangGraph can be used standalone, it also integrates seamlessly with any LangChain product, giving developers a full suite of tools for building agents.
To improve your LLM application development, pair LangGraph with:
- Deep Agents (new!) – Build agents that can plan, use subagents, and leverage file systems for complex tasks.
- LangChain – Provides integrations and composable components to streamline LLM application development.
- LangSmith – Helpful for agent evals and observability. Debug poor-performing LLM app runs, evaluate agent trajectories, gain visibility in production, and improve performance over time.
- LangSmith Deployment – Deploy and scale agents effortlessly with a purpose-built deployment platform for long-running, stateful workflows. Discover, reuse, configure, and share agents across teams – and iterate quickly with visual prototyping in LangSmith Studio.
Documentation
- docs.langchain.com – Comprehensive documentation, including conceptual overviews and guides
- reference.langchain.com/python/langgraph – API reference docs for LangGraph packages
- LangGraph Quickstart – Get started building with LangGraph
- Chat LangChain – Chat with the LangChain documentation and get answers to your questions
Discussions: Visit the LangChain Forum to connect with the community and share all of your technical questions, ideas, and feedback.
Additional resources
- Guides – Quick, actionable code snippets for topics such as streaming, adding memory & persistence, and design patterns (e.g. branching, subgraphs, etc.).
- LangChain Academy – Learn the basics of LangGraph in our free, structured course.
- Case studies – Hear how industry leaders use LangGraph to ship AI applications at scale.
- Contributing Guide – Learn how to contribute to LangChain projects and find good first issues.
- Code of Conduct – Our community guidelines and standards for participation.
Acknowledgements
LangGraph is inspired by Pregel and Apache Beam. The public interface draws inspiration from NetworkX. LangGraph is built by LangChain Inc, the creators of LangChain, but can be used without LangChain.