A point-in-time audit of the agent that runs this site's automations. Every number below was read from the live install in a single session — the cron ledger, the session store, the model-usage tables and the memory database — not estimated.
423 runs, 240 failed. The cause changed on the day of this audit:
invalid_grant: Token has been expired or revoked, first seen 02:14, three in a row.
At a 15-minute cadence that is roughly 96 failures a day until the token is re-authorised. The
Google token file was last written Sep 8 09:30.
30 occurrences in 14 days, spaced exactly every 3 hours — the Marketplace Sweep cadence. Last one Sep 9 20:34. The sweep then ran clean at 02:36 and the gateway restarted at 02:41, and the affinity patch (Sep 8) is loaded, so this is intermittent rather than closed.
config.yaml carries a fallback_providers value, but
hermes fallback list answers “No fallback providers configured” —
phantom protection. That is why the Sep 9 relay 503 took the Daily Brief down with no retry path.
It also pointed at the same provider, which is useless during a relay outage, and at a legacy
model id.
Failed four nights straight (Sep 6–9 at 23:30) on npm: command not found, exit 127 —
a script-only cron does not inherit the shell PATH. The wrapper now exports
$HOME/.hermes/node/bin. Reproduced in a minimal environment both ways: with the fix
npm 10.9.8, without it command not found.
This very site's staleness check is an agent job with deliver: local. Output is
written, never delivered — if the deployed bundle goes stale, nobody is told.
Disabled after 27 runs with 9 failures, last fire Sep 9 23:00. It was scheduled six times a day from the Questions Dashboard, so the reflective-prompt routine is currently not running.
| September usage | value |
|---|---|
| API calls | 2,406 |
| Input tokens | 19.3 M |
| Output tokens | 2.36 M |
| Cache reads | 219.4 M |
| Cron share of calls | 661 (27%) |
| Interactive share | 1,846 (73%) |
| Heaviest day (Sep 8) | 920 calls |
Cache reads are 91% of all tokens — the ratio that makes a flat-rate subscription so hard to beat. Cost columns read $0.00: flat rate, as expected.
| Model | calls | cache |
|---|---|---|
deepseek-v4-flash | 1,517 | 171.9 M |
mimo-v2.5 | 699 | 35.9 M |
deepseek-flash | 160 | 18.0 M |
qwen3.8-max | 94 | 1.5 M |
gpt-5.6-luna | 10 | — |
v4-flash-vision-exp | 10 | — |
All on one relay provider except gpt-5.6-luna (included). The coder profile and
subagent delegation both resolve to the cheap model; context compression runs on a long-context
model. No wasted spend in the auxiliary paths.
The vision auxiliary pointed at a retired V4-vision model id that was only alive through temporary compatibility routing. Repointed to the current model and verified.
The single MCP server connects over stdio in 812 ms with 2 tools discovered. Configuration-only checks were hiding nothing.
Its non-zero exit is the designed warning path, not a crash. The warnings it raised were true: the data volume is 92% full and four jobs are in a non-ok state.
| Item | Why it matters |
|---|---|
| Mixture-of-Agents enabled aggregator on an abandoned provider |
MoA is enabled: true with a premium aggregator and a reference model on a provider
that was dropped for cost reasons. September shows only 10 reference-model calls, so it is not
auto-firing — but it is a loaded gun aimed at a provider no longer being paid for.
|
| max_tokens: 2048 | Low for a coding daily driver on a 1M-context model — long diffs and reports get truncated mid-write. Raising it costs nothing; you only pay for tokens actually produced. |
| Weekly Kanban Dispatch | Burns a full agent run every Monday on a board sitting at 6 done and 0 open. Either the workflow needs reviving or the job should become a script. |
| Install drift 6,640 commits · 4 modified + 1 untracked |
A local patch that fixes the relay's session-affinity requirement exists only as an untracked file. The next upgrade can conflict with or clobber it. |
| Disk at 91% 19 GiB free |
Reclaimable: a stale 516 MB emergency database backup, plus an offline session-store rebuild. The 656 MB of embedding models are load-bearing — those stay. |
Compression and delegation routing — cheap, correct, matched to the flat-rate plan; auxiliary paths inherit the default model, so nothing is overspending there.
Session auto-prune with 90-day retention — already enabled, so the doctor's complaint about it is stale. The remaining work is the offline storage rebuild.
Webhooks, always-on voice, extra MCP servers — left off. No consumer, no event source, no security boundary yet. Fixing what is already broken comes before installing another integration.
Vault auto-sync, every 15 minutes — 426 of 426 runs clean. The only job with a perfect record.