Hermes Agent CLI Tools: List and What Each One Does
The Hermes Agent CLI surface today: chat, config, sessions list --source, cron, skills, plugins, memory, fact_store, curator. The --toolsets flag for per-call scoped tool loading.

The CLI surface in one sentence
Hermes Agent’s CLI today: chat, config, sessions, cron, skills, plugins, memory, fact_store, curator. Each is one subcommand with subcommand-specific flags. The --toolsets flag scopes the loaded tools for any single call.
The full command tree starts at hermes --help and goes two levels deep. Group the commands by their role.
The chat subcommand
hermes chat is the primary agent invocation. Modes:
hermes chat -q "Reply with OK"— single-shot query. Useful for cron and tooling.hermes chat(no-q) — interactive REPL. Useful for exploration.hermes chat --provider <name>— pick a specific provider. Useful when testing a model switch.hermes chat --model <name>— pick a specific model within the chosen provider.hermes chat --toolsets web,terminal— load only the listed toolsets; the rest stay unloaded. Smaller model context, faster response.hermes chat --resume <session_id>— continue a prior session.
Three flag patterns worth memorizing:
-q "..."— query mode. The most useful for cron and tests.--toolsets ...— tool loading is per-call. Default loads every toolset.--toolsets=""— load nothing; the agent is just the bare LLM with no tools.
The config subcommand
hermes config reads and writes ~/.hermes/config.yaml. Modes:
hermes config show— print the active config.hermes config show --provider <name>— print one provider’s config (api_key masked).hermes config set <key> <value>— set a single config key. Persists.hermes config get <key>— read a single key.
The config keys are dotted paths: provider.openai.api_key, provider.anthropic.default_model, default_provider. Setting a key requires the right section to exist; if it doesn’t, hermes config set errors.
The sessions subcommand
hermes sessions reads ~/.hermes/sessions.sqlite (or analogous). Modes:
hermes sessions list --source <backend>— list sessions from one backend (default:local).hermes sessions search <query>— full-text search across session content.hermes sessions resume <session_id>— resume a prior session.hermes sessions continue <session_id>— alias for resume; matches the--continueflag onchat.
The --source flag is mandatory for list (without it, you get the union of all backends which can be huge).
The cron subcommand
hermes cron manages scheduled jobs. Modes:
hermes cron list— list jobs with their schedules.hermes cron create --prompt "..." --schedule "30 11 * * *"— create a new job.hermes cron pause <job_id>— pause a job.hermes cron resume <job_id>— resume a paused job.hermes cron update <job_id> --prompt "..."— change the prompt.hermes cron run <job_id>— fire the job immediately (single-shot).hermes cron remove <job_id>— delete.
The create and update modes take a self-contained prompt. The cron-run session is fresh — no memory, no skills, no session history. The prompt must include all context the job needs.
The skills subcommand
hermes skills lists and inspects skills. Modes:
hermes skills list— all installed skills.hermes skills browse— interactive skill browser (prompts for filter).hermes skills view <name>— show the SKILL.md frontmatter and content.hermes skills create— start a new skill (writes a SKILL.md stub).
The view and create modes operate on ~/.hermes/profiles/<active>/skills/.
The plugins subcommand
hermes plugins lists and inspects plugins. Modes:
hermes plugins list— installed plugins.hermes plugins load <name>— re-load a plugin at runtime.hermes plugins unload <name>— unload.
Plugins live at /opt/hermes/plugins/<name>/ and use the register(ctx) entry-point. The plugins listing includes the version, the entry point, and whether it’s currently active.
The memory subcommand
hermes memory reads and writes the persistent memory file. Modes:
hermes memory list— show current memory entries.hermes memory add "<text>"— add an entry. Goes through Johnny5 routing gate.hermes memory remove <id>— remove.hermes memory search "<query>"— search across memory entries.
The add mode is the Johnny5 gate: an entry must be a stable, cross-cutting fact (not a per-task note, not an in-progress todo).
The fact_store subcommand
hermes fact_store reads and writes the deeper-structured memory. Modes:
hermes fact_store add --category <cat> --content "..."— store a fact.hermes fact_store search "<query>"— search facts.hermes fact_store probe <entity>— all facts about an entity.hermes fact_store reason "<entities>"— compositional reasoning across entities.hermes fact_store contradict— find conflicting facts.hermes fact_store list— list all facts.
fact_store is for facts that need composition across entities (e.g. user + project + tool). memory is for facts that are always-loaded in any session.
The curator subcommand
hermes curator is the drift detector. Modes:
hermes curator list— show installed skills + recent diffs.hermes curator pin <name>— pin a skill to prevent deletion.hermes curator unpin <name>— unpin.hermes curator absorb <from> --into <to>— merge one skill into another.hermes curator prune— delete unpinned skills older than threshold.
The curator is the operator’s tool for the weekly skill sweep. It doesn’t auto-prune; it surfaces candidates.
The cross-cutting flags
Three flags appear across multiple subcommands:
--toolsets ...— scope tool loading. Default loads everything.--provider <name>— pick the provider for the call. Most subcommands default to the active config’sdefault_provider.--json— emit JSON instead of human-readable text. Useful for piping.
What NOT to do
- Don’t run
hermeswith no subcommand hoping for an interactive default. Each subcommand is its own mode. - Don’t
--toolsets ""without understanding the trade-off — agents without tools can’t act on the world. - Don’t
hermes memory addper-session preferences. The Johnny5 gate will reject; if you bypass the gate, the entry rots. - Don’t
hermes cron removewhile a job is running. Pause first; the scheduler respects pause on the next tick.
Sources
- Hermes Agent docs
- ABS companion: Hermes Agent Tools: Enabling Only What You Need
- ABS companion: Terminal Commands Versus Python
- ABS companion: Hermes Agent Cron Jobs
Last verified: 2026-07-14 against Hermes v0.18.2 (2026.7.7.2). CLI surface is stable across minor versions.



Submit a take
Have a different read on this? Drop a comment below — your email isn't published, and I read every one. Nothing leaves the site until I approve it.