# Plexum-gemini-provider Plexum ProviderPlugin that wraps the local `gemini` CLI binary (Google Gemini CLI) — same CLI-driven pattern as `Plexum-anthropic-provider`'s contractor mode. Each Plexum turn forks one `gemini -p` subprocess in the agent's workspace. Reference: `openclaw/extensions/google/cli-backend.ts`. ## Status **v0.1**: subprocess-per-turn, JSON output parsing, per-workspace session continuity via `--resume`. Models: `gemini` (CLI default), `gemini-pro`, `gemini-flash`, `gemini-flash-lite`. ## Install ```bash cd ~/Plexum-gemini-provider ./scripts/install.sh ``` Then: 1. **Allow** in `~/.plexum/plexum.json`: ```json {"plugins": {"allow": ["plexum-gemini-provider"]}} ``` 2. **Bind an agent**: ```bash plexum agent-add --model gemini-flash my-agent ``` 3. **Restart** + talk: ```bash systemctl --user restart plexum plexum say --agent-id my-agent --session-id $(plexum new-session --agent-id my-agent) "hello" ``` ## Auth There is no API key in this plugin's config. The `gemini` CLI handles auth itself via `~/.gemini/` (OAuth or `GEMINI_API_KEY`). Run `gemini auth login` (or set env) once, then this plugin just shells out. ## How it works For each Plexum turn the plugin forks: ``` gemini --skip-trust --output-format json [--model ] [--resume ] -p "" ``` with `cwd = `. The CLI exits with a single JSON blob: ```json { "session_id": "uuid", "response": "...", "stats": {"models": {...}} } ``` We capture `session_id` into `/.plexum-gemini-session` so the next turn passes `--resume` and Gemini sees the full prior context. The `response` text is emitted as one `text_delta` followed by `message_end`. ## Models | Plexum model id | CLI invocation | |---|---| | `gemini` | no `--model` flag (CLI default — currently `gemini-3-flash-preview`) | | `gemini-pro` | `--model pro` (CLI alias → `gemini-3.1-pro-preview`) | | `gemini-flash` | `--model flash` (CLI alias → `gemini-3.1-flash-preview`) | | `gemini-flash-lite` | `--model flash-lite` (CLI alias → `gemini-3.1-flash-lite-preview`) | Any other id is passed through as `--model ` verbatim so operators can pin a specific Gemini model the local CLI knows about. ## Config options | Field | Default | Notes | |---|---|---| | `binary` | `gemini` | executable name or absolute path | | `extra_args` | `[]` | appended after the standard flags, before `-p` | ## License Same as Plexum.