Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.

Inbox
ReportR-1082GitHub issuePublicDecided· Out of scope

Epic: Add Gemini and OpenCode monitoring to the Agents panel

Reported by acf1210 · filed Sep 1, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

At a glance

1 · What is claimed?
Only the report text below — no validator has restated it as checkable claims yet.
2 · What does it affect?
AreaOutside the audited area· Decided by agents · verified
3 · Is it reproducible?
No validation has been run yet.
4 · What remains unclear?
  • Not validated yet: no claims, no reproducer.
5 · What happens next?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Epic: Add Gemini and OpenCode monitoring to the Agents panelrevision 1 · captured 2026-09-28 21:24 UTC via poll

Context

The Agents panel (omarchy.agents, shell/plugins/agents/) shows AI coding subscription usage in the Omarchy bar — currently Claude Code, Codex, and Fireworks. Gemini CLI and OpenCode are already first-class agents elsewhere in Omarchy (omarchy-default-agent supports gemini and opencode as launchable agents), but neither has a usage collector, so neither appears in the panel even when actively used daily.

Current State

3 collectors exist (bin/omarchy-agent-usage-{claude,codex,fireworks}), declared in shell/plugins/agents/manifest.json:defaults.providers. The plugin's own README documents the extension point: "Adding an agent therefore never touches this plugin: ship a collector... and the panel gains a tab." No changes to Panel.qml/Main.qml/Agent.qml are required for a new agent.

Proposed Change

Add two independent collectors, each following the existing display-ready-JSON-record contract:

  1. omarchy-agent-usage-opencode — reads ~/.local/share/opencode/opencode.db (SQLite) directly.
  2. omarchy-agent-usage-gemini — reads Gemini CLI's local session logs, with a best-effort live quota probe against Google's Code Assist endpoint when Gemini CLI is Code-Assist-licensed.

Both register in shell/plugins/agents/manifest.json:defaults.providers and get an assets/<id>.svg (+ -light variant if needed).

Child Issues

#TitlePriorityEffortStatusDependencies
#9683Add OpenCode collector to the Agents panelHigh~4hReadyNone
#9684Add Gemini collector to the Agents panelHigh~6hReadyNone (independent; sequenced after the OpenCode child by convention, not by blocking)

Dependency Graph

Epic ─┬─> Child 1: OpenCode collector (independent, ships first)
      └─> Child 2: Gemini collector (independent, ships second)

Sequencing Rationale

