Hi @theodevs ,
The runtime (async vs. sync) and whether your nodes are truly async + non-blocking determine true concurrency in LangGraph; parallel edges do not ensure parallel execution.
Also, you can also look for LangGraph parallel edges async execution, RunnableParallel, and async node execution LangGraph in the LangChain/LangGraph async execution docs. Avoid blocking code, and make sure all LLM/tool calls are fully async for true 0-gap overlap; otherwise, it’s typically runtime behavior rather than state-locking.
Reference: Durable execution - Docs by LangChain