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:

  1. Content overlap scoring — the agent compares skill bodies for structural similarity (steps, commands, pitfalls)
  2. Usage check — two low-usage skills covering the same domain get merged; high-usage skills with overlapping content get suggestions instead
  3. Reference reconciliation — merged skills get unified reference paths; old paths are forwarded via absorbed_into metadata
  4. Version bump — the merged skill gets version: 2.0.0

Guardrails

The Curator has safety boundaries:

GuardrailWhat it prevents
Pinned skillsskill_manage(action='delete') refused on pinned skills (protected)
Hub skillsSkills installed via hermes skills install <hub-url> are never modified
absorbed_into trackingWhen consolidating, sets metadata so downstream consumers update references
Trash directoryPruned skills go to ~/.hermes/trash/ not /dev/null — recoverable with mv
Run report always writtenEven 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_view loads
  • Archived junk is out of sight → skills_list output 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

From The Network

AI Tools

ToolBrain

In-depth AI tool reviews, comparisons, and guides

AI Agents

NiteAgent

AI agent frameworks, orchestration, and production patterns

Engineering

CodeIntel

Code intelligence, testing patterns, and production engineering

No-Code

NoCode Insider

No-code workflows, automation tools, and visual development

Smart Home

Smart Home Field Guide

Smart home devices, automation, and IoT reviews

/* deployment 1779804339 */