Last updated: 2026-04-06

Hermes Quick Start — Install, Memory Setup & First Long-Running Task

Hermes runs differently from OpenClaw or IronClaw. It's a daemon — a background process that persists between sessions, maintains its own memory database, and can be given tasks that execute hours or days later. This guide walks you from zero to a working Hermes installation with persistent memory and a scheduled task in about 20 minutes.

Upgrade to v0.9.3 before relying on persistent memory

Versions before v0.9.3 had a bug where the memory store silently expired after 72 hours. All data appeared to persist but was irretrievably lost on the next vacuum cycle. Version v0.9.3 (March 2026) fixes this. Run npm install -g hermes-agent@latest and verify: hermes --version should show 0.9.3 or higher.

Prerequisites

  • Node.js 22.16+ or Node 24 — check with node --version
  • A model with a long context window — Hermes works with any provider, but its value shows most with models that can hold large contexts. Recommended: Claude Opus 4.6 (200K context), Claude Sonnet 4.6 (200K), or GPT-4.1 (128K). See the model selection guide below.
  • At least 500 MB disk space for the SQLite memory store. Heavy use over months can grow to several GB — plan accordingly or use the PostgreSQL backend.
  • Linux or macOS recommended. Windows works; WSL2 is preferred for the daemon mode.

Step 1 — Install Hermes

npm install -g hermes-agent

# Verify
hermes --version
# hermes/0.9.3 linux-x64 node/22.16.0

Unlike OpenClaw and IronClaw, Hermes installs as both a CLI tool (hermes) and a background daemon. The daemon is what maintains persistent memory and scheduled tasks when you're not actively using it.

Step 2 — Run the Setup Wizard

hermes init

The wizard asks seven questions:

QuestionDefaultRecommendation
Model provideranthropic (Claude has the best long-context handling)
API keyPaste key — stored encrypted in OS keychain
Primary modelclaude-sonnet-4-6Accept default, or use claude-opus-4-6 for complex tasks
Memory store typesqliteAccept sqlite for personal use; use postgres for team/production
Memory store path~/.hermes/memory.dbAccept default, or choose a path on a drive with plenty of space
Workspace path~/.hermes/workspace/Accept default
Notification channelnoneSet to telegram if you want task completion alerts on your phone

After the wizard, Hermes creates:

~/.hermes/
  hermes.json          # main config
  memory.db            # SQLite memory store
  workspace/
    PERSONA.md         # who Hermes is (equivalent of OpenClaw's SOUL.md)
    TASKS.md           # scheduled and active tasks
    REFLECTIONS.md     # self-reflection log (written by Hermes)
    MEMORY.md          # manual memory entries (you write these)
  logs/
    daemon.log         # daemon activity log
    tasks.log          # task execution log

Step 3 — Start the Daemon

hermes start

# Output:
# [hermes] daemon v0.9.3 starting
# [hermes] memory store: sqlite (~/.hermes/memory.db) — 0 episodes
# [hermes] indexer: ready
# [hermes] scheduler: ready — 0 tasks queued
# [hermes] daemon running (PID 45821)

# Verify it's running
hermes status
# daemon: running (PID 45821)
# memory: 0 episodes, 0 facts, 0 reflections
# tasks: 0 queued, 0 running, 0 completed

The daemon runs in the background and survives terminal closures. To stop it:

hermes stop

Run as a System Service (recommended)

sudo tee /etc/systemd/system/hermes.service << 'EOF'
[Unit]
Description=Hermes Agent Daemon
After=network.target

[Service]
Type=forking
PIDFile=/home/YOUR_USERNAME/.hermes/daemon.pid
User=YOUR_USERNAME
ExecStart=/usr/local/bin/hermes start
ExecStop=/usr/local/bin/hermes stop
Restart=on-failure
RestartSec=10
EnvironmentFile=/home/YOUR_USERNAME/.hermes/.env

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable hermes
sudo systemctl start hermes

