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-1453GitHub issuePublicDecided· Out of scope

Agents panel never appears for active pi users on non-Anthropic/non-Codex backends (e.g. OpenRouter)

Reported by NordSee21 · filed Aug 25, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 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

Agents panel never appears for active pi users on non-Anthropic/non-Codex backends (e.g. OpenRouter)revision 1 · captured 2026-09-28 21:24 UTC via poll

System details

  • Omarchy: 4.0.1-1
  • Kernel: 7.1.9-arch1-2 (Arch x86_64)
  • Compositor/shell: Hyprland + omarchy-shell (Quickshell)
  • Default agent: pi (~/.config/omarchy/defaults/agent contains pi)

Summary

The omarchy.agents bar widget and panel never appear on a machine where pi — one of the agents Omarchy offers as a default in setup — is actively used, if pi is configured with a backend other than Anthropic or openai-codex (e.g., OpenRouter). Two days of heavy daily use produce no icon, no panel, and no hint anything is wrong.

What happens vs. what's expected

  • Expected: Since both shipped collectors deliberately scan ~/.pi/agent/sessions/, using pi should eventually surface usage in the agents panel.
  • Actual: All usage records stay at zero for any pi session not routed through the two recognized backends, so the widget self-hides permanently.

Steps to reproduce

  1. Install Omarchy 4.0.1-1; set default agent to pi (omarchy-default-agent pi).
  2. Configure pi with a non-Anthropic, non-Codex backend (in my case OpenRouter via the openai-completions API) and use it daily for 2+ days (334 assistant messages across multiple sessions).
  3. Observe: no agents icon in the bar, no panel. Every record in ~/.local/state/omarchy/agents/usage/ reports zero prompts/sessions/active days.

Root cause analysis

The collectors scan pi's session directory on purpose but filter strictly by backend:

  • omarchy-agent-usage-claude, scan_pi_usage():
  provider = str(message.get("provider") or "")
  if provider != "anthropic":
      continue
  • omarchy-agent-usage-codex, scan_pi_sessions(): only counts entries where provider is openai-codex or api starts with openai-codex.

Meanwhile pi writes provider, model, and token usage on every assistant message regardless of which backend served it — so the data needed to count usage from any provider is already present in the JSONL.

Because every record ends up empty, Main.qml's enabledProviders list is empty and the widget collapses out of the bar by design ("with none, the module leaves the bar entirely"). That self-hiding behavior is reasonable when collectors are complete, but here it means an active agent user gets silence instead of a panel — and no diagnostic path to figure out why.

Suggested fix

Either:

  1. A generic pi collector that records usage from pi session transcripts regardless of provider (one "pi" record aggregating all backends), or
  2. Per-provider records derived from the same transcripts, matching how claude/codex tabs work today.

Option 1 seems simplest since the parsing logic (usage extraction by assistant message) already exists in scan_pi_usage() — it just needs the provider filter removed or widened.

View raw text
### System details

- **Omarchy:** 4.0.1-1
- **Kernel:** 7.1.9-arch1-2 (Arch x86_64)
- **Compositor/shell:** Hyprland + omarchy-shell (Quickshell)
- **Default agent:** pi (`~/.config/omarchy/defaults/agent` contains `pi`)

### Summary

The `omarchy.agents` bar widget and panel never appear on a machine where pi — one of the agents Omarchy offers as a default in setup — is actively used, if pi is configured with a backend other than Anthropic or openai-codex (e.g., OpenRouter). Two days of heavy daily use produce no icon, no panel, and no hint anything is wrong.

### What happens vs. what's expected

- **Expected:** Since both shipped collectors deliberately scan `~/.pi/agent/sessions/`, using pi should eventually surface usage in the agents panel.
- **Actual:** All usage records stay at zero for any pi session not routed through the two recognized backends, so the widget self-hides permanently.

### Steps to reproduce

1. Install Omarchy 4.0.1-1; set default agent to pi (`omarchy-default-agent pi`).
2. Configure pi with a non-Anthropic, non-Codex backend (in my case OpenRouter via the `openai-completions` API) and use it daily for 2+ days (334 assistant messages across multiple sessions).
3. Observe: no agents icon in the bar, no panel. Every record in `~/.local/state/omarchy/agents/usage/` reports zero prompts/sessions/active days.

### Root cause analysis

The collectors scan pi's session directory on purpose but filter strictly by backend:

- `omarchy-agent-usage-claude`, `scan_pi_usage()`:
  ```python
  provider = str(message.get("provider") or "")
  if provider != "anthropic":
      continue
  ```
- `omarchy-agent-usage-codex`, `scan_pi_sessions()`: only counts entries where provider is `openai-codex` or api starts with `openai-codex`.

Meanwhile pi writes `provider`, `model`, and token `usage` on every assistant message regardless of which backend served it — so the data needed to count usage from *any* provider is already present in the JSONL.

Because every record ends up empty, `Main.qml`'s `enabledProviders` list is empty and the widget collapses out of the bar by design ("with none, the module leaves the bar entirely"). That self-hiding behavior is reasonable when collectors are complete, but here it means an active agent user gets silence instead of a panel — and no diagnostic path to figure out why.

### Suggested fix

Either:

1. A generic pi collector that records usage from pi session transcripts regardless of provider (one "pi" record aggregating all backends), or
2. Per-provider records derived from the same transcripts, matching how claude/codex tabs work today.

Option 1 seems simplest since the parsing logic (usage extraction by assistant message) already exists in `scan_pi_usage()` — it just needs the provider filter removed or widened.

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 09:08 UTC