Project link
temporal-community/durable-hitl-agents
Language
Python
Short description (max 256 chars)
Ziggy's Durable HITL Agents is a visual Python multi-agent demo integrating Temporal with Google ADK and LangGraph. It shows durable human-to-agent and agent-to-human workflows, Worker recovery, and cross-framework orchestration.
Long Description
Ziggy's Durable HITL Agents is a visual Python multi-agent demo and runnable reference for making human interaction part of a durable AI-agent workflow. Google ADK and LangGraph own the agent reasoning loops, while Temporal preserves workflow state, human waits, retries, and cross-framework handoffs across Worker restarts.
This project builds on the original Ice Cream Fleet Demo, created for Google Cloud Next. The original established Ziggy's fleet scenario with Google ADK multi-agent assignment on Temporal, including failure recovery and operator-initiated order changes. This version moves the fleet from the Las Vegas Strip to San Francisco and extends the architecture with LangGraph, agent-initiated human judgment, and an ADK-to-LangGraph cross-framework flow coordinated by Temporal.
The demo implements two complementary patterns:
- Human to agent: a customer changes work already in flight. A Temporal Signal records the change, a driver Workflow waits durably with
wait_condition, and a supervisor's decision resumes it. For an approved address change, the Google ADK team re-reasons over the new destination before delivery continues.
- Agent to human: a LangGraph agent calls an
ask_human tool during its reasoning loop. LangGraph interrupts the graph, Temporal durably waits for an answer Signal, and the answer returns to the agent as its next observation.
A third dashboard view combines both directions across frameworks: a Google ADK child Workflow assesses an order, a LangGraph child Workflow dispatches it, and a Temporal parent Workflow applies the decision to the driver Workflow. This makes the framework boundary and ownership of durable state visible in both the application and Temporal UI.
The repository demonstrates Temporal Signals, Queries, wait_condition, child Workflows, Activities and retries, replay after Worker restarts, and continue-as-new for long-lived histories. It is useful to developers designing approval flows, exception handling, or other asynchronous human interactions in agentic systems without tying durability to a UI process or an agent framework's in-memory state.
The quickstart uses Python 3.11+, uv, the Temporal CLI, and separate Google Gemini and Maps API keys. ./run.sh installs the locked dependencies and starts a local Temporal development server, Workers, FastAPI server, dashboard, and Temporal UI. The test suite runs without Google keys.

Author(s)
Melanie Warrick, Temporal — GitHub — headshot/avatar
The repository's README separately credits Alfred Chan, Tim Conley, David Hyde, Maple Xu, Angie Byron, Josh Geller, and Cecil Phillip for their contributions.
Project link
temporal-community/durable-hitl-agents
Language
Python
Short description (max 256 chars)
Ziggy's Durable HITL Agents is a visual Python multi-agent demo integrating Temporal with Google ADK and LangGraph. It shows durable human-to-agent and agent-to-human workflows, Worker recovery, and cross-framework orchestration.
Long Description
Ziggy's Durable HITL Agents is a visual Python multi-agent demo and runnable reference for making human interaction part of a durable AI-agent workflow. Google ADK and LangGraph own the agent reasoning loops, while Temporal preserves workflow state, human waits, retries, and cross-framework handoffs across Worker restarts.
This project builds on the original Ice Cream Fleet Demo, created for Google Cloud Next. The original established Ziggy's fleet scenario with Google ADK multi-agent assignment on Temporal, including failure recovery and operator-initiated order changes. This version moves the fleet from the Las Vegas Strip to San Francisco and extends the architecture with LangGraph, agent-initiated human judgment, and an ADK-to-LangGraph cross-framework flow coordinated by Temporal.
The demo implements two complementary patterns:
wait_condition, and a supervisor's decision resumes it. For an approved address change, the Google ADK team re-reasons over the new destination before delivery continues.ask_humantool during its reasoning loop. LangGraph interrupts the graph, Temporal durably waits for an answer Signal, and the answer returns to the agent as its next observation.A third dashboard view combines both directions across frameworks: a Google ADK child Workflow assesses an order, a LangGraph child Workflow dispatches it, and a Temporal parent Workflow applies the decision to the driver Workflow. This makes the framework boundary and ownership of durable state visible in both the application and Temporal UI.
The repository demonstrates Temporal Signals, Queries,
wait_condition, child Workflows, Activities and retries, replay after Worker restarts, and continue-as-new for long-lived histories. It is useful to developers designing approval flows, exception handling, or other asynchronous human interactions in agentic systems without tying durability to a UI process or an agent framework's in-memory state.The quickstart uses Python 3.11+,
uv, the Temporal CLI, and separate Google Gemini and Maps API keys../run.shinstalls the locked dependencies and starts a local Temporal development server, Workers, FastAPI server, dashboard, and Temporal UI. The test suite runs without Google keys.Author(s)
Melanie Warrick, Temporal — GitHub — headshot/avatar