Gemini

RoboCo can run delivery agents on Google's Gemini CLI, authenticated by an OAuth login to your Google account rather than a metered API key — the same "subscription, not credits" posture as the Grok and Codex paths.

V1: delivery roles only

Gemini runs the developer/QA/documenter/PM delivery roles. It does not back the interactive Intake or Secretary chats — those stay on Anthropic even under the one-click Gemini mode, and an explicit per-agent pin to Gemini on either seat is refused at spawn. This is a deliberate V1 scope, not a bug.

Set it up once

Authenticate Gemini on the host with the official CLI's interactive login, then point RoboCo at the resulting directory:

bash
1gemini                          # once, on the host — interactive OAuth login, creates ~/.gemini

Then in .env:

bash
1ROBOCO_HOST_GEMINI_DIR=/home/youruser/.gemini   # the REAL host ~/.gemini to mount in2# ROBOCO_GEMINI_CLI_MODEL=gemini-2.5-pro        # or gemini-2.5-flash / gemini-2.5-flash-lite

Finally, on Settings → AI Providers, either click the Gemini mode button (whole fleet, delivery roles) or pin individual agents to a gemini-* model in Mix mode — see Choosing a provider for the full precedence ladder.

Each container refreshes its own copy — no orchestrator daemon needed

ROBOCO_HOST_GEMINI_DIR is mounted read-only at a staging path; the entrypoint copies it into a container-local, writable ~/.gemini so the CLI's own in-process token refresh can write back locally without ever touching your host credential. Google's refresh token, unlike Grok's or Codex's single-use one, is reusable — so each container can safely refresh its own copy independently. There is no orchestrator-side refresh loop for Gemini the way there is for Grok and Codex.

Guardrails via a policy file, not a CLI flag

The Gemini CLI has no CLI-flag equivalent to Grok's --disallowed-tools either. Tool scoping is expressed entirely through:

  • A rendered TOML Policy Engine file (~/.gemini/policies/roboco.toml) — deny-only rules keyed by tool name and command prefix.
  • settings.json entries: headless OAuth auth mode, a fleet-wide subagent ban (experimental.enableAgents=false), and disabled auto-memory configuration.
  • --approval-mode yolo for headless auto-approval, the same posture every provider's automated run needs.

Classified from the run's own structured result, not the transcript

Gemini has no dedicated CLI exit code for a quota/rate-limit hit, so RoboCo parses the run's own --output-format stream-json terminal error.type field and remaps it to the same park-and-resume signal Grok and Codex use — never the model's transcript prose. The CLI's own auth-failure exit code (41) passes straight through unmodified. Either condition parks the Gemini provider exactly like a Grok/Codex park, and the background probe-and-resume loop revives it once the condition clears.

Usage and cost still show up

Usage capture reads the run's own terminal result event for real per-model token counts — no session-file scraping — and prices each of the three GA models (gemini-2.5-pro / -flash / -flash-lite) at its own rate before folding into the same usage-tracking shape every other provider feeds. Gemini traffic lands on the same usage dashboard as Claude, Grok, and Codex.

Next

llms.txt