Awesome Agents on Google Cloud

app

The voice-agent front: chat UI, the ADK agent, and thin clients for the GPU box (../gpu-speech/), which serves all three models: Whisper (ears), Gemma 4 31B (brain), and Kokoro (mouth). There are no hosted fallbacks; MODEL_API_BASE (the brain, via LiteLLM) and SPEECH_SERVICE_URL are required.

Required env: SPEECH_SERVICE_URL and MODEL_API_BASE (both the GPU box URL; the app authenticates with its identity token), MODEL_ID (the served model name, e.g. google/gemma-4-31B-it), and GOOGLE_CLOUD_PROJECT.

Deploy:

gcloud run deploy paper-voice-agent \
  --source . \
  --region us-central1 \
  --cpu 2 --memory 2Gi \
  --max-instances 1 --timeout 600 \
  --allow-unauthenticated \
  --set-env-vars GOOGLE_CLOUD_PROJECT=<project id>,MODEL_ID=google/gemma-4-31B-it,MODEL_API_BASE=<gpu box url>,SPEECH_SERVICE_URL=<gpu box url>

The service account running this app needs roles/run.invoker on the GPU box.

Tests: test/smoke.sh <app url> <wav> (warm protocol suite), test/cold.sh <app url> <wav> (cold-start UX, costs a real GPU boot).