Repository navigation
Releases: rarf/hermes-quota-plugin
Release list
Hermes Quota 3.0.0 — Agent Monitor
Hermes Quota 3.0.0 — Agent Monitor
A huge thank-you to @Asimatasert for bringing Agent Monitor into Hermes Quota, including the backend, Desktop views, localization, tests and follow-up fixes. This contribution made the 3.0 milestone possible. See the original proposal #83.
What's new
- Live Hermes sessions, attention and context indicators inside Desktop.
- Model health, fallback visibility and recorded usage estimates.
- Quota history and burn-rate forecasts when sufficient readings exist.
- Status-bar agent chips, context guard and configurable notifications.
- Localized monitor UI in English, Turkish, German, Spanish, French, Russian, Japanese, Simplified Chinese, Traditional Chinese and Arabic (RTL).
- Updated README, acknowledgements and monitor documentation.
- Existing native Hermes plugin updates and per-card Codex reset notices preserved.
Scope and privacy
Monitor collection is off by default and limited to the active profile. Existing quota functionality remains available without enrollment.
hermes config set plugins.entries.quota.settings.monitorEnabled trueUse hermes -p <profile> config set ... for a named profile. Set the value to false to stop collection; existing history is not erased.
This release retains the hardened read-only trial scope: no sibling-profile or external CLI transcript collection, shared Kanban reads, new credential-pool metadata reads, account/budget backend mutations or monitor agent tools. Widget budgets remain local. Usage costs are estimated API-price equivalents, not invoices; month-end spending projection is unavailable. Existing provider authentication disclosures still apply.
For remote Desktop setups, update the widget on the Desktop computer and the backend on the gateway separately. The evaluation widget is not automatically replaced by this release.
Shipped monitor contract · Installation
Verification
- Final local suite: 1,087 tests executed successfully, 11 skipped.
- Independent review of release blockers passed after corrections.
- GitHub CI passed on the release commit: Python 3.9–3.12, Desktop/TUI widgets, shell regressions on Ubuntu and macOS, manifest checks and plugin scanner.
v2.12.0
- Desktop: one card per saved credential for multi-account providers, grouped
by provider in the status bar; the pane keeps a card per account and the
Codex announcement once above the group (#71). - Skill: bundle
quota-check(quota:quota-check) so agents check quota
before long work and ask before splitting tasks or switching models (#69).
v2.11.5
- Codex: a pooled account's saved upstream base URL is preserved for usage
requests, so a local inference proxy no longer turns a valid account into
http-404(#81). - Grok: reuse the Hermes
xai-oauthbearer before the browser-cookie chain;
Windows Chrome v20 App-Bound cookie decryption is supported (#82).
v2.11.4
- Desktop: a legacy single connection reports an owner without a registry
connectionId; the widget now routes through the live gateway instead of
failing with "focused quota profile unavailable". Anullowner still keeps
the query disabled, so an ambiguous multi-connection never guesses a profile
(#79).
v2.11.3
- Cache: a carried record (incomplete sweep) now drops its windows and balances,
so the CLI cannot render stale percentages under a fresh cache timestamp; the
note is deduplicated instead of growing on every sweep. - TUI:
rememberabletolerates a non-array selection, and a test pins the
persisted preference as the single string the picker resolves.
v2.11.2
- Cache: a sweep whose provider registry is incomplete no longer deletes the
providers it never tried — they are carried forward and marked
not-refreshed. - Tests: the shared-cache refresh test patches its own cache path, so a test
run can no longer rewrite the livequota_cache.jsonwith a synthetic
single-provider cache. - Desktop:
WIDGET_VERSIONsynced with the manifest (2.11.1 shipped a skew).
v2.11.1
- TUI:
/quota-selectopens on the provider/account saved by the previous run
and marks that row· current; Enter keeps it instead of silently switching
to the first cached row. - TUI: a stale panel can no longer overwrite the saved preference with a
selector the cache does not resolve. - Tests: the picker test uses a temporary
HERMES_HOME, so a test run never
rewrites the livequota-panel.state.json.
v2.11.0 - readable quota dashboard + Codex special reset
Hermes Quota 2.11.0
A dashboard you can read in one pass
/quotaandhermes quotalist only providers with a saved account.- Friendly provider/account names and plan; one 10-cell remaining bar per window; worst quota first; relative reset times.
- Filters accept
claude,codex,google, account names (conta 2) and the full friendly name. - Other failures (
config-invalid,rate-limited,no-data) stay visible with their actionable detail.
Codex special-reset announcements
- Public announcement channel (codex-resets.com) in the CLI, JSON, Desktop pane/tooltip and the TUI chip/picker.
- Shows the publisher's scheduled estimate (
scheduled Oct 22 18:00) and the post time. The estimate is announcement metadata, never proof that a reset ran.
Timezone
- Every timestamp uses the Hermes
timezonesetting (fallback: system zone), not the process TZ: CLI, Desktop and TUI.
Terminal UI
- Optional quota dock with saved startup preference and a compact special-reset notice.
Fixes
- Non-finite
used_percentnow renders unknown instead of a silent 100% left. - Account-id filters work when a record has no
account_label. - ISO timestamps with a trailing lowercase
zparse on Python 3.9.
v2.8.2 — installs work again: scanner-clean tree, MiniMax OAuth, hardened CI gate
Installs work again
The tree no longer trips the Hermes install-time security scanner. The two
GOCSPX- Google installed-app client constants were renamed to say what they
are (_PUBLIC_CLIENT_CREDENTIAL / _PUBLIC_CLIENT_ID), which clears the two
critical / credential_exposure / hardcoded_secret findings that made
hermes plugins install refuse the plugin outright (issue #51). Values stay in
the clear — grep-able and auditable — only the name stopped claiming to be a
secret. Two new tests assert the exchange still sends the right client id and
credential, so a future rename cannot silently swap them. (@thileman, #52)
Verified with the real scanner: 46c047b → dangerous, 2 critical;
this tree → safe, 0 high, 0 critical.
Fixes
- MiniMax OAuth works. Hermes registers the provider as
oauth_minimax, an
auth_typethe resolver's allowlist never matched, so the one provider holding
a token was skipped and the card readno-credentials. (@thileman, #57) - The footer's checked timestamp, the Cursor credential handling, the
Antigravity opt-in and several parser-honesty regressions that landed between
releases are all included in this pin.
CI
- The plugin scanner now runs in CI with parity to the installer: pinned to a
Hermes release rather thanmain, failing on anycriticalor onhighin
credential_exposure, and preceded by a--self-testthat proves the gate can
still see the blocking class. The previous job trackedmain, which had
demoted those literals tohigh, so it stayed green on the tree that refused
to install. (@thileman for the job, #56; hardening on top.)
Thanks
v2.8.1 — review remediation fixes
This patch release incorporates the four requested review remediations from PRs #46–#49:
- Cursor quota reads are read-only; expired sessions now direct users to
cursor-agent login. - Antigravity is disabled by default and requires explicit opt-in.
- Documentation discloses Antigravity credential sources, OAuth client identity, and User-Agent.
- Public installed-app OAuth client constants are documented and declared plainly.
The widget and manifest versions are synchronized at 2.8.1. PR #45 is not included.