What is the best way to implement Plan and Execute with LangChain 1.0 and LangGraph

In my recent experience, I migrated a very similar “static” architecture — one that relied on routing logic driven by predefined states (also some Router LLM pattern), into a deep_agents setup. It worked surprisingly well with minimal changes, mostly by using the architecture as is. I defined a main agent and several sub-agents, and the main agent (thanks to its base prompt) handled the planning, task list, and orchestration across sub-agents. The only downside was that it felt a bit slow.

After some iterations, I realized I could replace several of those sub-agents with SOP documents (available to be retrieved by the main agent), and the main agent was still able to handle the full workflow end-to-end. That simplification removed quite a bit of overhead.

Honestly, the biggest chunk of effort when working with deep_agents was building custom middleware to manage state. But overall, the architecture feels much cleaner and more dynamic now, without the maintenance burden of “static routing” logic.