Hermes Curator: An Autonomous Skill-Maintenance Agent
The Hermes Curator runs in the background on a 7-day cycle, grading, consolidating, and pruning your skill library without any manual effort.
Build Log — v0.12.0 (2026.4.30): The “Curator” release introduced an autonomous background agent that maintains your skill library. 1,096 commits, 550 merged PRs, and 213 community contributors went into this release [1]. This post walks through what the Curator is, how to configure it, and what happens during a curation cycle.
Why a Curator?
Skills are procedural memory — markdown documents in ~/.hermes/skills/ that the agent reads as part of its system prompt. Over time, your skill library accumulates:
- Drafts — one-off workflows that should probably be merged
- Stale skills — procedures for tools or APIs you no longer use
- Duplicates — two skills covering the same task with slightly different approaches
- Dead references — scripts or templates that were deleted but still linked in a skill’s frontmatter
Manually cleaning this up is tedious. The Curator automates it.
Architecture
The Curator runs as a background agent on the gateway’s cron ticker:
Gateway cron ticker (7-day default)
└─ auxiliary.curator process
├─ Scans ~/.hermes/skills/ (excluding bundled/hub skills)
├─ Grades each skill: usage stats, content quality, freshness
├─ Classifies: keep / consolidate / prune
├─ If consolidate → merges related skills, updates references
├─ If prune → archives dead skills (never deletes)
└─ Writes report to logs/curator/run.json + REPORT.md
It inherits the parent gateway’s config — same provider, model, and credentials. Pinned skills and hub-installed skills are protected.
Setting It Up
The Curator is unified under auxiliary.curator. Enable it in your config:
# ~/.config/hermes/config.yaml
auxiliary:
curator:
enabled: true
cycle_days: 7 # default; change to 14 for less frequent runs
model: auto # inherit from primary, or pin a specific model
Or set it via CLI:
hermes config set auxiliary.curator.enabled true
hermes config set auxiliary.curator.cycle_days 14
Pick which model it uses:
hermes model # select main model
# or pin a specific model just for the curator:
hermes config set auxiliary.curator.model gpt-4o
Checking Status
See how the curator ranks your skills:
hermes curator status
Output (example):
Most-used skills (last 30 days):
↔ github-pr-workflow — 24 uses
↔ static-blog — 19 uses
↔ content-pipeline — 15 uses
Least-used skills (last 30 days):
↔ legacy-deploy-script — 0 uses
↔ old-mcp-setup — 0 uses
What a Curation Run Looks Like
When the Curator fires, it writes two outputs to logs/curator/:
run.json — machine-readable summary:
{
"run_id": "cur-20260526-001",
"started_at": "2026-05-26T03:00:00Z",
"skills_scanned": 47,
"skills_pinned": 5,
"consolidated": 3,
"pruned": 2,
"duration_seconds": 142
}
REPORT.md — human-readable decisions:
# Curator Run — 2026-05-26
## Consolidated
- `deploy-guide-v1` + `deploy-guide-v2` → `deploy-guide`
- `troubleshooting-docker` + `docker-common-issues` → `docker-troubleshooting`
## Pruned (archived → ~/.hermes/trash/)
- `obsolete-model-config` — provider no longer supported
- `v0.8-migration` — migration was one-time, 3 months stale
## Protected
- 5 pinned skills (not evaluated)
- 12 hub-installed skills (not evaluated)
Consolidation Logic
The consolidation step is surprisingly sophisticated:
- Content overlap scoring — the agent compares skill bodies for structural similarity (steps, commands, pitfalls)
- Usage check — two low-usage skills covering the same domain get merged; high-usage skills with overlapping content get suggestions instead
- Reference reconciliation — merged skills get unified reference paths; old paths are forwarded via
absorbed_intometadata - Version bump — the merged skill gets
version: 2.0.0
Guardrails
The Curator has safety boundaries:
| Guardrail | What it prevents |
|---|---|
| Pinned skills | skill_manage(action='delete') refused on pinned skills (protected) |
| Hub skills | Skills installed via hermes skills install <hub-url> are never modified |
absorbed_into tracking | When consolidating, sets metadata so downstream consumers update references |
| Trash directory | Pruned skills go to ~/.hermes/trash/ not /dev/null — recoverable with mv |
| Run report always written | Even if no actions taken, report documents the scan for audit trail |
What This Means for Your Workflow
Before the Curator, skills were write-once, maybe-update-never. After a few months, you’d have 80+ skill files, half of which were drafts, dead ends, or superseded by better approaches.
Now the library stays lean:
- Skills that prove their value get used more → higher ranking → survive curation
- Merged skills collapse surface area → faster
skill_viewloads - Archived junk is out of sight →
skills_listoutput stays scannable - Each run produces a report → you know exactly what changed
Gotchas
A few things I hit setting this up:
Cycle timing. The 7-day cycle starts from gateway boot, not from when you enable it. If you hermes config set at noon, the first run happens at noon 7 days later (assuming the gateway stays up). To force an immediate run, restart the gateway.
Model choice matters. If you pin a weak model for the curator to save tokens, you’ll get worse consolidation decisions. gpt-4o or equivalent is recommended. The curator’s runtime is cheap — in practice, a single scan costs about the same as 2-3 normal prompts.
Standalone mode. You can also run the curator ad-hoc with hermes curator run (v0.12.1+). This bypasses the cron cycle and runs immediately in the foreground with streaming output.
Summary
The autonomous Curator takes skill maintenance from a manual chore to a hands-off background service. Combined with the upgraded self-improvement loop (rubric-based review forks that handle references/ and templates/ sub-files), Hermes Agent now maintains its own knowledge base without intervention.
If you’re running Hermes Agent v0.12.0 or later, the Curator is already enabled by default — just run hermes curator status to see what it’s been up to.
References
[1] Hermes Agent v0.12.0 Release — GitHub [2] Official release notes for v0.12.0 — RELEASE_v0.12.0.md [3] Hermes Agent Changelog — hermes-ai.net [4] Skills documentation — Hermes Agent docs [5] Hermes Agent GitHub — NousResearch