Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Cloud Run GPU Hackathon AI Agent Sample Repo: Deploy Your ADK Agent to Cloud Run with GPU

In this sample repo, you'll complete the prototype-to-production journey by taking a working ADK agent and deploying it as a scalable, robust application on Google Cloud Run with GPU support.

🏗️ What You'll Build

You'll deploy a Production Gemma3 Agent with conversational capabilities:

Gemma Agent (GPU-Accelerated):

  • General conversations and Q&A
  • Creative writing assistance
  • Production-ready deployment on Cloud Run

📋 Prerequisites

  • Google Cloud Project with billing enabled. (Please follow the Hackathon handbook manual instruction to apply the credit coupon to your project for the hackathon - DO NOT use your personal credit card)
  • Google Cloud SDK installed and configured
  • Basic understanding of containers and cloud deployment

🚀 Lab Overview

Part 1: Understanding the Production Agent (10 minutes)

Let's first explore the agent we'll be deploying:

Agent Architecture

┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ User Request │ -> │ ADK Agent │ -> │ Gemma Backend │
│ │ │ (Cloud Run) │ │ (Cloud Run+GPU) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
v
┌─────────────────┐
│ FastAPI Server │
│ Health Checks │
│─────────────────┘

Key Components

Prerequisites

# Set your Google Cloud projectexport PROJECT_ID="your-project-id"
gcloud config set project $PROJECT_ID
gcloud config set run/region europe-west1
# Enable APIs
gcloud services enable run.googleapis.com cloudbuild.googleapis.com aiplatform.googleapis.com

Deploy Gemma Backend

cd hackathon-cloudrun/ollama-backend
gcloud run deploy ollama-gemma3-4b-gpu \
--source . \
--concurrency 4 \
--cpu 8 \
--set-env-vars OLLAMA_NUM_PARALLEL=4 \
--gpu 1 \
--gpu-type nvidia-l4 \
--max-instances 1 \
--memory 32Gi \
--allow-unauthenticated \
--no-cpu-throttling \
--no-gpu-zonal-redundancy \
--timeout=600
## download ollama utility and test the Cloud Run GPU service that is created
curl -fsSL https://ollama.com/install.sh
OLLAMA_HOST=<Cloud Run SERVICE URL generated above> ollama run gemma3:4b

Deploy ADK Cloud Run Agent that calls the Gemma Backend

# go to the ADK agent directorycd hackathon-cloudrun/adk-agent
export OLLAMA_URL=$(gcloud run services describe ollama-gemma3-4b-gpu \ --region europe-west1 \ --format='value(status.url)')# Create environment file
cat > .env <<EOFGOOGLE_CLOUD_PROJECT=$PROJECT_IDGOOGLE_CLOUD_LOCATION=europe-west1GEMMA_MODEL_NAME=gemma3:4bOLLAMA_API_BASE=$OLLAMA_URLEOF# Deploy the ADK based AI agent to Cloud Run with ADK webUI 
gcloud run deploy production-adk-agent \
--source . \
--region europe-west1 \
--allow-unauthenticated \
--memory 4Gi \
--cpu 2 \
--max-instances 1 \
--concurrency 50 \
--timeout 300 \
--set-env-vars GOOGLE_CLOUD_PROJECT=$PROJECT_ID \
--set-env-vars GOOGLE_CLOUD_LOCATION=europe-west1 \
--set-env-vars GEMMA_MODEL_NAME=gemma3:4b \
--set-env-vars OLLAMA_API_BASE=$OLLAMA_URL

Test Your Agent's health

# Get service URLexport SERVICE_URL=$(gcloud run services describe production-adk-agent \ --region=europe-west1 \ --format='value(status.url)')# Test health endpoint
curl $SERVICE_URL/health

🎉 Test your Agent with the ADK WebUI

Your production ADK agent is now running on Cloud Run with GPU acceleration!

Interact with your agent by entering the SERVICE_URL above for your production-adk-agent into a new browser tab. You should see the ADK web interface.

Try these queries:Gemma Agent (Conversational):

  • "What is the color of a polar bear's skin ?"

  • "What is the primary food source of a Giant Panda, a frequently exhibited endangered species?"

    Clean up

Follow these steps to delete the resources you created in this lab to avoid incurring further charges.

Examples of how to delete the two Cloud Run services that were deployed in this repo. You can also delete them in the Cloud Run Web Console page. Please also remember to delete other Google Cloud resources you may have used.

#Delete the ADK agent Cloud Run service:
gcloud run services delete production-adk-agent -region europe-west1
# Delete the Gemma backend Cloud Run service: 
gcloud run services delete ollama-gemma3-4b-gpu --region europe-west1

About

The sample repo for the 2025 Cloud Run GPU hackthon

Resources

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages