Go to file
Tommaso Sciortino 0abd2a644e
Improve Auth error messaging (#1358)
2025-06-24 01:37:41 +00:00
.gcp refactor: rename gemini-code to gemini-cli (#822) 2025-06-07 14:27:22 -07:00
.gemini toggle off (#809) 2025-06-07 00:06:15 -07:00
.github Fixup pull_request_template.md (#1166) 2025-06-18 00:34:03 +00:00
.vscode Scotdensmore/first run auth fix (#1322) 2025-06-22 22:52:25 -07:00
docs Improve Auth error messaging (#1358) 2025-06-24 01:37:41 +00:00
eslint-rules feat: add custom eslint rule for cross-package imports (#77) 2025-04-21 08:02:11 -07:00
integration-tests test: add integration test for simple mcp server (#1199) 2025-06-18 15:53:58 -07:00
packages Improve Auth error messaging (#1358) 2025-06-24 01:37:41 +00:00
scripts docs: update telemetry documentation and scripts (#1318) 2025-06-23 06:10:26 +01:00
.gitattributes Adding .gitattributes (#1303) 2025-06-23 06:58:41 +00:00
.gitignore Preflight and integration npx (#1096) 2025-06-16 15:27:29 +00:00
.npmrc refactor: rename gemini-code to gemini-cli (#822) 2025-06-07 14:27:22 -07:00
.prettierrc.json Run `npm run format` 2025-04-17 15:29:34 -07:00
CONTRIBUTING.md Updating CONTRIBUTING.md (#1144) 2025-06-17 13:16:28 -07:00
Dockerfile fix version release for Dockerfile build (#1080) 2025-06-16 06:13:39 +00:00
GEMINI.md Preflight and integration npx (#1096) 2025-06-16 15:27:29 +00:00
LICENSE add LICENSE (#25) 2025-04-18 10:30:07 -07:00
Makefile Remove #early-access from npx references (#1262) 2025-06-20 20:32:27 +00:00
README.md Updated docs and /stats command to support lack of token caching support for OAuth users (b/426943001) (#1307) 2025-06-23 21:55:24 +00:00
esbuild.config.js fix version release for Dockerfile build (#1080) 2025-06-16 06:13:39 +00:00
eslint.config.js Preflight and integration npx (#1096) 2025-06-16 15:27:29 +00:00
package-lock.json Use concurrently to run start script with GCP telemetry (#1329) 2025-06-23 22:01:22 +00:00
package.json Use concurrently to run start script with GCP telemetry (#1329) 2025-06-23 22:01:22 +00:00
tsconfig.json Fix: Prevent hang in large directories by using BFS for getFolderStru… (#470) 2025-05-22 10:47:21 -07:00

README.md

Gemini CLI

Gemini CLI CI

This repository contains the Gemini CLI tool.

Quickstart

  1. Prerequisites: Ensure you have Node.js version 18 or higher installed.

  2. Run the CLI: Execute the following command in your terminal:

    npx https://github.com/google-gemini/gemini-cli
    
  3. Authenticate: When prompted, sign in with your Google account. This will grant you up to 60 model requests per minute and 1,000 model requests per day using Gemini 2.5 Pro.

You are now ready to use the Gemini CLI!

For advanced use or increased limits:

If you need to use a specific model or require a higher request capacity, you can use an API key:

  1. Generate a key from Google AI Studio.

  2. Set it as an environment variable in your terminal. Replace YOUR_API_KEY with your generated key.

    export GEMINI_API_KEY="YOUR_API_KEY"
    

For other authentication methods, see the authentication guide.

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:

  1. Gemini Code Assist:

    • To enable this mode you only need set the GEMINI_CODE_ASSIST environment variable to true.
      • You can temporarily set the environment variable in your current shell session using the following command:
        export GEMINI_CODE_ASSIST="true"
        
      • 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
        source ~/.bashrc
        
    • There are two types of Google Accounts you can use with Gemini CLI:
      • Personal Google Account: This is the standard, free account you use for services like Gmail, Google Photos, and Google Drive for personal use (e.g. your-name@gmail.com).
      • Google Workspace Account: This is a paid service for businesses and organizations that provides a suite of productivity tools, including a custom email domain (e.g. your-name@your-company.com), enhanced security features, and administrative controls. These accounts are often managed by an employer or school.
        • Google Workspace Account must configure a Google Cloud Project Id to use. You can temporarily set the environment variable in your current shell session using the following command:
        export GOOGLE_CLOUD_PROJECT_ID="YOUR_PROJECT_ID"
        
        • 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 GOOGLE_CLOUD_PROJECT_ID="YOUR_PROJECT_ID"' >> ~/.bashrc
        source ~/.bashrc
        
    • During start up, Gemini CLI will direct you to a webpage for authentication. Once authenticated, your credentials will be cached locally so the web login can be skipped on subsequent runs. Cached credentials last about 20 hours before expiring.
    • Note that the the web login must be done in a browser that can communicate with the machine Gemini Cli is being run from. (Specifically, the browser will be redirected to a localhost url that Gemini CLI will be listening on).
  2. 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, replace YOUR_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
        
  3. 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 and GOOGLE_GENAI_USE_VERTEXAI environment variables. In the following methods, replace YOUR_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
        
  4. 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:
      gcloud auth application-default login
      
      For more information, see Set up Application Default Credentials for Google Cloud.
    • Set the GOOGLE_CLOUD_PROJECT, GOOGLE_CLOUD_LOCATION, and GOOGLE_GENAI_USE_VERTEXAI environment variables. In the following methods, replace YOUR_PROJECT_ID and YOUR_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
        

Token Caching and Cost Optimization

Gemini CLI automatically optimizes API costs through token caching when using API key authentication (Gemini API key or Vertex AI). This feature reuses previous system instructions and context to reduce the number of tokens processed in subsequent requests.

Token caching is available for:

  • API key users (Gemini API key)
  • Vertex AI users (with project and location setup)

Token caching is not available for:

  • OAuth users (Google Personal/Enterprise accounts) - the Code Assist API does not support cached content creation at this time

You can view your token usage and cached token savings using the /stats command. When cached tokens are available, they will be displayed in the stats output.

Next steps

Explore a new codebase

Start by cding into an existing or newly-cloned repository and running gemini.

> Describe the main pieces of this system's architecture.
> What security mechanisms are in place?

Work with your existing code

> Implement a first draft for GitHub issue #123.
> Help me migrate this codebase to the latest version of Java. Start with a plan.

Automate your workflows

Use MCP servers to integrate your local system tools with your enterprise collaboration suite.

> Make me a slide deck showing the git history from the last 7 days, grouped by feature and team member.
> Make a full-screen web app for a wall display to show our most interacted-with GitHub issues.

Interact with your system

> Convert all the images in this directory to png, and rename them to use dates from the exif data.
> Organise my PDF invoices by month of expenditure.

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.