Skip to content

Collector: Gemini CLI #13

@willwashburn

Description

@willwashburn

Target

Google Gemini CLI (~/.gemini/) — official Google agent CLI.

Data

  • Path: ~/.gemini/ session JSONL files
  • Format: JSONL, SessionEnd hook written into settings.json
  • Auth: Passive read + optional SessionEnd hook. Since we control spawning (relay/workforce), passive reader is probably sufficient.

References

  • TokenTracker: src/lib/rollout.js:299 (parseGeminiIncremental), src/lib/gemini-config.js (hook install)
  • TokenArena: cli/src/parsers/gemini-cli.ts
  • TokenTracker's usage-limits.js:319-416: Gemini per-model remaining-token budget endpoint (for burn limits: quota-window tracking across providers #5 quota tracking)

Coverage

  • Usage: per-session totals
  • Cache: yes (cache_read only; no separate cache_creation tier like Claude)
  • Tool calls: yes
  • Reasoning: depends on Gemini model (Gemini 2.5 Pro has reasoning; burn's Usage.reasoning covers it)

Gotchas

  • GEMINI_HOME env var can override ~/.gemini/ — respect it.
  • Gemini's model IDs include variants (gemini-2.5-pro, gemini-2.5-flash, etc.) — verify models.dev coverage. Lazyagent's hardcoded pricing only has gemini-2.5-pro (see their pricing.go); we need broader coverage.

Work

  • Implement packages/reader/src/gemini.ts emitting TurnRecord with source: 'gemini-cli'.
  • Fixtures under tests/fixtures/gemini-cli/.
  • Wire into ingest walker.
  • Decide on burn gemini spawn wrapper — check for session-id flag support.
  • Add source: 'gemini-cli' to the TurnRecord.source union in packages/reader/src/types.ts.

Priority

Medium-high. Google's ecosystem matters for cross-harness comparisons, and it's a realistic next target after Codex. #5 (burn limits) also wants Gemini quota data.

Metadata

Metadata

Assignees

No one assigned

    Labels

    collectorData source / session-log reader for a specific agent

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions