#750 ### Telemetry Settings Refactors telemetry configuration to use a nested `telemetry` object in `settings.json`, for example: ```json { "telemetry": { "enabled": true, "target": "gcp" "log-prompts": "true" }, "sandbox": false } ``` The above includes - Centralized telemetry settings under a `telemetry` object in `settings.json`. - CLI flags for the `gemini` command to override all telemetry sub-settings: - `--telemetry` / `--no-telemetry` - `--telemetry-target <local|gcp>` - `--telemetry-otlp-endpoint <URL>` - `--telemetry-log-prompts` / `--no-telemetry-log-prompts` - Updates `packages/cli/src/config/config.ts` and `packages/core/src/config/config.ts` to read from the new settings structure and respect the new CLI flags. - Modifies `scripts/handle-telemetry.js`, `scripts/local_telemetry.js`, and `scripts/telemetry_utils.js` to align with the new settings structure. - Updates `docs/core/telemetry.md` to reflect the new settings structure, CLI flags, and order of precedence. - Renames `logUserPromptsEnabled` to `logPrompts` for brevity. ### `npm run telemetry` Add a new `npm run telemetry` command that uses `scripts/telemetry.js`, automates the entire process of setting up a local and GCP telemetry pipelines, including configuring the necessary settings in the `.gemini/settings.json` workspace file and installing required binaries (e.g. `otelcol-contrib`). --- ```shell $ npm run telemetry -- --target=gcp > gemini-cli@0.1.0 telemetry > node scripts/telemetry.js --target=gcp ⚙️ Using command-line target: gcp 🚀 Running telemetry script for target: gcp. ✨ Starting Local Telemetry Exporter for Google Cloud ✨ ⚙️ Enabled telemetry in workspace settings. 🔧 Set telemetry OTLP endpoint to http://localhost:4317. 🎯 Set telemetry target to gcp. ✅ Workspace settings updated. ✅ Using Google Cloud Project ID: foo-bar 🔑 Please ensure you are authenticated with Google Cloud: - Run `gcloud auth application-default login` OR ensure `GOOGLE_APPLICATION_CREDENTIALS` environment variable points to a valid service account key. - The account needs "Cloud Trace Agent", "Monitoring Metric Writer", and "Logs Writer" roles. ✅ otelcol-contrib already exists at /Users/jerop/github/gemini-cli/.gemini/otel/bin/otelcol-contrib 🧹 Cleaning up old processes and logs... ✅ Deleted old GCP collector log. 📄 Wrote OTEL collector config to /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.yaml 🚀 Starting OTEL collector for GCP... Logs: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log ⏳ Waiting for OTEL collector to start (PID: 17013)... ✅ OTEL collector started successfully on port 4317. ✨ Local OTEL collector for GCP is running. 🚀 To send telemetry, run the Gemini CLI in a separate terminal window. 📄 Collector logs are being written to: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log 📊 View your telemetry data in Google Cloud Console: - Logs: https://console.cloud.google.com/logs/query;query=logName%3D%22projects%2Ffoo-bar%2Flogs%2Fgemini_cli%22?project=foo-bar - Metrics: https://console.cloud.google.com/monitoring/metrics-explorer?project=foo-bar - Traces: https://console.cloud.google.com/traces/list?project=foo-bar Press Ctrl+C to exit. ^C 👋 Shutting down... ⚙️ Disabled telemetry in workspace settings. 🔧 Cleared telemetry OTLP endpoint. 🎯 Cleared telemetry target. ✅ Workspace settings updated. 🛑 Stopping otelcol-contrib (PID: 17013)... ✅ otelcol-contrib stopped. ``` |
||
---|---|---|
.gcp | ||
.gemini | ||
.github | ||
.vscode | ||
docs | ||
eslint-rules | ||
packages | ||
scripts | ||
.gitignore | ||
.npmrc | ||
.prettierrc.json | ||
CONTRIBUTING.md | ||
Dockerfile | ||
GEMINI.md | ||
LICENSE | ||
Makefile | ||
README.md | ||
esbuild.config.js | ||
eslint.config.js | ||
learnings.md | ||
package-lock.json | ||
package.json | ||
tsconfig.json |
README.md
Gemini CLI
This repository contains the Gemini CLI tool.
Quickstart
- Install Node 20+.
- Get an API key from Google AI Studio.
- Set the API key in your shell using the following command, replacing
YOUR_API_KEY
with the API key you obtained:export GEMINI_API_KEY="YOUR_API_KEY"
. - Run the Gemini CLI from your shell using the following command:
npx https://github.com/google-gemini/gemini-cli#early-access
- Enjoy.
Examples
Once the CLI is running, you can start interacting with Gemini from your shell. Try a simple query:
> How can I build a web app?
Or ask it to perform a task using its tools:
> List files in the current directory.
API Key Setup
The Gemini CLI requires you to authenticate with Google's AI services. You'll need to configure one of the following authentication methods:
-
Gemini Code Assist:
- To enable this mode you only need set the GEMINI_CODE_ASSIST environment variable to true.
- Enterprise users must also provide a GOOGLE_CLOUD_PROJECT environment variable specifying their Google Cloud project.
In the following methods, replace
GOOGLE_CLOUD_PROJECT
with the relevant values for your project:- You can temporarily set the environment variable in your current shell session using the following command:
export GEMINI_CODE_ASSIST="true" export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID" // Enterprise users only.
- For repeated use, you can add the environment variable to your
.env
file (located in the project directory or user home directory) or your shell's configuration file (like~/.bashrc
,~/.zshrc
, or~/.profile
). For example, the following command adds the environment variable to a~/.bashrc
file:echo 'export GEMINI_CODE_ASSIST="true"' >> ~/.bashrc echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc # Enterprise users only. source ~/.bashrc
- You can temporarily set the environment variable in your current shell session using the following command:
-
Gemini API key:
- Obtain your API key from Google AI Studio: https://aistudio.google.com/app/apikey
- Set the
GEMINI_API_KEY
environment variable. In the following methods, replaceYOUR_GEMINI_API_KEY
with the API key you obtained from Google AI Studio:- You can temporarily set the environment variable in your current shell session using the following command:
export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"
- For repeated use, you can add the environment variable to your
.env
file (located in the project directory or user home directory) or your shell's configuration file (like~/.bashrc
,~/.zshrc
, or~/.profile
). For example, the following command adds the environment variable to a~/.bashrc
file:echo 'export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"' >> ~/.bashrc source ~/.bashrc
- You can temporarily set the environment variable in your current shell session using the following command:
-
Google API Key (Vertex AI Express Mode):
- You can use a general Google Cloud API key if it has been enabled for the Gemini API or Vertex AI.
- Set the
GOOGLE_API_KEY
andGOOGLE_GENAI_USE_VERTEXAI
environment variables. In the following methods, replaceYOUR_GEMINI_API_KEY
with your Google Cloud API key:- You can temporarily set these environment variables in your current shell session using the following commands:
export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY" export GOOGLE_GENAI_USE_VERTEXAI=true
- For repeated use, you can add the environment variables to your
.env
file (located in the project directory or user home directory) or your shell's configuration file (like~/.bashrc
,~/.zshrc
, or~/.profile
). For example, the following commands adds the environment variables to a~/.bashrc
file:echo 'export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"' >> ~/.bashrc echo 'export GOOGLE_GENAI_USE_VERTEXAI=true' >> ~/.bashrc source ~/.bashrc
- You can temporarily set these environment variables in your current shell session using the following commands:
-
Vertex AI (Project and Location):
- Ensure you have a Google Cloud project and have enabled the Vertex AI API.
- Set up Application Default Credentials (ADC), using the following command:
For more information, see Set up Application Default Credentials for Google Cloud.gcloud auth application-default login
- Set the
GOOGLE_CLOUD_PROJECT
,GOOGLE_CLOUD_LOCATION
, andGOOGLE_GENAI_USE_VERTEXAI
environment variables. In the following methods, replaceYOUR_PROJECT_ID
andYOUR_PROJECT_LOCATION
with the relevant values for your project:- You can temporarily set these environment variables in your current shell session using the following commands:
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID" export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION" # e.g., us-central1 export GOOGLE_GENAI_USE_VERTEXAI=true
- For repeated use, you can add the environment variables to your
.env
file (located in the project directory or user home directory) or your shell's configuration file (like~/.bashrc
,~/.zshrc
, or~/.profile
). For example, the following commands adds the environment variables to a~/.bashrc
file:echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc echo 'export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"' >> ~/.bashrc echo 'export GOOGLE_GENAI_USE_VERTEXAI=true' >> ~/.bashrc source ~/.bashrc
- You can temporarily set these environment variables in your current shell session using the following commands:
Next Steps
- Learn how to contribute to or build from the source.
- Explore the available CLI Commands.
- If you encounter any issues, review the Troubleshooting guide.
- For more comprehensive documentation, see the full documentation.
Gemini APIs
This project leverages the Gemini APIs to provide AI capabilities. For details on the terms of service governing the Gemini API, please refer to the Gemini API Terms of Service.