Sanity Check: Is our analysis of the ADK [WIP] YAML bug correct, or are we missing something?

We’re building a custom RAG architecture because our long-term, stateful project has hit the fundamental limits of Google AI Studio as a development environment. Specifically, we’re being blocked by platform instability, degraded model performance with context windows exceeding 100k tokens, and restrictive rate limits, necessitating a move to a more robust, production-grade solution with persistent, indexed memory.

My AI development partner and I have been hitting a persistent wall trying to connect a local agent to a Memory Bank-enabled Agent Engine. We’ve formed a theory about why it’s failing, but after a long debugging session, I’d like to get a sanity check from the community to see if this reasoning is correct or if we’re hallucinating a bug.

Goal: To run a simple, local agent definition that connects to a Vertex AI Agent Engine which uses the new Memory Bank feature.

The Problem: The Problem: A Loop of Contradictory Errors

The AI’s Theory: A Two-Stage Failure
The analysis suggests a two-stage failure when we follow the official ADK Quickstart guide to launch our agent with the adk web command.

  1. The Initial ModuleNotFoundError: It first theorized that the initial ModuleNotFoundError was caused by a critical naming convention (the agent’s folder name must exactly match its name parameter). It concluded this rule was implicitly demonstrated but not explicitly stated in the Quickstart guide, making it a difficult-to-diagnose “unwritten rule.”

  2. Unmasking the Deeper [WIP] Bug: After we meticulously fixed that packaging issue, the server was able to discover our agent, but this immediately unmasked a deeper, unavoidable bug: RuntimeError: {“error”: “[WIP] load_from_yaml_config. load_from_yaml_config is not ready for use.”}

The AI’s Conclusion:
Based on this, the AI has concluded that the adk web tool in the latest library versions is unconditionally calling an unfinished, experimental feature that crashes the server on startup, and that this is a definitive bug in the library.

Our Core Question for the Community:
Is this analysis correct, or are we missing a key configuration step? Specifically:

  • Is there a way to configure or disable this new YAML feature to prevent the [WIP] error?

  • Or is our conclusion correct that the adk web tool is currently unstable for this use case, forcing us to use a more complex, programmatic approach as shown in the Memory Service documentation?

We’re trying to understand if this is a genuine library bug or a “hallucination” on the part of my AI partner. Any insights you could provide would be incredibly helpful.

Thanks in advance! Project NICI (Simone)

1 Like

Hi , I got the same error. So I looked into the error logs and found out the cause.
it was caused due to not specifying ‘root_agent’. All I needed to do was to just
write one line

root_agent = my_agent_name.

the problem is, the ADK expects a root agent, so we either need to have our agent named root_agent or specify it later on, using the above line.

here’s an example,

my_agent = Agent(
model = MODEL,name = ‘my_agent’, instruction= ‘custome instruction’,tools =[…])

#specify the root_agent to be my_agent
root_agent = my_agent

or you could do
root_agent = Agent(
model = MODEL,name = ‘my_agent’, instruction= ‘custome instruction’,tools =[…])

and you are good to go.

here is where the [WIP] load_from_yaml_config. load_from_yaml_config is not ready for use.”, occur

This is from the file located at ..google/adk/cli/utils/agent_loader.py

partial definiton of method ‘_perform_load()’

if root_agent := self._load_from_module_or_package(agent_name):
  return root_agent

if root_agent := self._load_from_submodule(agent_name):
  return root_agent

if root_agent := self._load_from_yaml_config(agent_name):
  return root_agent
)

You can see that it jumps to third ‘if’ condition because it fails to load the root_agent from the module/submodule

here’s the _load_from_module_or_package() method’s partial definition:

try:
  module_candidate = importlib.import_module(agent_name)
  # Check for "root_agent" directly in "{agent_name}" module/package
  if hasattr(module_candidate, "root_agent"):
    logger.debug("Found root_agent directly in %s", agent_name)
    if isinstance(module_candidate.root_agent, BaseAgent):
      return module_candidate.root_agent
    else:
      logger.warning(
          "Root agent found is not an instance of BaseAgent. But a type %s",
          type(module_candidate.root_agent),
      )
  else:
    logger.debug(
        "Module %s has no root_agent. Trying next pattern.",
        agent_name,
    )

You can clearly see the it expects root agent to be named ‘root_agent’, and if not , it fails to load it, and skips to next if statment.

2 Likes

Hi,

I believe this issue relates to ADK, I believe Google ADK github is the right platform to raise issues regarding ADK.