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.
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:
| Question | Default | Recommendation |
|---|---|---|
| Model provider | — | anthropic (Claude has the best long-context handling) |
| API key | — | Paste key — stored encrypted in OS keychain |
| Primary model | claude-sonnet-4-6 | Accept default, or use claude-opus-4-6 for complex tasks |
| Memory store type | sqlite | Accept sqlite for personal use; use postgres for team/production |
| Memory store path | ~/.hermes/memory.db | Accept default, or choose a path on a drive with plenty of space |
| Workspace path | ~/.hermes/workspace/ | Accept default |
| Notification channel | none | Set 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:
| Model | Context | Best for | Approx cost/month (typical Hermes use) |
|---|---|---|---|
| Claude Haiku 4.5 | 200K | Simple automation: reminders, summaries, light research | $2–6 |
| Claude Sonnet 4.6 | 200K | Most Hermes tasks — good reasoning at a reasonable price | $8–20 |
| Claude Opus 4.6 | 200K | Complex multi-week projects requiring deep reasoning | $30–80 |
| GPT-4.1 | 128K | Good alternative to Sonnet; slightly cheaper per token | $7–18 |
| Gemini 1.5 Pro | 1M | Tasks requiring very large single-context windows (unusual) | $5–15 |
| Local Ollama (Qwen 2.5 14B+) | 32K | Low-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
| Command | What it does |
|---|---|
hermes init | First-time setup wizard |
hermes start | Start the background daemon |
hermes stop | Stop the daemon gracefully |
hermes status | Show 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 list | Show 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 status | Show memory store counts and size |
hermes memory search "query" | Search memory episodes and facts |
hermes memory compact | Run manual memory compression (usually automatic) |
hermes logs | Stream 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 →