This project modifies a previous project: Local Explorer Assistant by the followings:
- Introduce A2A (Agent to Agent protocol from Google);
- Separate Discovery and Routing Agents as separate services;
- Exposes Discovery and Routing Agents using A2A;
- Keep Composer Agent as SubAgent of the Root Agent, and modify this one to be as well exposed as A2AServer;
- Add a A2AClient component;
- Small facelift of the Streamlit UI.
- Add a logging integrator component, to be able to monitor in one place all the logs from the A2A Servers; this uses the functionality from the new module
logging_ring.pyand a custom Streamlit UI.
The instructions are for running the project on local
Start by editing the .env file. Copy your .env.example as .env and replace the placeholders with your actual values.
GOOGLE_GENAI_USE_VERTEXAI=true
GOOGLE_CLOUD_PROJECT=<YOUR_PROJECT_ID>
GOOGLE_CLOUD_LOCATION=<YOUR_REGION>Start the Discovery Agent A2A Server (1st Remote Agent):
uvicorn discovery:application --host 0.0.0.0 --port 10020Start the Routing Agent A2A Server (2nd Remote Agent):
uvicorn agent:application --host 0.0.0.0 --port 10022Start the Root Agent A2A Server (Host Agent):
uvicorn agent:application --host 0.0.0.0 --port 10022The A2A Client exposes a FastAPI service for the UI. It instantiate a A2A Client to connect to the host agent.
Start the A2A Client with the following command:
uvicorn main:app --host 0.0.0.0 --port 8000Start the user interface:
streamlit run streamlit_ui.py --server.port 8501Here is an image of the main client application user interface:
Start the user interface:
streamlit run streamlit__logs_ui.py --server.port 8502Here is an image of the A2A Agents monitoring logs user interface:


