of LLMs’ reasoning capabilities with reminiscence, planning, and gear use (creating what we name brokers) has expanded the vary of duties LLMs can carry out.
Nonetheless, a single agent alone has its limitations. When coupled with too many instruments or an excessively giant context, it usually results in poor choices and subpar responses.
For this reason multi-agent methods have grown in reputation, as they permit us to deal with use circumstances of accelerating complexity.
Multi-agent methods join quite a few specialised brokers that work collectively, every specializing in a selected activity, whereas the system routes queries to the proper professional.
Consider it as a staff of specialists collaborating, every contributing their very own specialised abilities via a “divide-and-conquer” strategy.
On this article, we’ll clearly discover one of many key ideas in multi-agent methods: how brokers switch management to 1 one other.
Contents
(1) Primer to LangGraph
(2) Definition of Agentic Handoffs
(3) Example Scenario
(4) Handoffs in LangGraph
Right here is the link 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 advanced 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 circulation).
LangGraph is my framework of alternative 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 advanced logic simple to know, arrange, and hint.
- Versatile non-chat workflows that help agentic orchestration past conversational brokers (e.g., frameworks like AutoGen)
The picture beneath reveals what a graph-based workflow designed for retrieval augmented era seems to be 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 essential as a result of we would like 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, duty, or conversational context to a different agent to make sure continuity and relevance within the interplay.
The picture beneath illustrates a three-agent structure primarily based on the supervisor sample, during 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 features its specialization via integration with a selected set of instruments and customised prompts.
Suppose the person question is “Analysis how social media utilization impacts adolescent psychological well being”.
The supervisor agent, being conscious of the nature of the person 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 circulation:
- Supervisor agent analyzes person 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 current conversations and key data so every agent can act appropriately primarily based on prior context and data.
(3) Instance Situation
Let’s take a look at the instance situation 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 primarily based on the favored supervisor sample.
On this situation, 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 developments.
The routing has been simplified to be one-way i.e. as soon as the employee agent completes its activity, the dialog ends.

For the coordination to work, the supervisor agent should concentrate on 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 observe totally different design patterns and scale to way more nodes, this easy instance permits us to focus on the concept of agent handoffs.
The next screenshot reveals the output of our actual property multi-agent system for a person question:

As we’ll concentrate on agent handoffs, I’ll not be detailing the total LangGraph setup code (e.g., prompts, nodes, LLM calls). Nonetheless, yow will discover 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 traditional 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 may be direct fastened transitions or primarily based on particular circumstances (aka conditional edges).
Put merely, the circulation 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 implies 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 circulation, the place it first receives and analyzes the person question. - After the supervisor completes processing, the routing perform
should_continuecomes into play, inspecting the supervisor’s response to find out the handoff resolution. - The
path_mapdict interprets the routing perform’s return values into graph targets. That is wanted asshould_continuecould return“finish”, whichpath_mapconverts intoEND, LangGraph’s cease sign.
The above primarily reveals 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 nicely for easy, predictable flows, however as soon as the logic turns into extra advanced, wiring collectively many conditional edges can turn into tedious and unintuitive.
To make multi-agent workflows extra versatile and simpler to design, the Command kind was launched to mix state updates and management circulation.
It simplifies issues by letting nodes return a Command object that updates the graph state and specifies the following node to execute.
As an alternative of counting on predefined edges, the node can itself straight and dynamically decide the following step primarily based by itself logic at runtime.
This allows edgeless graphs, the place routing lives within brokers relatively than in a muddle 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 is no such thing as 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 person’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"]kind trace permits us to generate the entire Mermaid graph diagram even after we didn’t explicitly outline the perimeters. The precise handoff circulation is dealt with by thegotoparameter.

With Command, the nodes straight determine which agent runs subsequent and what to go 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 primarily based 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 often 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 choices.
Wrapping It Up
Agent handoffs are the core mechanism that makes a multi-agent system work successfully. On this article, we lined 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 concept stays the identical: clear, constant handoffs are what allow brokers to work collectively.
Take a look at this GitHub repo for the code implementation.

