langgraph-hierarchies
Decomposable agent hierarchies for LangGraph.
Documentation: https://korrino222.github.io/langgraph-hierarchies/
Status: early development (0.0.x). API and scope are not stable. v0.1 will ship the keystone slice below.
An agentic system is decomposable when it can be split into finer agentic systems — each developed, run, and evaluated in isolation, with its own context — that still achieve the goal of the whole. Decomposability in AI workflows explains why that matters: lean context per unit, benchmarkable seams, durable checkpoints, and improvements that stop colliding across stages.
langgraph-hierarchies is the library for building that on LangGraph: recursive hierarchies of real compiled subgraphs, with declarative per-subagent context isolation (SubagentPolicy), supervisor-controlled iteration budgets, and artifact handoff across boundaries — not one swelling monolith, not ephemeral task-tool isolation alone.
Flat delegation (supervisor handoffs, Deep Agents) is a good starting point. This library targets the production wall past that: invokable subagents that nest as deep as the problem needs while preserving streamability, durability, and resumability at every level.
How this relates to other libraries
| langgraph-supervisor | Deep Agents | langgraph-hierarchies | |
|---|---|---|---|
| Model | Supervisor → workers (handoff tools) | Harness + subagents (task / programmatic task()) |
Class-as-factory graphs, phased compile, SubagentPolicy |
| Context isolation | Shared parent history | Ephemeral subagent context | Declarative clear/merge/discard per subagent boundary |
| Nesting | Multi-level supervisors | Fan-out / data recursion (partial); not stateful deep trees | Recursive compiled subgraphs + explicit state policy |
| Best for | Quick hierarchical routing | General long-horizon agents | Production decomposable hierarchies — benchmarkable units, lean checkpoints |
Deep Agents already covers fan-out, parallel orchestration, and RLM-style recursion over data (programmatic subagents, June 2026). This project does not try to replace that.
See langgraph-hierarchies-examples for worked examples demonstrating the before/after decomposability arc.
Compatibility
| langgraph-hierarchies | langgraph |
|---|---|
| 0.0.x | 1.2.6 (pinned; see releases) |
Regression tests gate version bumps. A pair is listed here only once the full suite is green for it.
Bumping the langgraph pin
- Update the
langgraphconstraint inpyproject.toml. - Refresh the lockfile:
uv sync. - Run the full suite:
uv run pytest. - To isolate a failing story, run e.g.
uv run pytest -m us04. - When the suite is green, update the compatibility matrix above and cut a release.
CI runs ruff and pytest on every push/PR (Python 3.10–3.13). Tests use scripted models only — no LLM API keys required.
What's in 0.0.8
- Lean sdist — exclude
docs-site/,docs/,tests/, and config dirs from the source distribution; sdist drops from 55 MB to ~120 KB
What's in 0.0.7
- computation_node config annotation — fix
UserWarningemitted by LangGraph whenSimpleGraphsubclasses usefrom __future__ import annotations;configis now typed asRunnableConfig(always provided at runtime)
What's in 0.0.6
- Managed state in Send payloads —
ReactGraphstrips LangGraph-managed channels (e.g.remaining_steps) fromSendstate to avoid pregel warnings - Concepts docs — Mintlify pages for state, graph factories, compilation,
CompiledGraph, and subagents
What's in 0.0.5
- Parallel tool calls —
ReactGraphdispatches multiple flat-tool calls in parallel; parallel batches that include a subagent are blocked with one errorToolMessagepertool_call_idso chat history stays valid for the next LLM turn
What's in 0.0.4
- Breaking rename —
SubchainPolicy→SubagentPolicy,subchain_policy→subagent_policy,__subchain_stack__→__subagent_stack__(no aliases; update imports and checkpoint state keys)
What's in 0.0.3
- LangSmith threads — automatic
thread_idnormalization intoRunnableConfigmetadata at invoke time (see below)
What's in 0.0.2
The mechanics behind decomposable hierarchies:
BaseGraph/CompiledGraph+ phased compilation — each unit is a real invokable subgraphSubagentPolicy— entry snapshot, clear/merge/discard, exit restore; isolate context at every seamReactGraph+ iteration safety — per-agent limits, supervisortask_iterations, forced-exit report- Root compile (
compile_as_root) and unified invocation — stream and checkpoint through the full tree - Compatibility harness (per-story pytest markers, CI) — benchmark units in isolation
TodoGraph+ todo toolkit — batch processing with flat context; IRS hierarchy test fixture (tests/irs_hierarchy/)
Planner/Executor, progress tracking, HITL: follow-on after v0.1.
LangSmith threads
LangSmith groups multi-turn conversations when runs share metadata.thread_id
(or session_id). The library normalizes thread IDs automatically at invoke time.
Provide any one of:
config["configurable"]["thread_id"]— LangGraph checkpoint conventionconfig["metadata"]["thread_id"]— explicit LangSmith threadcontext.thread_idon your context dataclass (e.g.BaseContext)
All three are backfilled when missing. Explicit metadata.thread_id is never overwritten.
from langgraph_hierarchies import BaseContext, build_invoke_config
config = build_invoke_config(thread_id="demo-run-1", recursion_limit=200)
result = root.invoke(state, config=config, context=BaseContext(model=model))
With LANGCHAIN_TRACING_V2=true, open your project → Threads tab and filter by the thread ID.
Child subgraph spans inherit the same config via LangGraph propagation.
Install
pip install langgraph-hierarchies
Requires Python ≥3.10 (matches LangGraph).
Development
Uses uv (same toolchain as upstream LangGraph):
uv sync
uv run pytest
uv build # sdist + wheel for PyPI
Disclaimer
This project is not affiliated with, endorsed by, or maintained by LangChain or the LangGraph team. “LangGraph” is a trademark of LangChain; this package name indicates compatibility with the LangGraph runtime, not official status.
Contact
- Bug reports & feature requests: GitHub Issues
License
MIT — see LICENSE.
Metadata
Release files for langgraph-hierarchies 0.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| langgraph_hierarchies-0.0.8.tar.gz | 120.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| langgraph_hierarchies-0.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 145.4 kB
Release files / langgraph_hierarchies-0.0.8.tar.gz
| Download URL | langgraph_hierarchies-0.0.8.tar.gz |
|---|---|
| Size | 120.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
29c4e8d6002ddc2c5bb7a4f6b6bf87d956482be75faae62ec98e8c68bfcccbb5
|
|
BLAKE2b-256 checksum How to use checksums |
47f9636dfc040be5a703b0eb0d50dd2625c47e553d01994a15c759135438e0c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / langgraph_hierarchies-0.0.8-py3-none-any.whl
| Download URL | langgraph_hierarchies-0.0.8-py3-none-any.whl |
|---|---|
| Size | 24.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
505c594c0b80bfd6342d1bdb8b3c528338fd572441b641fca2b93b0cdf6cf887
|
|
BLAKE2b-256 checksum How to use checksums |
d97985ce13e79121bebdf4ece3da013660e5c287498845e35cef594e76050a25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|