diff --git a/website/docs/getting-started/installation.md b/website/docs/getting-started/installation.md index 39237bc6f4b66..1794d68a6952e 100644 --- a/website/docs/getting-started/installation.md +++ b/website/docs/getting-started/installation.md @@ -143,6 +143,14 @@ Running Hermes as a dedicated unprivileged user (e.g. a `hermes` systemd service 4. **Verify:** `hermes doctor` should now run cleanly. If you get `ModuleNotFoundError: No module named 'dotenv'`, you're invoking the repo source `hermes` file (`~/.hermes/hermes-agent/hermes`) with system Python instead of the venv launcher (`~/.hermes/hermes-agent/venv/bin/hermes`) — fix step 3. +5. **Running the messaging gateway from this account?** A user-level service stops at logout and does not start at boot until you enable lingering for the service user: + + ```bash + sudo loginctl enable-linger + ``` + + See [Messaging Gateway](/user-guide/messaging/) for the service setup itself. + The same pattern works on Arch (the installer uses pacman with the same sudo-detection logic), Fedora/RHEL, and openSUSE — those distros don't support `--with-deps` at all, so an administrator always installs the system libraries separately. The relevant `dnf`/`zypper` commands are printed by the installer. --- diff --git a/website/docs/reference/cli-commands.md b/website/docs/reference/cli-commands.md index 59d280e26c8b9..c1d63a59cd4bd 100644 --- a/website/docs/reference/cli-commands.md +++ b/website/docs/reference/cli-commands.md @@ -1462,6 +1462,11 @@ Subcommands: | `archive` | Bulk-archive (soft-hide, no deletion) sessions matching the same filters as `prune`. Requires at least one filter. | | `stats` | Show session-store statistics. | | `rename ` | Set or change a session title. | +| `optimize` | Reclaim disk space: merge FTS5 index segments + VACUUM. Non-destructive — no session data changes. | +| `optimize-storage` | Migrate the full-text search index to the compact v23 external-content layout; on large databases this reclaims a large fraction of `state.db`. | +| `repair` | Repair a malformed `state.db` schema (e.g. `table messages_fts already exists`) so hidden sessions reappear; a backup is made first. | +| `recover` | Offline, non-destructive recovery of a damaged `state.db` into a separate clean database. | +| `retitle-skills` | Regenerate titles for sessions opened with a `/skill`, using what the user actually typed; lists changes unless `--apply` is passed. | ## `hermes insights` diff --git a/website/docs/user-guide/features/cron.md b/website/docs/user-guide/features/cron.md index b855f5e5ec5e9..338ed17946584 100644 --- a/website/docs/user-guide/features/cron.md +++ b/website/docs/user-guide/features/cron.md @@ -779,6 +779,8 @@ The referenced jobs' most recent completed outputs are injected above the prompt Jobs are stored in `~/.hermes/cron/jobs.json`. Output from job runs is saved to `~/.hermes/cron/output/{job_id}/{timestamp}.md`. +Job definitions are plain JSON on disk: they survive `hermes update`, gateway restarts, and machine reboots. A job that was mid-run during a restart resumes according to the attempt policy described in this page. + :::tip Ask the agent to manage jobs through the `cronjob` tool, `hermes cron edit`, or `/cron` — not by patching `jobs.json` directly. Direct edits can fail silently when [file write safety](../security.md#file-write-safety) blocks the path (for example when `HERMES_WRITE_SAFE_ROOT` is set), and the [file-mutation verifier](../configuration.md#file-mutation-verifier) footer is the authoritative signal that nothing was saved. ::: diff --git a/website/docs/user-guide/features/mcp.md b/website/docs/user-guide/features/mcp.md index 75e22e5695076..e9902c7914c3c 100644 --- a/website/docs/user-guide/features/mcp.md +++ b/website/docs/user-guide/features/mcp.md @@ -10,6 +10,10 @@ MCP lets Hermes Agent connect to external tool servers so the agent can use tool If you have ever wanted Hermes to use a tool that already exists somewhere else, MCP is usually the cleanest way to do it. +:::tip Coming from Claude Code? +The `mcpServers` block in your `~/.claude.json` maps to `mcp_servers` in Hermes' `config.yaml` — and `hermes import-agent claude-code` migrates it (along with skills and instructions) automatically. See [Import from Other Agents](../import-from-other-agents.md). +::: + ## What MCP gives you - Access to external tool ecosystems without writing a native Hermes tool first diff --git a/website/docs/user-guide/sessions.md b/website/docs/user-guide/sessions.md index 91a63a2bed4f2..2d7e36a52357c 100644 --- a/website/docs/user-guide/sessions.md +++ b/website/docs/user-guide/sessions.md @@ -60,7 +60,9 @@ into chat. :::tip Use `/compress` when a session gets long, `/new` for a fresh thread, and `hermes sessions prune` only when you want to delete old ended sessions from -storage. Compression reduces the active context; it is not a privacy delete. +storage. If `state.db` has simply grown large, start with the non-destructive +option first: `hermes sessions optimize` merges FTS5 index segments and +VACUUMs the database without touching any session data. Compression reduces the active context; it is not a privacy delete. Pass a name to `/new` (e.g. `/new payments-refactor`) to set the new session's initial title up front — useful for finding it later with `/resume <name>` or in the `/sessions` picker.