Metadata-Version: 2.4
Name: gemini-cli-agent
Version: 0.1.0
Summary: Python wrapper for Google's Gemini CLI agentic capabilities
Author-email: Saurav Chandra <mail@sauravchandra.com>
License: MIT
Project-URL: Homepage, https://github.com/sauravchandra/gemini-agent
Project-URL: Documentation, https://github.com/sauravchandra/gemini-agent#readme
Project-URL: Repository, https://github.com/sauravchandra/gemini-agent
Keywords: gemini,ai,agent,cli,mcp,google,llm
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Framework :: FastAPI
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: httpx>=0.26.0
Provides-Extra: server
Requires-Dist: fastapi>=0.109.0; extra == "server"
Requires-Dist: uvicorn[standard]>=0.27.0; extra == "server"
Requires-Dist: celery[redis]>=5.3.0; extra == "server"
Requires-Dist: redis>=5.0.0; extra == "server"
Requires-Dist: pydantic>=2.6.0; extra == "server"
Requires-Dist: pydantic-settings>=2.1.0; extra == "server"
Requires-Dist: python-multipart>=0.0.9; extra == "server"
Provides-Extra: core
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: httpx>=0.26.0; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: ruff>=0.1.0; extra == "dev"
Provides-Extra: all
Requires-Dist: gemini-cli-agent[server]; extra == "all"
Dynamic: license-file

# Gemini Agent

Python wrapper for [Google's Gemini CLI](https://github.com/google-gemini/gemini-cli) agentic capabilities.

## Installation

```bash
pip install gemini-agent            # client only
pip install gemini-agent[core]      # + direct CLI usage
pip install gemini-agent[server]    # + REST API service
```

**Requirements:** Node.js 18+ and `npm install -g @google/gemini-cli`

## Quick Start

```bash
export GEMINI_API_KEY=your_key
```

```python
from gemini_agent.core import GeminiAgent

agent = GeminiAgent()
result = agent.run("Create a Python CLI that lists files")

print(result.response)        # Gemini's response
print(result.modified_files)  # {"cli.py": "import os..."}
```

## Usage

### Direct CLI Wrapper

```python
from gemini_agent.core import GeminiAgent

agent = GeminiAgent(
    model="gemini-2.5-flash",  # optional
    sandbox=True,              # isolated execution
)

result = agent.run(
    "Build a REST API with FastAPI",
    mcp_servers=["filesystem"],
    files={"spec.txt": "..."},
)

# result.success, result.response, result.modified_files
```

### Python Client (Remote)

```python
from gemini_agent.client import GeminiAgentClient

async with GeminiAgentClient("http://localhost:8000") as client:
    result = await client.run("Create a hello world script")
    print(result.modified_files)
```

### REST API

```bash
podman-compose up -d --build

# Submit task
curl -X POST http://localhost:8000/tasks \
  -H "Content-Type: application/json" \
  -d '{"prompt": "Create a fibonacci function"}'

# Get result
curl http://localhost:8000/tasks/{task_id}
```

## API Endpoints

| Method | Endpoint | Description |
|--------|----------|-------------|
| `POST` | `/tasks` | Submit task |
| `GET` | `/tasks/{id}` | Get result |
| `DELETE` | `/tasks/{id}` | Cancel task |
| `GET` | `/health` | Health check |
| `GET` | `/mcp/servers` | List MCP servers |
| `POST` | `/mcp/servers` | Add MCP server |

## Configuration

| Variable | Description |
|----------|-------------|
| `GEMINI_API_KEY` | API key (required) |
| `GEMINI_MODEL` | Model override |
| `GEMINI_TIMEOUT` | Timeout in seconds (default: 300) |
| `REDIS_URL` | Redis URL for server mode |

## License

MIT