Model Selection for Hermes

Hermes's memory compression means it can work with shorter context windows than you'd expect — the compression layer summarises old episodes before injecting them. But the model's reasoning quality matters more for long-horizon tasks than for quick Q&A. Choose based on task complexity:

ModelContextBest forApprox cost/month (typical Hermes use)
Claude Haiku 4.5200KSimple automation: reminders, summaries, light research$2–6
Claude Sonnet 4.6200KMost Hermes tasks — good reasoning at a reasonable price$8–20
Claude Opus 4.6200KComplex multi-week projects requiring deep reasoning$30–80
GPT-4.1128KGood alternative to Sonnet; slightly cheaper per token$7–18
Gemini 1.5 Pro1MTasks requiring very large single-context windows (unusual)$5–15
Local Ollama (Qwen 2.5 14B+)32KLow-stakes background tasks where privacy matters more than quality$0 (electricity)

The recommended setup: use Sonnet as the default with Opus as an escalation for tasks Hermes explicitly flags as high-complexity. Configure this in the config:

{
  "model": {
    "primary":   "anthropic/claude-sonnet-4-6",
    "heavy":     "anthropic/claude-opus-4-6",
    "light":     "anthropic/claude-haiku-4-5",
    "autoEscalate": {
      "enabled":      true,
      "triggerTokens": 50000,  // escalate to heavy model when task exceeds this
      "triggerScore":  0.8     // or when complexity score exceeds this threshold
    }
  }
}

Step 4 — Your First Task

Give Hermes a task through the CLI:

# A simple immediate task
hermes run "Summarise the top 5 AI news stories from this week and save to workspace/weekly-brief.md"

# A scheduled task
hermes run --at "tomorrow 8am" "Check my GitHub notifications and send me a Telegram summary"

# A recurring task
hermes run --every "monday 9am" "Run a weekly project status check and update TASKS.md with blockers"

# A long-horizon task (Hermes breaks it into steps autonomously)
hermes run "Over the next week, research the current state of AI agent frameworks, compare them on 10 dimensions, and produce a 2000-word report. Check in with me at the halfway point."

Monitor task progress:

hermes tasks list
# ID       STATUS    SCHEDULED     DESCRIPTION
# t-001    running   now           Summarise AI news...
# t-002    queued    2026-04-07    Check GitHub notifications...
# t-003    queued    2026-04-13    Weekly status check (recurring)

hermes tasks log t-001   # see execution log for a task
hermes tasks cancel t-002  # cancel a queued task

Step 5 — Verify Memory Is Working

After your first task completes, Hermes automatically stores an episode in its memory database. Check it:

hermes memory status
# Episodes:    1
# Facts:       4
# Reflections: 1
# DB size:     128 KB

hermes memory search "AI news"
# [episode:001] 2026-04-06 — Summarised top 5 AI stories...
# [fact:003] Claude Opus 4.6 released April 2026 with 200K context

If memory shows 0 episodes after a completed task, your version is likely below v0.9.3. Upgrade immediately.

CLI Quick Reference

CommandWhat it does
hermes initFirst-time setup wizard
hermes startStart the background daemon
hermes stopStop the daemon gracefully
hermes statusShow daemon status, memory counts, task queue
hermes run "..."Submit a task for immediate or scheduled execution
hermes run --at "8am tomorrow" "..."Schedule a one-time task
hermes run --every "monday 9am" "..."Schedule a recurring task
hermes tasks listShow all tasks (queued, running, completed)
hermes tasks log <id>Show execution log for a task
hermes tasks cancel <id>Cancel a queued task
hermes memory statusShow memory store counts and size
hermes memory search "query"Search memory episodes and facts
hermes memory compactRun manual memory compression (usually automatic)
hermes logsStream daemon log live
hermes config get <key>Read a config value
hermes config set <key> <value>Update config and reload daemon

← Back to Hermes hub · Next: Persistent Memory Architecture →