DEV Community

xbill for Google Developer Experts

Posted on • Originally published at xbill999.Medium on

Running the ADK Visual Builder on Azure App Service

Leveraging the Google Agent Development Kit (ADK) and the underlying Gemini LLM to build low code in the Python programming language deployed securely on the Azure Cloud platform.

What is Gemini CLI?

The Gemini CLI is an open-source, terminal-based AI agent from Google that allows developers to interact directly with Gemini models, such as Gemini 2.5 Pro, for coding, content creation, and workflow automation. It supports file operations, shell commands, and connects to external tools via the Model Context Protocol (MCP).

The full details on Gemini CLI are available here:

Build, debug & deploy with AI

Azure App Service

Azure App Service is a fully managed Platform-as-a-Service (PaaS) that enables developers to build, deploy, and scale web applications, APIs, and mobile backends quickly. It supports multiple languages (.NET, Java, Node.js, Python, PHP) on Windows or Linux, offering built-in CI/CD, auto-scaling, and high security.

https://azure.microsoft.com/en-us/products/app-service

Why would I want Gemini CLI with Azure? Isn’t that a Google Thing?

Yes- Gemini CLI leverages the Google Cloud console and Gemini models but it is also open source and platform agnostic. Many applications are already cross-cloud so this enables familiar tools to be run natively on Microsoft Azure.

Azure App Service Configuration

To configure your Azure App Service with the base system tools- this article provides a reference:

MCP Development with Python, and the Azure App Service

Python Version Management

One of the downsides of the wide deployment of Python has been managing the language versions across platforms and maintaining a supported version.

The pyenv tool enables deploying consistent versions of Python:

GitHub - pyenv/pyenv: Simple Python version management

As of writing — the mainstream python version is 3.13. To validate your current Python:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ python --version
Python 3.13.12
Enter fullscreen mode Exit fullscreen mode

Gemini CLI

If not pre-installed you can download the Gemini CLI to interact with the source files and provide real-time assistance:

npm install -g @google/gemini-cli
Enter fullscreen mode Exit fullscreen mode

Testing the Gemini CLI Environment

Once you have all the tools and the correct Node.js version in place- you can test the startup of Gemini CLI. You will need to authenticate with a Key or your Google Account:

azureuser@azure-new:~/gemini-cli-azure$ gemini

▝▜▄ Gemini CLI v0.33.1
    ▝▜▄
   ▗▟▀ Logged in with Google /auth
  ▝▀ Gemini Code Assist Standard /upgrade
Enter fullscreen mode Exit fullscreen mode

Node Version Management

Gemini CLI needs a consistent, up to date version of Node. The nvm command can be used to get a standard Node environment:

GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions

To verify the Node version:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ nvm --version
0.40.3
xbill@penguin:~/gemini-cli-azure/adkui-appservice$ node --version
v25.8.2
Enter fullscreen mode Exit fullscreen mode

Agent Development Kit

The Google Agent Development Kit (ADK) is an open-source, Python-based framework designed to streamline the creation, deployment, and orchestration of sophisticated, multi-agent AI systems. It treats agent development like software engineering, offering modularity, state management, and built-in tools (like Google Search) to build autonomous agents.

The ADK can be installed from here:

Agent Development Kit (ADK)

Where do I start?

The strategy for starting low code agent development is a incremental step by step approach.

The agents in the demo are based on the original code lab:

Create and deploy low code ADK (Agent Deployment Kit) agents using ADK Visual Builder | Google Codelabs

First, the basic development environment is setup with the required system variables, and a working Gemini CLI configuration.

Then, a minimal ADK Agent is built with the visual builder. Next — the entire solution is deployed to Google Cloud Run.

Setup the Basic Environment

At this point you should have a working Python environment and a working Gemini CLI installation. The next step is to clone the GitHub samples repository with support scripts:

cd ~
git clone https://github.com/xbill9/gemini-cli-azure
Enter fullscreen mode Exit fullscreen mode

Then run init.sh from the cloned directory.

The script will attempt to determine your shell environment and set the correct variables:

source init.sh
Enter fullscreen mode Exit fullscreen mode

If your session times out or you need to re-authenticate- you can run the set_env.sh script to reset your environment variables:

source set_env.sh
Enter fullscreen mode Exit fullscreen mode

Variables like PROJECT_ID need to be setup for use in the various build scripts- so the set_env script can be used to reset the environment if you time-out.

Azure Login

All of the deployment is done with the az CLI tool- but it also needs an active login on the Azure environment. To check the version:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ which az
/usr/bin/az
xbill@penguin:~/gemini-cli-azure/adkui-appservice$ az --version
azure-cli 2.84.0

core 2.84.0
telemetry 1.1.0

Dependencies:
msal 1.35.0b1
azure-mgmt-resource 24.0.0

Python location '/opt/az/bin/python3'
Config directory '/home/xbill/.azure'
Extensions directory '/home/xbill/.azure/cliextensions'

Python (Linux) 3.13.11 (main, Feb 25 2026, 02:29:30) [GCC 12.2.0]

Legal docs and information: aka.ms/AzureCliLegal

Your CLI is up-to-date.
Enter fullscreen mode Exit fullscreen mode

To login to Azure:

az login
Enter fullscreen mode Exit fullscreen mode

Then you will see a message after successful authentication:

You have logged into Microsoft Azure!
You can close this window, or we will redirect you to the Azure CLI documentation in 1 minute.
Enter fullscreen mode Exit fullscreen mode

Verify The ADK Installation

To verify the setup, run the ADK CLI with Agent1:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ adk run Agent1
Log setup complete: /tmp/agents_log/agent.20260330_102040.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/cli/utils/agent_loader.py:277: UserWarning: [EXPERIMENTAL] _load_from_yaml_config: This feature is experimental and may change or be removed in future versions without notice. It may introduce breaking changes at any time.
  if root_agent := self._load_from_yaml_config(actual_agent_name, agents_dir):
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/features/_feature_decorator.py:81: UserWarning: [EXPERIMENTAL] feature FeatureName.AGENT_CONFIG is enabled.
  check_feature_enabled()
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/cli/cli.py:204: UserWarning: [EXPERIMENTAL] InMemoryCredentialService: This feature is experimental and may change or be removed in future versions without notice. It may introduce breaking changes at any time.
  credential_service = InMemoryCredentialService()
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/auth/credential_service/in_memory_credential_service.py:33: UserWarning: [EXPERIMENTAL] BaseCredentialService: This feature is experimental and may change or be removed in future versions without notice. It may introduce breaking changes at any time.
  super(). __init__ ()
Running agent Agent1, type exit to exit.
[user]: what is the weather in Weehawken NJ?
[Agent1]: The weather in Weehawken, NJ is currently mostly cloudy with a temperature of 58°F (14°C), feeling like 56°F (13°C). There is an 8% chance of rain, and the humidity is around 56%.

For today, Monday, March 30, 2026, the forecast for Weehawken includes mostly cloudy skies during the day with a high of 64°F, and occasional showers late at night with a low of 58°F. There is a 50% chance of rain tonight. Winds will be from the southwest at 10 to 15 mph, with gusts up to 30 mph.


Running the ADK Web Interface

First- start the ADK interface:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ adk web --host 0.0.0.0
2026-03-30 10:21:46,051 - INFO - service_factory.py:266 - Using in-memory memory service
2026-03-30 10:21:46,051 - INFO - local_storage.py:84 - Using per-agent session storage rooted at /home/xbill/gemini-cli-azure/adkui-appservice
2026-03-30 10:21:46,051 - INFO - local_storage.py:110 - Using file artifact service at /home/xbill/gemini-cli-azure/adkui-appservice/.adk/artifacts
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/cli/fast_api.py:192: UserWarning: [EXPERIMENTAL] InMemoryCredentialService: This feature is experimental and may change or be removed in future versions without notice. It may introduce breaking changes at any time.
  credential_service = InMemoryCredentialService()
/home/xbill/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/auth/credential_service/in_memory_credential_service.py:33: UserWarning: [EXPERIMENTAL] BaseCredentialService: This feature is experimental and may change or be removed in future versions without notice. It may introduce breaking changes at any time.
  super(). __init__ ()
INFO: Started server process [11701]
INFO: Waiting for application startup.

+-----------------------------------------------------------------------------+
| ADK Web Server started |
| |
| For local testing, access at http://0.0.0.0:8000. |
+-----------------------------------------------------------------------------+

INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
Enter fullscreen mode Exit fullscreen mode

Connecting to the ADK

The ADK web interface is started with the place holder 0.0.0.0 address — which tells the service to listen on all interfaces. Depending on your local environment setup- you may need to use the actual local interface. There are 2 potential options:

http://0.0.0.0:8000 

http://127.0.0.1:8000
Enter fullscreen mode Exit fullscreen mode

This will bring up the ADK UI:

Run a Sub Agent

Connect to the ADK and select “Agent2”:

The first interaction just verifies the connection to the agent:

what do you do?

I am Agent2, the primary agent for high-quality image generation. I coordinate prompt refinement and image synthesis via specialized sub-agents. Essentially, I help users create high-quality images based on their ideas by delegating the task to my sub-agent, 'sub_agent_2', which refines the prompt and then generates the image.
Enter fullscreen mode Exit fullscreen mode

Give the Agent this prompt:

Create an image of a cat.
Enter fullscreen mode Exit fullscreen mode

The sub agent will then generate the cat image:

Visual Build an Agent

To use the ADK visual builder- select the pencil Icon next to Agent 2. You can drill down into the Agent design:

What did I just do?

The initial steps validate that the Python code and the ADK environment is functional and that the Agent code will run correctly. The next step is to deploy this environment to the Azure App Service.

Deploying to Azure App Service

