of LLMs’ reasoning capabilities with reminiscence, planning, and power use (creating what we name brokers) has expanded the vary of duties LLMs can carry out.
Nevertheless, a single agent alone has its limitations. When coupled with too many instruments or an excessively massive context, it typically results in poor selections and subpar responses.
This is the reason multi-agent methods have grown in reputation, as they permit us to sort out use instances of accelerating complexity.
Multi-agent methods join quite a few specialised brokers that work collectively, every specializing in a particular job, whereas the system routes queries to the fitting professional.

Consider it as a group of specialists collaborating, every contributing their very own specialised abilities via a “divide-and-conquer” method.
On this article, we’ll clearly discover one of many key ideas in multi-agent methods: how brokers switch management to at least one one other.
Contents
(1) Primer to LangGraph
(2) Definition of Agentic Handoffs
(3) Instance State of affairs
(4) Handoffs in LangGraph
Right here is the hyperlink to the accompanying GitHub repo.
(1) Primer to LangGraph
[Optional Reading]
LangGraph is an open-source orchestration framework for constructing stateful, LLM-based agentic methods that reliably deal with complicated duties.
It permits builders to design workflows as graphs, the place every graph consists of nodes (representing duties or LLM calls) and edges (representing management movement).
LangGraph is my framework of selection for constructing agentic methods due to its key strengths:
- Low-level controllability that provides exact management over transitions, states, and the way every agent executes.
- Clear and intuitive graph-based workflows that make complicated logic straightforward to grasp, arrange, and hint.
- Versatile non-chat workflows that assist agentic orchestration past conversational brokers (e.g., frameworks like AutoGen)
The picture under exhibits what a graph-based workflow designed for retrieval augmented era appears like:

(2) Definition of Agentic Handoffs
First, let’s perceive what a handoff means.
An agentic handoff is the second when an agent straight and dynamically passes management to a different agent after ending its work.
That is vital as a result of we wish duties to be routed to the agent finest outfitted to offer a context-aware response.
In technical phrases, a handoff happens when one agent transfers management, accountability, or conversational context to a different agent to make sure continuity and relevance within the interplay.
The picture under illustrates a three-agent structure based mostly on the supervisor sample, through which a central agent coordinates the specialised employee brokers (a analysis agent and a document-authoring agent).

On this case, handoffs can happen in each instructions between the supervisor and every employee agent.
Every employee positive aspects its specialization via integration with a particular set of instruments and customised prompts.
Suppose the consumer question is “Analysis how social media utilization impacts adolescent psychological well being”.
The supervisor agent, being conscious of the nature of the consumer question and the employee brokers at its disposal, will hand off the duty to the analysis agent to hold out the following flip.
Right here is the movement:
- Supervisor agent analyzes consumer intent and decides that it wants help from the analysis agent
- Supervisor passes management (and state*) to the analysis agent
- The analysis agent performs the duty and decides whether or not to handoff again to the supervisor agent or finish the dialog.
* State is the multi-agent system’s short-term reminiscence, capturing latest conversations and key data so every agent can act appropriately based mostly on prior context and data.
(3) Instance State of affairs
Let’s take a look at the instance state of affairs to anchor our walkthrough.
We are going to arrange an actual property assistant able to answering queries associated to properties in Singapore. It’s designed as a three-agent system based mostly on the favored supervisor sample.
On this state of affairs, we now have an actual property supervisor (supervisor) with entry to 2 specialised employee brokers:
- Property profile agent: Handles queries associated to housing property particulars.
- Transaction historical past agent: Handles queries associated to property transactions and market traits.
The routing has been simplified to be one-way i.e. as soon as the employee agent completes its job, the dialog ends.

For the coordination to work, the supervisor agent should pay attention to its position, total workflow, and brokers at its disposal. We do that with a immediate like this:
Discover that the directions for the handoff standards are explicitly outlined within the immediate.
The code for the supervisor node for conditional routing is as follows:
Whereas multi-agent methods can comply with totally different design patterns and scale to much more nodes, this straightforward instance permits us to focus on the thought of agent handoffs.
The next screenshot exhibits the output of our actual property multi-agent system for a consumer question:

As we’ll deal with agent handoffs, I’ll not be detailing the complete LangGraph setup code (e.g., prompts, nodes, LLM calls). Nevertheless, you’ll find the code implementation in this GitHub repo.
(4) Handoffs in LangGraph
There are two mechanisms for agent handoffs in LangGraph:
- Conditional edges
- Command object
(4.1) Conditional Edges (Static Routing-Primarily based Handoff)
A conditional edge is the basic graph-routing methodology for handing off management between brokers.
In a graph, nodes do the work whereas edges inform what to do subsequent.
Edges are capabilities that determine the routing logic (i.e., which node to execute subsequent). This routing might be direct fastened transitions or based mostly on particular circumstances (aka conditional edges).
Put merely, the movement in a conditional edge is as follows:
- A node generates an output
- Output is handed to the conditional edge as enter
- The perform within the conditional edge evaluates it and chooses the following node to run

In LangGraph, we outline conditional edges by calling add_conditional_edges on an StateGraph occasion:
graph.add_conditional_edges(supply="start_node", path=routing_function)
supplyargument refers back to the beginning node. It signifies that after this node finishes, the conditional routing kicks in.pathargument takes the conditional perform, and its return worth controls which node the graph strikes to subsequent.
Allow us to first discover the routing perform (should_continue) of our actual property instance:
Here’s what the routing perform is doing:
- Learn the supervisor’s newest response and determine what to do subsequent.
- Test whether or not the supervisor explicitly requested handy the duty off to both of the 2 employee brokers.
- When the supervisor names a employee agent, the perform returns that agent’s identify as a string, triggering a handoff to that agent.
- If the supervisor didn’t request any employee agent, the perform returns
"finish", which means the supervisor has responded and the workflow ends.
With the routing perform arrange, we subsequent outline the conditional edges:
- The
supervisornode serves because the supply entry level of the movement, the place it first receives and analyzes the consumer question. - After the supervisor completes processing, the routing perform
should_continuecomes into play, analyzing the supervisor’s response to find out the handoff determination. - The
path_mapdict interprets the routing perform’s return values into graph targets. That is wanted asshould_continuemight return“finish”, whichpath_mapconverts intoEND, LangGraph’s cease sign.
The above basically exhibits how agentic handoffs work: the supervisor outputs particular strings that the conditional perform makes use of to path to the following agent or terminate.
(4.2) Command Object (Dynamic Handoff)
Conditional edges work properly for easy, predictable flows, however as soon as the logic turns into extra complicated, wiring collectively many conditional edges can develop into tedious and unintuitive.
To make multi-agent workflows extra versatile and simpler to design, the Command sort was launched to mix state updates and management movement.
It simplifies issues by letting nodes return a Command object that updates the graph state and specifies the following node to execute.
As a substitute of counting on predefined edges, the node can itself straight and dynamically decide the following step based mostly by itself logic at runtime.
This allows edgeless graphs, the place routing lives within brokers relatively than in a litter of conditional guidelines, leading to a cleaner, extra versatile option to orchestrate handoffs.
Here’s a minimal code for utilizing Command in a router node:
Within the above, the router agent node reads the state, decides what ought to run subsequent, and returns a Command that updates the graph state and factors to the following node.
Because the node chooses the following step utilizing the goto argument, there isn’t a must outline conditional edges with add_conditional_edges.
Command makes it such that the handoff logic sits within the nodes relatively than the perimeters. Therefore, we count on the code in our supervisor node to be extra prolonged:
- The supervisor node calls an LLM to return a
SupervisorDecisionstructured output object containing two key issues: which agent handy off to, and any related context, just like the property identify extracted from the consumer’s message. - If no employee agent is required, the supervisor responds straight. The node returns a
Commandthat updates the messages with the response and ends the graph. - If a handoff is required, the node builds an replace dictionary. It features a routing message from the supervisor and the extracted context (e.g., the property identify) within the graph state, in order that the following agent can use it instantly.
- Lastly, the node returns a
Commandthat specifies the following agent utilizinggotoand applies state updates (i.e., replaceproperty_name).
The
Literal["transaction_history_agent", "property_profile_agent"]sort trace permits us to generate the entire Mermaid graph diagram even after we didn’t explicitly outline the perimeters. The precise handoff movement is dealt with by thegotoparameter.

With Command, the nodes straight determine which agent runs subsequent and what to move alongside. It eliminates separate routing guidelines and retains the handoff logic clear.
(4.3) When to make use of conditional edges or Command?
Right here is how to decide on conditional edges versus Command for handoffs:
Use conditional edges when:
- You solely must determine which node runs subsequent based mostly on the present graph state, with out altering it.
Use Command when:
- Your node wants to change its state and decide the following node concurrently.
- That is helpful in multi-agent handoffs the place routing to a different agent normally requires spending some data to that agent.
In my work, I’ve largely switched to utilizing
Commandas an alternative of conditional edges provided that many multi-agent methods require coordinated graph state updates alongside routing selections.
Wrapping It Up
Agent handoffs are the core mechanism that makes a multi-agent system work successfully. On this article, we coated how these handoffs work in follow, with LangGraph serving because the implementation layer to specific them utilizing conditional routing or the Command object.
No matter framework we use, the thought stays the identical: clear, constant handoffs are what allow brokers to work collectively.
Try this GitHub repo for the code implementation.
















