JVP (a.k.a. IAMJVP) is a brand-new strategic commander agent template built directly from Googleβs latest ADK + Agent-to-Agent (A2A) rollout (released 6 days ago).
Quick Start β’ Architecture β’ Features β’ Terraform β’ Docs
JVP demonstrates the minimal contract for a production-aligned command agent on Vertex AI Agent Engine:
- ADK-first, zero legacy β No LangChain, CrewAI, or bespoke frameworks.
- A2A-ready β Prompts and config prepared for the refreshed AgentCard + skills spec.
- Infrastructure-aware β Terraform modules mirror current Google guidance (project audit, IAM, Artifact Registry, Secret Manager, runtime placeholder).
- Operator-friendly β Scripts, CI, and docs point straight at the official user manuals bundled in this repo.
This template is a launchpad: extend the prompts, add tools, wire runtime, and ship a compliant Vertex AI commander.
- β
Fresh ADK scaffold β
app/jvp_agent/agent.yaml+ prompts + echo tool for proof-of-life. - β
Strategy orchestration tool β
strategic_orchestratorblends local risk/opportunity heuristics for quick situational reads. - β Protocol-conscious β Comments surface TODO(ask) markers where the new manuals require confirmation (model selection, safety policies, CLI invocation).
- β Terraform baseline β Modular layout with feature flags so you can enable resource provisioning incrementally.
- β CI + scripts β Formatting, linting, Terraform init/fmt/validate, plus repo sanity checker for the canonical layout.
- β
GitHub Pages ready β
docs/index.mdmirrors this README so visitors see an immediate landing page.
git clone https://github.com/<you>/intent-agent-model-jvp-base.git
cd intent-agent-model-jvp-base
pip install -r requirements.txt./scripts/dev_run_adk.sh
# Serves the A2A endpoints via uvicorn on http://127.0.0.1:8080
# Visit /v1/card to inspect the AgentCard, or POST to /v1/message:send for commands.cd infra/terraform/envs/dev
terraform init -backend=false
terraform plan -var-file=terraform.tfvars.exampleSet flags in terraform.tfvars if you want Terraform to create the Artifact Registry, agent service account, or Secret Manager entries on the first run.
python scripts/package_agent.py
ls build/
# -> dependencies.tar.gz pickle.pkl requirements.txtArtifacts land in build/ and are consumed by Terraform or manual uploads.
export VERTEX_PROJECT_ID=<project>
export VERTEX_LOCATION=<region>
export VERTEX_AGENT_ENGINE_ID=<agent-engine-id>
./scripts/deploy_agent_engine.shCI/CD: Trigger the
deploy-agent-engineworkflow in GitHub Actions with the same values once Workload Identity Federation is configured.
Set these before running the agent to enable managed services:
| Variable | Description |
|---|---|
VERTEX_PROJECT_ID |
Google Cloud project hosting Agent Engine + Vertex AI Search |
VERTEX_LOCATION |
Region (e.g., us-central1) |
VERTEX_AGENT_ENGINE_ID |
Agent Engine resource ID for sessions + memory bank |
VERTEX_SEARCH_DATA_STORE_ID |
Vertex AI Search datastore ID for RAG queries |
TODO(ask): Confirm final naming conventions from the manuals; update this table if Google standardizes new variable names.
Without these variables, the agent falls back to in-memory session/memory services and the RAG tool returns a configuration warning.
- The agent automatically loads prior memories via
PreloadMemoryTooland persists sessions withadd_session_to_memory, mirroring the ADK Cloud Run memory tutorial (get_started_with_memory_for_adk_in_cloud_run.ipynb). - Provide
VERTEX_PROJECT_ID,VERTEX_LOCATION, andVERTEX_AGENT_ENGINE_IDso theCommandAgentExecutorupgrades toVertexAiSessionService+VertexAiMemoryBankService; otherwise it uses in-memory fallbacks suited for local dev. - When deploying with
adk deploy cloud_run, pass--session_service_uri="agentengine://<agent-engine-id>"and--memory_service_uri="agentengine://<agent-engine-id>"to align with the tutorialβs guidance. app/jvp_agent/memory.pyinspects the installed ADK at runtime and enables Context Cache + Events Compaction knobs (min_tokens=500, ttl=30m, reuse=10, compaction interval=5, overlap=1) whenever the SDK exposes them, keeping compatibility with older builds.
| Feature | Component | Parameter | Value | Purpose |
|---|---|---|---|---|
| Context caching | ContextCacheConfig |
min_tokens |
500 | Only cache large requests |
| Context caching | ContextCacheConfig |
ttl_seconds |
1800 | Expire cache entries after 30β―min |
| Context caching | ContextCacheConfig |
cache_intervals |
10 | Refresh after 10 reuses even if TTL not reached |
| Context compression | EventsCompactionConfig |
compaction_interval |
5 | Summarize history every 5 events |
| Context compression | EventsCompactionConfig |
overlap_size |
1 | Keep 1 prior event for continuity |
app/jvp_agent/agent.pyβ Defines the ADKAgentwith prompts + Vertex AI memory callback wiring (falls back to in-memory if env vars missing).app/jvp_agent/a2a.pyβ Builds the AgentCard, exposes theCommandAgentExecutor, and wires theA2aAgent. Uses Vertex AI Session + Memory Bank when env vars are set.app/jvp_agent/tools/echo_tool.pyβ Placeholder command router that echoes structured payloads.app/jvp_agent/tools/rag_search.pyβ Vertex AI Search tool returning knowledge-grounded snippets (requires datastore configuration).app/jvp_agent/tools/strategic_orchestrator.pyβ Local heuristics for balancing risks and opportunities without external dependencies.app/main.pyβ Boots the A2A Starlette app viauvicornfor local testing.scripts/deploy_agent_engine.shβ Wrapper around the ADK CLI to deploy the agent to Vertex AI Agent Engine (mirrors the GitHub Actions workflow).
Use these modules as extension points when adding real tools, routing logic, or cross-agent delegation.
graph TD
subgraph "ADK App Layer"
AgentConfig[app/jvp_agent/agent.yaml]
Prompts[app/jvp_agent/prompts/*.md]
EchoTool[app/jvp_agent/tools/echo_tool.py]
end
subgraph "Infrastructure Stack"
DevEnv[infra/terraform/envs/dev/main.tf]
ProjectMod[modules/project]
IAMMod[modules/iam]
SecretsMod[modules/secrets]
ArtifactMod[modules/artifact_registry]
RuntimeMod[modules/agent_runtime]
end
subgraph "Ops Tooling"
Scripts[scripts/*.sh]
CI[.github/workflows/ci.yml]
Manuals[000-docs/USER-MANUALS.md]
Pages[docs/index.md]
end
AgentConfig --> Prompts
AgentConfig --> EchoTool
DevEnv --> ProjectMod
DevEnv --> IAMMod
DevEnv --> SecretsMod
DevEnv --> ArtifactMod
DevEnv --> RuntimeMod
Scripts --> AgentConfig
Scripts --> DevEnv
CI --> AgentConfig
CI --> DevEnv
Manuals --> AgentConfig
Manuals --> DevEnv
Pages --> AgentConfig
Extension Points
- Add additional tools under
app/jvp_agent/tools/. - Extend AgentCard + skills once the official A2A schema section in the manuals is confirmed.
- Implement runtime resources (Cloud Run, API Gateway, etc.) inside
modules/agent_runtime.
.
βββ app/ # ADK application (JVP)
β βββ jvp_agent/
β βββ agent.yaml # ADK config (model, tools, runtime)
β βββ prompts/ # System / developer / user prompts
β βββ tools/ # Proof-of-life tool (echo) + future skills
βββ infra/terraform/ # Modular Terraform baseline + envs/dev wiring
βββ scripts/ # Repo checks, dev runner stub, format/lint helper
βββ 000-docs/ # Internal manuals & project docs (Filing System v2.0)
βββ docs/ # GitHub Pages snapshot (public landing)
βββ _archive/ # Legacy workflows retained with NOTE
βββ AGENTS.md # Contributor guide targeted at this layout
βββ STATUS.md # Current state + TODO(ask) tracker
βββ README.md # You are here
modules/projectβ Reads project metadata; placeholder for billing/API enablement.modules/iamβ Optional service account provisioning (off by default).modules/artifact_registryβ Creates Docker repo with immutable tags (toggle via variable).modules/secretsβ Secret Manager baseline with user-managed replicas.modules/agent_runtimeβ Placeholder for Cloud Run / Gateway resources (fill once decided).envs/devβ Wires modules together for the dev environment, exposes feature flags, and includes sampleterraform.tfvars+ remote-state template.
CI runs terraform init -backend=false, fmt, and validate on every push via .github/workflows/ci.yml.
scripts/fmt_vet_lint.shβ Runsblack,ruff(if installed), and Terraform init/fmt/validate.scripts/repo_repurpose_check.shβ Verifies directory expectations and flags strays (e.g., leftover.venv).scripts/dev_run_adk.shβ Launch helper for the ADK/A2A dev server (currentlypython -m app.mainvia uvicorn)..github/workflows/ci.ymlβ Unified pipeline built around the scripts with an extra hook reserved for ADK YAML validation once the CLI ships an official checker.
- Local manuals:
000-docs/USER-MANUALS.mdβ points to the Vertex AI ADK notebooks and guides bundled in this repo. - Latest release notes:
000-docs/008-AT-RELE-iamjvp-launch.md. - External references:
- ADK Overview β https://cloud.google.com/vertex-ai/agents/docs/adk/overview
- Agent Engine β https://cloud.google.com/vertex-ai/generative-ai/docs/agents
- Terraform Google Provider β https://registry.terraform.io/providers/hashicorp/google/latest
- A2A Protocol reference β consult the updated notebook in
000-usermanuals/ - Sessions & Memory Bank β https://cloud.google.com/vertex-ai/generative-ai/docs/agent-engine/memory-bank/overview
- Vertex AI Search (App Builder) β https://cloud.google.com/generative-ai-app-builder/docs
- Multi-agent template (Google) β https://github.com/GoogleCloudPlatform/generative-ai/blob/main/agents/agent_engine/tutorial_multi_agent_systems_on_vertexai_with_claude.ipynb
βΉοΈ When instructions conflict or are unclear, annotate the code with
// TODO(ask): ...and log the question inSTATUS.md. That keeps the baseline honest until the manuals provide a definitive answer.
- Confirm Gemini model + safety policy per the post-rollout manual.
- Replace ADK CLI placeholder with official
adk api_servercommand and add YAML validation step in CI. - Flesh out AgentCard + skills for the refreshed A2A schema to advertise commander capabilities.
- Implement runtime resources (Cloud Run + API Gateway) once the deployment target is locked.
- Add unit/integration tests under
tests/(mirroringapp/layout) as behaviors grow beyond the echo tool.
Progress and questions are tracked in STATUS.md.
- Fork / clone this repo.
- Align with the filing system (all docs in
000-docs/using the NNN-CC-ABCD naming convention). - Update TODO markers only after verifying guidance in the manuals.
- Run
./scripts/fmt_vet_lint.shbefore pushing. - Open PRs with context about which manual sections guided your change.
This baseline is meant to stay lean. Add only what the Google manuals or your production deployment truly require.
- Watch this repo for tags/releases as the official manuals evolve.
- Mirror updates into your own forks and document deviations in
STATUS.md. - Share improvements or questions via issues or discussions once they open.
Status: Initial launch β’ Version: 0.1.0 β’ Last Updated: 2025-11-17
Maintainer: Intent Agent Model team (JVP Commander)
Built from scratch on top of Googleβs ADK + Vertex AI Agent Engine modernization (rolled out six days ago). Fork it, extend it, and command your agents with confidence.