To start the deployment:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ make deploy
Building the Docker image...
docker build -t adk-image .
Enter fullscreen mode Exit fullscreen mode

You can validate the final result by checking the messages:

Deploying to Azure App Service...
Updating Web App adk-app-penguin with image adkacrpenguinv2.azurecr.io/adk-image:latest...

Deployment complete. Visit: http://adk-app-penguin.azurewebsites.net
xbill@penguin:~/gemini-cli-azure/adkui-appservice$ 
Enter fullscreen mode Exit fullscreen mode

You can then get the endpoint:

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ make endpoint
--- Azure Endpoint ---
adk-app-penguin.azurewebsites.net

xbill@penguin:~/gemini-cli-azure/adkui-appservice$ make status
Checking Azure App Service status for adk-app-penguin...
Name State Host
--------------- ------- ---------------------------------
adk-app-penguin Running adk-app-penguin.azurewebsites.net
Enter fullscreen mode Exit fullscreen mode

The service will be visible in the Azure console:

Running the ADK Web Interface

Start a connection to the Azure Deployed ADK:

http://adk-app-penguin.azurewebsites.net
Enter fullscreen mode Exit fullscreen mode

This will bring up the ADK UI.

Select the sub-agent “Agent1”:

Run a Second Sub Agent

Connect to the ADK and select “Agent2”. Give the Agent this prompt:

Bit the Raccoon is a popular, unofficial community mascot for Microsoft Azure, specifically representing the Cloud Advocate team and open-source initiatives. Created by Ashley McNamara, Bit is often depicted in tech-related, helpful scenarios to make complex cloud concepts more accessible and approachable to developers. X X +2 Role: Known as the "Developer Advocate Mascot," Bit is often used in presentations and content to represent the "open" aspect of Azure. Context: While Azure has an official anime-style mascot in Japan (Claudia Madobe), Bit is beloved within the broader developer community as a fun, tech-savvy character. Appearance: Bit is usually styled as an adorable, helpful raccoon, sometimes accompanied by other community mascots like "Brady the Ninja Sloth." GitHub GitHub Bit is a favorite for stickers and frequently appears on social media to highlight new Azure features. create an image of bit

Enter fullscreen mode Exit fullscreen mode

The sub agent will then generate the Bit image:

Log: Conceptualizing Bit the Raccoon's friendly, tech-savvy essence for a digital illustration.

Detailed Analysis:

Style & Medium: Modern digital illustration, characterized by clean lines, vibrant colors, and a slightly stylized, Pixar-esque rendering of the character. The aesthetic should be inviting and approachable, suitable for a beloved mascot, with an emphasis on soft textures and intelligent expressiveness.
Camera & Lighting: A medium close-up shot, capturing Bit from the chest up, at a slightly low angle to convey a sense of helpful presence. The lighting will be soft, warm, and volumetric, with a gentle key light illuminating Bit's face and chest, emphasizing the texture of the fur and the sparkle in the eyes. A subtle, cool-toned rim light will separate Bit from the background, creating depth. The overall lighting should evoke a sense of clarity and friendly illumination.
Subject & Composition: Bit the Raccoon is the central figure, positioned slightly off-center for dynamic balance, looking directly at the viewer with an intelligent, engaging, and friendly expression. Bit's paws are held up in a welcoming gesture, as if presenting or explaining something. The fur is rendered with meticulous detail, showing its softness and distinct raccoon markings. In the background, subtly blurred to maintain focus on Bit, are elements of a futuristic, clean server room or a glowing holographic interface, using a palette of blues, purples, and subtle teals to hint at the Azure cloud environment without distracting. The composition should convey competence, accessibility, and a warm, inviting atmosphere.
The Final Optimized Prompt: A captivating digital illustration of Bit the Raccoon, rendered in a modern, stylized aesthetic reminiscent of Pixar character art. Bit, a friendly and intelligent raccoon, stands in a medium close-up shot, looking directly at the viewer with an inviting, helpful expression. Its soft, detailed fur displays classic raccoon markings, and its small, expressive paws are gently held up in a welcoming, explanatory gesture. The scene is bathed in soft, warm volumetric lighting, with a subtle rim light defining Bit against a subtly blurred background. The backdrop features futuristic, clean server racks with soft blue and purple glows, hinting at a sophisticated cloud environment, creating a sense of clarity and approachable technology. The overall mood is one of friendly expertise and innovation.Visual Build an Agent
Enter fullscreen mode Exit fullscreen mode

The Image will be generated:

Say Hello to Bit!

Summary

The Agent Development Kit was used to visually define a basic agent and added the Google Search Tool. This Agent was tested locally with the CLI and then with the ADK web tool. Then, the Agent was packaged and deployed to the Azure App Service. Several sample ADK agents were run directly from the App Service deployment in Azure. This approach validates that cross cloud tools can be used — even with more complex agents.

Enter fullscreen mode Exit fullscreen mode

Top comments (0)