A base ReAct agent built with Google's Agent Development Kit (ADK) and Agent2Agent (A2A) Protocol.
Agent generated with googleCloudPlatform/agent-starter-pack version 0.17.3
This project is organized as follows:
a2a-ae-github/
├── app/ # Core application code
│ ├── agent.py # Main agent logic
│ ├── agent_engine_app.py # Agent Engine application logic
│ └── utils/ # Utility functions and helpers
├── .github/ # CI/CD pipeline configurations for GitHub Actions
├── deployment/ # Infrastructure and deployment scripts
├── notebooks/ # Jupyter notebooks for prototyping and evaluation
├── tests/ # Unit, integration, and load tests
├── Makefile # Makefile for common commands
├── GEMINI.md # AI-assisted development guide
└── pyproject.toml # Project dependencies and configuration
Before you begin, ensure you have:
- uv: Python package manager (used for all dependency management in this project) - Install (add packages with
uv add <package>) - Google Cloud SDK: For GCP services - Install
- Terraform: For infrastructure deployment - Install
- make: Build automation tool - Install (pre-installed on most Unix-based systems)
Install required packages and launch the local development environment:
make install && make playground| Command | Description |
|---|---|
make install |
Install all required dependencies using uv |
make playground |
Launch Streamlit interface for testing agent locally and remotely |
make backend |
Deploy agent to Agent Engine |
make test |
Run unit and integration tests |
make lint |
Run code quality checks (codespell, ruff, mypy) |
make setup-dev-env |
Set up development environment resources using Terraform |
uv run jupyter lab |
Launch Jupyter notebook |
For full command options and usage, refer to the Makefile.
This template follows a "bring your own agent" approach - you focus on your business logic, and the template handles everything else (UI, infrastructure, deployment, monitoring).
- Prototype: Build your Generative AI Agent using the intro notebooks in
notebooks/for guidance. Use Vertex AI Evaluation to assess performance. - Integrate: Import your agent into the app by editing
app/agent.py. - Test: Explore your agent functionality using the Streamlit playground with
make playground. The playground offers features like chat history, user feedback, and various input types, and automatically reloads your agent on code changes. - Deploy: Set up and initiate the CI/CD pipelines, customizing tests as necessary. Refer to the deployment section for comprehensive instructions. For streamlined infrastructure deployment, simply run
uvx agent-starter-pack setup-cicd. Check out theagent-starter-pack setup-cicdCLI command. Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners. - Monitor: Track performance and gather insights using Cloud Logging, Tracing, and the Looker Studio dashboard to iterate on your application.
The project includes a GEMINI.md file that provides context for AI tools like Gemini CLI when asking questions about your template.
Note: For a streamlined one-command deployment of the entire CI/CD pipeline and infrastructure using Terraform, you can use the
agent-starter-pack setup-cicdCLI command. Currently supports GitHub with both Google Cloud Build and GitHub Actions as CI/CD runners.
You can test deployment towards a Dev Environment using the following command:
gcloud config set project <your-dev-project-id>
make backendThe repository includes a Terraform configuration for the setup of the Dev Google Cloud project. See deployment/README.md for instructions.
The repository includes a Terraform configuration for the setup of a production Google Cloud project. Refer to deployment/README.md for detailed instructions on how to deploy the infrastructure and application.
You can use this Looker Studio dashboard template for visualizing events being logged in BigQuery. See the "Setup Instructions" tab to getting started.
The application uses OpenTelemetry for comprehensive observability with all events being sent to Google Cloud Trace and Logging for monitoring and to BigQuery for long term storage.