LangGraph abstractions for hierarchical multi-agent systems
Project description
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 examples/irs_reporting/ for a five-stage pipeline with artifact-only handoff between compiled subgraphs — the IRS workflow from the article, decomposed.
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.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 example (examples/irs_reporting/)
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file langgraph_hierarchies-0.0.4.tar.gz.
File metadata
- Download URL: langgraph_hierarchies-0.0.4.tar.gz
- Upload date:
- Size: 57.3 MB
- Tags: Source
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e8688be3e78453463669e6800d59181ab178501950bbe128325f9933bda48de
|
|
| MD5 |
b9e02b46f2c522de4741d70f7c684a20
|
|
| BLAKE2b-256 |
fa3b09ba0b9dd8c8b46e6c3df082d16f14726dd2603eb322b416fff8b448b47d
|
File details
Details for the file langgraph_hierarchies-0.0.4-py3-none-any.whl.
File metadata
- Download URL: langgraph_hierarchies-0.0.4-py3-none-any.whl
- Upload date:
- Size: 23.8 kB
- Tags: Python 3
- Uploaded using 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}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
71200a9058088814ad2c0fa4f1b82829028e78a5e014b95d83381f2b1140052b
|
|
| MD5 |
9014600d9a3b54069b17e0ea3c3ccd81
|
|
| BLAKE2b-256 |
70ac070d6825ab2d93538e83b04dc45e9435b5d5e1312e3f9b5d6c481bc490e1
|