Hermes estate — what exists, what it costs, what to cut
Read-only survey of ~/.hermes, its cron store, skills, units, containers and ports.
Nothing was changed. Sizes in MB unless stated.
Headline
| Thing | Count | Note |
|---|---|---|
Disk under ~/.hermes | 23.3 GB | of which 13.0 GB is backups |
| Cron jobs | 112 | 102 enabled, 10 disabled, 0 with a missing script |
— script jobs (no_agent) | 108 | the intended shape |
| — agent jobs (LLM every run) | 3 enabled | ~9 model runs/day |
| Skills | 108 | no duplicate names |
| Containers | 48 | 1 exited |
| Listening ports | 103 | |
| Workspace markdown | 154 files | 391 KB total — clutter, not weight |
Where the 23 GB actually is
| Path | MB | Verdict |
|---|---|---|
backups/homelab | 7,693 | 2.9 GB is pure duplication (see A) |
backups/pre-update-2026-10-22-103951.zip | 1,334 | three weeks old, one pre-update snapshot |
backups/hermes | 912 | live, recent (today) |
backups/mnemosyne | 799 | live, recent (today) |
backups/simplification-20261030 | 545 | project close-out copy |
cache/uv | 1,018 | rebuildable package cache |
hermes-agent | 2,824 | the install itself |
tools | 1,693 | ffmpeg, python, chromium, node — all in use |
state | 716 | 289 MB of it is one repair scratch dir |
state.db | 660 | session database |
mnemosyne | 657 | memory database |
trash | 396 | one corrupt-checkpoint copy from 22 Oct |
checkpoints | 174 | live |
logs | 120 |
A. Duplication worth removing now — 2.9 GB, zero risk
backups/homelab/immich_model-cache-*.tar.gz exists three times, and sha256sum proves all three are
the same file (1ad0f6bb13823ae3…, 1,521,032,088 bytes each): 18 Oct, 26 Oct, 1 Nov. It is an Immich
model cache — a download, not data. Keeping one and deleting the other two frees 2.9 GB and loses
nothing that is not re-downloadable.
B. Scratch and one-offs — about 900 MB
| Path | MB | What it is |
|---|---|---|
trash/checkpoints-corrupt-20261022 | 396 | a checkpoint set known to be corrupt, kept “just in case” |
state/memory-repair-20261101 | 289 | 1 Nov repair scratch: clean-rebuild, staging, two restore-test DBs |
state/kuma.db.bak-20261026 | 105 | pre-repair copy of the Uptime Kuma DB |
state/todo-improvement-20261103 | 73 | the 3 Nov Todo project workspace |
state/mnemosyne.db.bak-20261026 | 29 | pre-repair copy |
state/mnemosyne-pre-purge-20261020-091409.db | 27 | pre-purge copy |
Each of these is a copy of something that still exists, or a test artefact. Deleting them costs a re-download or a re-run, not data.
C. Rebuildable cache — 1.0 GB
cache/uv (1,018 MB) is the uv package cache. uv cache prune or deleting it costs re-downloads and
nothing else. cache/fastembed (129 MB) is the local embedding model — keep, it is in use.
D. Cron — 112 jobs, and the three that spend money
108 jobs are no_agent scripts, which is the house rule. Three enabled jobs are agent jobs, i.e.
they call a model on every run:
| Job | Schedule | Runs/day |
|---|---|---|
cron-failure-triage | 0 */4 * * * | 6 |
email-draft-preparer | 30 12,18 * * * | 2 |
WhatsApp — morning reply drafts | 0 8 * * * | 1 |
That is roughly nine model runs a day that are not scripts. Worth deciding deliberately rather than by
accretion — cron-failure-triage at six runs a day is the expensive one, and it only has something to do
when a job fails.
Ten jobs are disabled, of which four are spent one-shots with dates in the past:
stabilisation-b2-verify— once, 31 Octtodo-deepseek-review-20261103— once, 3 Novtodo-sol-review-20261103— once, 3 NovSol All-view review (retry after quota)— once, 3 Novreminder-call-dave— once, 5 Nov
and six that were switched off on purpose or by accident:
tracker-intake-merge— every 30mmnemosyne-sleep— daily 03:00daily-fact-extraction— daily 03:00WhatsApp — awaiting reply— every 15mWhatsApp — admin triage— every 30m
Worth a look: mnemosyne-sleep and daily-fact-extraction are both off. Those are the two steps that
turn conversations into durable memory. If that is deliberate, fine; if it happened during a repair, memory
has been collecting without being distilled.
E. Everything else is healthy
- No cron job points at a missing script.
- No duplicate job names.
- No duplicate skill names; 108 skills, smallest are the templates.
- One exited container (
tei-embeddings) — a stopped embedding server, not an error. - 103 listening ports across the estate; nothing obviously orphaned.
Proposed order of work
- Delete two duplicate Immich tarballs — 2.9 GB, provably identical.
- Prune the uv cache — 1.0 GB, rebuildable.
- Clear scratch and one-offs (section B) — ~0.9 GB.
- Retire the five spent one-shot cron jobs — clutter in the job list, no function.
- Decide on the pre-update zip (1.3 GB) — it is the only pre-22-Oct snapshot; if the Oct 22 update is comfortably behind us, it goes.
- Review the three agent cron jobs — cost, not disk.
- Check whether
mnemosyne-sleepanddaily-fact-extractionshould be running.
Steps 1–4 are safe and reversible in the sense that nothing unique is destroyed. Step 5 is a judgement on how far back you want to be able to restore.