# Hermes

Hermes sidecar observability: health, failure triage, cron, guard blocks, logs, traces.

- Repository: https://github.com/danielmiessler/LifeOS (19669 stars)
- Category: Engineering
- License: MIT
- Last updated: 2026-10-28
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add danielmiessler/LifeOS --skill Hermes -g -a claude-code -y`
Codex: `npx skills add danielmiessler/LifeOS --skill Hermes -g -a codex -y`
Cursor: `npx skills add danielmiessler/LifeOS --skill Hermes -g -a cursor -y`
Gemini CLI: `npx skills add danielmiessler/LifeOS --skill Hermes -g -a gemini-cli -y`

## Description

Hermes sidecar observability: health, failure triage, cron, guard blocks, logs, traces. USE WHEN hermes, sidecar, hermes failed, hermes task failed, iMessage task failed, message task failed, why did hermes fail, hermes not calling LifeOS, hermes status, hermes health, trace hermes, hermes session, hermes logs, hermes cron, guard blocks, triage hermes, sidecar broken, update hermes, upgrade hermes, is hermes up to date, keep hermes updated. NOT FOR mounting (LIFEOS/HERMES/Mount.ts), LifeOS services (Services.ts), messaging (the communication skill).

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Hermes

Observability over a mounted Hermes sidecar. The sidecar keeps its own records (session store, cron execution history, error logs, guard audit trail), and this skill turns them into answers: is it healthy, what failed and why, and exactly what happened inside one task.

Everything runs against the live install at `$HERMES_HOME` (default `~/.hermes`) through deterministic tools in `LIFEOS/HERMES/`: `Observe.ts status|failures|sessions|trace` (the aggregator: sessions, failure classes, end-to-end traces), `Health.ts` (process health: up/degraded/flapping/down/absent, per-channel state), `LogAnalysis.ts [--days N]` (guard audit trail: hot rules, retry loops, taint findings) and `Mount.ts --check` (identity/config drift, report-only). Diagnosis mutates nothing: no config writes, no restarts, no cron edits. The Update intent is the one place the sidecar changes. Fixes route through `Policy.ts` + `Mount.ts` (the mount owns config), never hand-edits.

## Ideal State

- Every answer about the sidecar is grounded in its own records through the `LIFEOS/HERMES/` tools, and success is judged from traces, never from an execution status.
- Whether sessions actually load the LifeOS soul is always answered, and a blocked soul leads any report it appears in.
- Every failure or fix names its owner (`Policy.ts` or soul sources plus a re-mount, the approval allowlist, or upstream Hermes) and the sidecar is never mutated by a diagnosis.

## Intent Routing

| Intent | Trigger | File |
|--------|---------|------|
| **Status** | "hermes status", "is hermes healthy", "is the sidecar running LifeOS" | `Intents/Status.md` |
| **Triage** | "why do hermes tasks fail", "hermes failures", "triage hermes" | `Intents/Triage.md` |
| **Trace** | "trace that task", "what happened to my message", "show me that hermes session" | `Intents/Trace.md` |
| **Update** | "update hermes", "upgrade hermes", "is hermes up to date" | `Intents/Update.md` |

The rest: https://github.com/danielmiessler/LifeOS/blob/HEAD/LifeOS/install/skills/Hermes/SKILL.md