OpenCode first: its data source (opencode.db) is proven and queryable today, with zero external API uncertainty — no balance API exists for OpenCode Zen (confirmed: anomalyco/opencode#10448 is an open feature request for exactly this, meaning it doesn't exist yet), so v1 ships stats-only with no blocking research. Gemini second: its local session log format (~/.gemini/tmp/<project-hash>/chats/logs.json) is undocumented and unverified against a real file, and its live-quota path depends on a Google-side Code Assist license that most personal accounts don't have (verified live: HTTP 403 SUBSCRIPTION_REQUIRED against cloudcode-pa.googleapis.com) — more research/validation risk, so it ships after the lower-risk child proves the pattern.

Definition of Done

  1. Both collectors merged and each individually shippable/revertable per its own child issue's acceptance criteria.
  2. On a machine with OpenCode installed and used, an "OpenCode" tab appears in the panel with real token/day/model data.
  3. On a machine with Gemini CLI installed and used, a "Gemini" tab appears in the panel with real token/day/model data, and a live limit bar when the account has a Code Assist license.
  4. Neither collector's addition changes Claude, Codex, or Fireworks behavior.

Out of Scope

  • Any change to Panel.qml, Main.qml, or Agent.qml.
  • Cost/spend display for OpenCode (data exists in opencode.db message rows' cost field but surfacing it is a UI change, out of scope here — flagged as a future issue).
  • Any agent besides Gemini and OpenCode (Grok, Copilot, Crush, Pi, omp — all already known to omarchy-default-agent but not requested here).
  • syncMode cross-device aggregation changes.

Related

  • Child: #9683 — Add OpenCode collector to the Agents panel
  • Child: #9684 — Add Gemini collector to the Agents panel
View raw text
## Context

The Agents panel (`omarchy.agents`, `shell/plugins/agents/`) shows AI coding subscription usage in the Omarchy bar — currently Claude Code, Codex, and Fireworks. Gemini CLI and OpenCode are already first-class agents elsewhere in Omarchy (`omarchy-default-agent` supports `gemini` and `opencode` as launchable agents), but neither has a usage collector, so neither appears in the panel even when actively used daily.

## Current State

3 collectors exist (`bin/omarchy-agent-usage-{claude,codex,fireworks}`), declared in `shell/plugins/agents/manifest.json:defaults.providers`. The plugin's own README documents the extension point: *"Adding an agent therefore never touches this plugin: ship a collector... and the panel gains a tab."* No changes to `Panel.qml`/`Main.qml`/`Agent.qml` are required for a new agent.

## Proposed Change

Add two independent collectors, each following the existing display-ready-JSON-record contract:

1. `omarchy-agent-usage-opencode` — reads `~/.local/share/opencode/opencode.db` (SQLite) directly.
2. `omarchy-agent-usage-gemini` — reads Gemini CLI's local session logs, with a best-effort live quota probe against Google's Code Assist endpoint when Gemini CLI is Code-Assist-licensed.

Both register in `shell/plugins/agents/manifest.json:defaults.providers` and get an `assets/<id>.svg` (+ `-light` variant if needed).

## Child Issues

| # | Title | Priority | Effort | Status | Dependencies |
|---|-------|----------|--------|--------|--------------|
| #9683 | Add OpenCode collector to the Agents panel | High | ~4h | Ready | None |
| #9684 | Add Gemini collector to the Agents panel | High | ~6h | Ready | None (independent; sequenced after the OpenCode child by convention, not by blocking) |

## Dependency Graph

```
Epic ─┬─> Child 1: OpenCode collector (independent, ships first)
      └─> Child 2: Gemini collector (independent, ships second)
```

## Sequencing Rationale

OpenCode first: its data source (`opencode.db`) is proven and queryable today, with zero external API uncertainty — no balance API exists for OpenCode Zen (confirmed: anomalyco/opencode#10448 is an open feature request for exactly this, meaning it doesn't exist yet), so v1 ships stats-only with no blocking research. Gemini second: its local session log format (`~/.gemini/tmp/<project-hash>/chats/logs.json`) is undocumented and unverified against a real file, and its live-quota path depends on a Google-side Code Assist license that most personal accounts don't have (verified live: HTTP 403 `SUBSCRIPTION_REQUIRED` against `cloudcode-pa.googleapis.com`) — more research/validation risk, so it ships after the lower-risk child proves the pattern.

## Definition of Done

1. Both collectors merged and each individually shippable/revertable per its own child issue's acceptance criteria.
2. On a machine with OpenCode installed and used, an "OpenCode" tab appears in the panel with real token/day/model data.
3. On a machine with Gemini CLI installed and used, a "Gemini" tab appears in the panel with real token/day/model data, and a live limit bar when the account has a Code Assist license.
4. Neither collector's addition changes Claude, Codex, or Fireworks behavior.

## Out of Scope

- Any change to `Panel.qml`, `Main.qml`, or `Agent.qml`.
- Cost/spend display for OpenCode (data exists in `opencode.db` message rows' `cost` field but surfacing it is a UI change, out of scope here — flagged as a future issue).
- Any agent besides Gemini and OpenCode (Grok, Copilot, Crush, Pi, omp — all already known to `omarchy-default-agent` but not requested here).
- `syncMode` cross-device aggregation changes.

## Related

- Child: #9683 — Add OpenCode collector to the Agents panel
- Child: #9684 — Add Gemini collector to the Agents panel

Validation

Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.

Linked

Not linked to any known issue, other report or change yet.

Decision

Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.

  • Out of scopeDecided by agents · verified · 2026-10-09 10:30 UTC