Copied to Clipboard
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:
gemini
Authentication
Several authentication options are available. To use an existing Code Assist licence — authenticate with a Google Account:
> /auth
▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ │
│ ? Get started │
│ │
│ How would you like to authenticate for this project? │
│ │
│ ●くろまる 1. Login with Google │
│ 2. Use Gemini API Key │
│ 3. Vertex AI │
│ │
│ (Use Enter to select) │
│ │
│ Terms of Services and Privacy Notice for Gemini CLI │
│ │
│ https://geminicli.com/docs/resources/tos-privacy/ │
│ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
Then set the GOOGLE_CLOUD_PROJECT to a valid project setup on the Google Cloud console:
~ $ export GOOGLE_CLOUD_PROJECT=comglitn
~ $
Other options include Google Cloud API Key that can be generated directly from the Google Cloud Console.
Using Gemini CLI on Azure Cloud Shell
Once installed- Gemini CLI has direct access to the Cloud Shell environment:
Logged in with Google: xbill@glitnir.com /auth
Plan: Gemini Code Assist Standard
✦ This Azure VM is a Standard_D2s_v3 instance located in the East US region.
Hardware & System Summary
- Operating System: Debian 12 (bookworm)
- CPU: 2 vCPUs (Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz)
- Memory: 8 GiB RAM
- Storage: 32 GB OS disk (/dev/sda1), with approximately 22 GB free space.
- Architecture: x86_64
and Azure operations can be performed directly from Gemini CLI:
> list azure vms using the az command
✦ The Azure CLI (v2.84.0) is configured with the following account details:
Azure Account Information
- User: xbill@glitnir.com
- Environment: AzureCloud
- State: Enabled
Regional Context
- Location: The VM itself is located in eastus.
- Top Available Regions: eastus, westus2, australiaeast, southeastasia, northeurope, swedencentral, westeurope, uksouth.
Technical Profile
- VM Size: Standard_D2s_v3 (2 vCPU, 8 GB RAM)
- OS Platform: Debian 12 (bookworm) on a 6.1.x cloud kernel.
Installing Google Cloud Tools
To simplify working with Google Cloud — install the Google Cloud Tools:
https://docs.cloud.google.com/sdk/docs/install-sdk
Once the installation is completed — you can verify the setup:
azureuser@azure-new:~$ gcloud auth list
Credentialed Accounts
ACTIVE ACCOUNT
* xbill@glitnir.com
To set the active account, run:
$ gcloud config set account `ACCOUNT`
azureuser@azure-new:~$ gcloud config list
[compute]
region = us-west2
zone = us-west2-a
[core]
account = xbill@glitnir.com
disable_usage_reporting = True
project = comglitn
Your active configuration is: [default]
azureuser@azure-new:~$
Installing Azure Customized GEMINI.md
A sample GitHub repo contains tools for working with Gemini CLI on Azure. This repo is available here:
git clone https://gitHub.com/xbill9/gemini-cli-azure
A sample GEMINI.md customized for the Azure environment is provided in the repo:
This is a multi linux git repo hosted at:
github.com/xbill9/gemini-cli-azure
You are a cross platform developer working with
Microsoft Azure and Google Cloud
You can use the Azure CLI :
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli
https://learn.microsoft.com/en-us/cli/azure/
https://learn.microsoft.com/en-us/cli/azure/reference
https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?view=azure-cli-latest&pivots=apt
## Azure CLI Tools
You can use the Azure CLI to manage resources across Azure Storage, Virtual Machines, and other services.
- **List Resource Groups** : `az group list -o table`
- **List Storage Accounts** : `az storage account list -o table`
- **List Virtual Machines** : `az vm list -d -o table`
### Azure Update Script
- `azure-update`: This script is specifically for Azure Linux environments. It updates all packages and ensures necessary libraries are installed.
## Automation Scripts
This repository contains scripts for updating various Linux environments and tools:
- `linux-update`: Detects OS (Debian/Ubuntu/Azure Linux) and runs the corresponding update scripts.
- `azure-update`: Updates Azure Linux packages and installs necessary dependencies.
- `debian-update`: Updates Debian/Ubuntu packages and installs `git`.
- `gemini-update`: Updates the `@google/gemini-cli` via npm and checks versions of Node.js and Gemini.
- `nvm-update`: Installs NVM (Node Version Manager) and Node.js version 25.
Perform Cross Cloud Operations
Now that all the building blocks are in place- the Azure VM has all the tools to have visibility into both clouds. Gemini CLI can be used directly with the gcloud utility running on Azure:
azureuser@azure-new:~/gemini-cli-azure$ gemini
▝▜▄ Gemini CLI v0.33.0
▝▜▄
▗▟▀ Logged in with Google /auth
▝▀ Gemini Code Assist Standard /upgrade
Tips for getting started:
1. /help for more information
2. Ask coding questions, edit code or run commands
3. Be specific for the best results
> summarize my google cloud project with the gcloud tools
✦ I will begin by checking your current Google Cloud configuration and project details using the gcloud CLI.
✦ Based on the gcloud tools, here is a summary of your Google Cloud project:
Project Overview
* Project Name: glitnir
* Project ID: comglitn
* Project Number: 1056842563084
* Account: xbill@glitnir.com
* Status: Active (Created Aug 2014)
* Labels: firebase: enabled, generative-language: enabled
Using the ADK on Azure Cloud Shell
Now that the base environment has been enabled- a sample ADK project is cloned and initial setup is done:
git clone https://github.com/adk-hello-world
source set_env.sh
gcloud auth application-default login
Once the environment is set- call the Agent1_cli.sh script:
azureuser@azure-new:~/adk-hello-world$ source Agent1_cli.sh
--- Setting Google Cloud Environment Variables ---
Checking gcloud authentication status...
gcloud is authenticated.
Are you using a Gemini API Key? (y/N):
Configuring for Vertex AI...
Exported PROJECT_ID=comglitn
Exported PROJECT_NUMBER=1056842563084
Exported SERVICE_ACCOUNT_NAME=1056842563084-compute@developer.gserviceaccount.com
Exported GOOGLE_CLOUD_PROJECT=comglitn
Exported GOOGLE_GENAI_USE_VERTEXAI=TRUE
Exported GOOGLE_CLOUD_LOCATION=us-central1
Exported REPO_NAME=
Exported REGION=us-central1
Exported AGENT_PATH=/home/azureuser/adk-hello-world/src/agents/adk_hello_world
--- Environment setup complete ---
/home/azureuser/adk-hello-world/src/agents/Agent1
adk run .
Log setup complete: /tmp/agents_log/agent.20260312_180433.log
To access latest log: tail -F /tmp/agents_log/agent.latest.log
/home/azureuser/.pyenv/versions/3.13.12/lib/python3.13/site-packages/google/adk/cli/utils/agent_loader.py:248: 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/azureuser/.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/azureuser/.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/azureuser/.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 Princeton, NJ?
[Agent1]: The weather in Princeton, NJ, is currently experiencing light rain with temperatures around 38-41°F (3-5°C). It feels like 30°F (-1°C) with humidity around 85%, and there's a 59% chance of rain.
For the rest of today, Thursday, March 12, 2026:
Expect light rain, potentially mixing with snow in the afternoon. Highs reached around 58-60°F (14-16°C) earlier, but temperatures are expected to fall sharply to near 35-40°F (2-4°C) by the afternoon, with winds from the northwest at 10 to 20 mph. The chance of precipitation remains high, between 70% and 90%.
Tonight, Thursday, March 12, 2026:
Forecasts vary, but generally predict partly cloudy to clear skies, with a low around 26°F (-3°C) and winds from the west-northwest at 5 to 10 mph. There is a slight chance of snow (5%).
[user]:
Running the ADK Web Interface
First ensure that port 8000 is open to external traffic on the VM:
azureuser@azure-new:~/adk-hello-world$ gemini
▝▜▄ Gemini CLI v0.33.0
▝▜▄
▗▟▀ Logged in with Google /auth
▝▀ Gemini Code Assist Standard /upgrade
Tips for getting started:
1. /help for more information
2. Ask coding questions, edit code or run commands
3. Be specific for the best results
> check that port 8000 is open for internet traffic
✦ I will list the inbound rules for the azure-newNSG Network Security Group to see if port 8000 is open for internet traffic.
╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
│ ✓ Shell az network nsg rule list -g VM --nsg-name azure-newNSG -o table [current working directory /home/azureuser/adk-hello-world] ... │
│ │
│ Name ResourceGroup Priority SourcePortRanges SourceAddressPrefixes SourceASG Access Protocol │
│ Direction DestinationPortRanges DestinationAddressPrefixes DestinationASG │
│ ----------------- --------------- ---------- ------------------ ----------------------- ----------- -------- ---------- │
│ ----------- ----------------------- ---------------------------- ---------------- │
│ default-allow-ssh VM 1000 * * None Allow Tcp │
│ Inbound 22 * None │
│ allow-port-8000 VM 1010 * * None Allow Tcp │
│ Inbound 8000 * None │
╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
✦ Port 8000 is open for internet traffic in the Azure Network Security Group (azure-newNSG).
- Infrastructure: An inbound rule (allow-port-8000) allows all TCP traffic from any source to port 8000.
- Local State: Currently, no process is listening on port 8000, and there are no OS-level firewall restrictions (ufw or iptables) blocking
it.
Start the Web ADK
Once the port has been opened- start the ADK Web Interface on host 0.0.0.0:
cd ~/adk-hello-world/src/agents
adk web --host 0.0.0.0
INFO: Started server process [3273]
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)
Verify the ADK Web interface
Check the external IP address of the Azure VM:
> what is the external IP address of the VM?
✦ The external IP address of the VM is 20.124.121.35.
Then navigate to the URL:
http://20.124.121.35:8000/dev-ui/
The web interface will start:
Summary
Gemini CLI was downloaded and tested from an Azure Linux VM. This is a complete fully working version of Gemini CLI with all the standard features like extensions, agent skills, and a familiar interface. Then, Gemini CLI was used to perform Azure native operations using the built-in tooling. Finally the Google Cloud Tools were downloaded and installed. These tools were used to configure and run the ADK. This is a first step to enabling cross platform projects with both Google Cloud and Azure.