Skip to main content

Overview

Gemini CLI is Google’s AI-powered coding assistant that provides intelligent code assistance, file operations, and tool execution. PraisonAI integrates with Gemini CLI to use it as an external agent.

Installation

# Install via npm
npm install -g @anthropic-ai/gemini-cli

# Or via Homebrew
brew install gemini-cli

Authentication

Set your Google API key:
export GOOGLE_API_KEY=your-api-key
# or
export GEMINI_API_KEY=your-api-key

Basic Usage with PraisonAI

# Use Gemini as external agent
praisonai "Analyze this codebase" --external-agent gemini

# With verbose output
praisonai "Refactor this module" --external-agent gemini --verbose

CLI Options Reference

Core Options

OptionDescriptionDefault
-d, --debugRun in debug modefalse
-m, --modelModel to use (e.g., gemini-2.5-pro, gemini-2.5-flash)-
-v, --versionShow version number-
-h, --helpShow help-

Prompt Options

OptionDescription
query (positional)Prompt as positional argument (recommended)
-p, --promptPrompt flag (deprecated, use positional)
-i, --prompt-interactiveExecute prompt and continue in interactive mode

Output Format

OptionDescription
-o, --output-formatOutput format: text, json, or stream-json

Approval Modes

OptionDescriptionDefault
-y, --yoloAuto-approve all actions (YOLO mode)false
--approval-modeSet approval modedefault
Approval Mode Values:
  • default - Prompt for approval on each action
  • auto_edit - Auto-approve edit tools only
  • yolo - Auto-approve all tools

Sandbox & Security

OptionDescription
-s, --sandboxRun in sandbox mode

Session Management

OptionDescription
-r, --resumeResume previous session (latest or index number)
--list-sessionsList available sessions for current project
--delete-sessionDelete a session by index number

Workspace & Directories

OptionDescription
--include-directoriesAdditional directories to include in workspace

Extensions & Tools

OptionDescription
-e, --extensionsList of extensions to use
-l, --list-extensionsList all available extensions
--allowed-toolsTools allowed to run without confirmation
--allowed-mcp-server-namesAllowed MCP server names

Accessibility

OptionDescription
--screen-readerEnable screen reader mode

Experimental

OptionDescription
--experimental-acpStart agent in ACP mode

Commands

CommandDescription
gemini [query..]Launch Gemini CLI (default)
gemini mcpManage MCP servers
gemini extensionsManage Gemini CLI extensions

Examples

Basic Query

# Simple question
praisonai "What files are in this directory?" --external-agent gemini

# Code analysis
praisonai "Analyze the code quality" --external-agent gemini

With Model Selection

# Use specific model
gemini -m gemini-2.5-pro "Explain this code"

# Use flash model for faster responses
gemini -m gemini-2.5-flash "Quick summary of changes"

YOLO Mode (Auto-Approve)

# Auto-approve all actions
gemini -y "Refactor and fix all linting errors"

# Or using approval-mode
gemini --approval-mode yolo "Update all dependencies"

JSON Output

# Get structured JSON output
gemini -o json "List all functions in main.py"

# Stream JSON for real-time updates
gemini -o stream-json "Analyze codebase"

Include Additional Directories

# Include multiple directories
gemini --include-directories ../shared,../common "Find all API endpoints"

Resume Session

# Resume latest session
gemini -r latest

# Resume specific session
gemini -r 5

# List available sessions
gemini --list-sessions

Python Integration

from praisonai.integrations import GeminiCLIIntegration

# Create integration
gemini = GeminiCLIIntegration(
    workspace="/path/to/project",
    output_format="json",
    model="gemini-2.5-pro"
)

# Execute a task
result = await gemini.execute("Analyze this codebase")
print(result)

# Execute with stats
result, stats = await gemini.execute_with_stats("Explain the architecture")
print(f"Result: {result}")
print(f"Stats: {stats}")

# Stream output
async for event in gemini.stream("Add error handling"):
    print(event)

Environment Variables

VariableDescription
GOOGLE_API_KEYGoogle API key (primary)
GEMINI_API_KEYAlternative API key variable

Output Formats

Text Format (Default)

gemini -o text "Say hello"
# Output: Hello! How can I help you today?

JSON Format

gemini -o json "Say hello"
{
  "session_id": "abc123",
  "response": "Hello! How can I help you today?",
  "stats": {
    "models": {
      "gemini-2.5-pro": {
        "tokens": {
          "prompt": 100,
          "candidates": 10,
          "total": 110
        }
      }
    }
  }
}

Stream JSON Format

gemini -o stream-json "Analyze code"
Real-time JSON events for each step of the analysis.