Skip to content
cccskills
FreePublished on GitHubEnglish overview

Hermes

Inspect a live Hermes sidecar's health, sessions, cron history, logs, and guard blocks. Trace what happened during a task, classify recurring failures, and check for updates using the sidecar's own records.

OriginalShow the original 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).

danielmiessler/LifeOS19,635 stars(GitHub 19,635 + cccskills 0)

Run score Not tested

See how to install

Good for

  • Checking whether Hermes and its channels are healthy
  • Tracing why a messaging task failed
  • Finding causes behind recurring task failures
  • Checking whether Hermes needs an update

Overview

What it does

This skill checks whether a running Hermes sidecar is healthy, which channels are available, and whether sessions load LifeOS settings. It examines task history, logs, and guard blocks to trace where a failure occurred and what caused it. It can group recurring failures and identify the configuration area responsible for a cause or fix. It also provides guidance for checking Hermes updates.

When it helps

Use it when a message or task sent through Hermes fails, when you want to check the sidecar’s status, or when you need to review scheduled-run history and blocks. It can also help sort out repeated failures.

Example requests

  • “Find out why the task I sent to Hermes failed.”
  • “Check Hermes health and whether it loaded LifeOS settings.”
  • “Classify the recent failures and summarize their causes.”

Notes

Diagnosis uses records from a running Hermes sidecar. The diagnostic checks do not change configuration or restart the sidecar. Updating Hermes is the operation in this skill that makes changes. If Hermes cannot be found, the skill reports it as absent.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Document check

AI checked the SKILL.md for operations that need care and for setup requirements. The score comes only from actually running the skill (hands-on test).

SafetyAre sending data, deleting files, and running commands disclosed?
BPartly lackingDiagnosis is non-mutating, but the Update intent changes the sidecar.
Easy setupDoes it need few tools or API keys, and are they documented?
AGoodIt specifies absent-sidecar handling and lists no extra diagnostic keys.

Not counted in the score. Rated by AI (OpenAI Codex) as of Oct 28, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (6)

  • SKILL.md7.4 KB
  • Intents/Status.md1.6 KB
  • Intents/Trace.md2.5 KB
  • Intents/Triage.md2.0 KB
  • Intents/Update.md5.0 KB
  • Setup.md4.3 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

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

IntentTriggerFile
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
FileRead when
Setup.mdfirst-time setup: installing and mounting the optional sidecar the skill observes, and a read-only check

Data & Config

The sidecar lives in $HERMES_HOME (default ~/.hermes); its mount config is LIFEOS/USER/CONFIG/hermes-trusted-domains.json and heartbeat.json. First-time setup is in Setup.md; without a sidecar the skill reports absent.

Gotchas

  • A "completed" run is not a successful run. Cron executions report completed and sessions end cron_complete even when every meaningful tool call inside was blocked or died on approval. Judge success from the trace, never from the execution status.
  • Use Observe.ts status as the soul-loaded check, never an ad-hoc system_prompt LIKE '[BLOCKED:%' query. When Hermes' safety scanner flags the persona file (SOUL.md) and does not load it, the session runs with no LifeOS constitution, identity, or skills routing, and nothing else about it looks wrong; the Update intent says how to read which pattern matched and decide whether the file or the pattern is at fault. A healthy gateway whose sessions all reject the soul is the worst state, because it looks fine. A blocked soul is the usual single upstream cause behind skill-routing failures: every downstream oddity in a trace (no skill routing, no identity, no output contract) usually follows from that one fact. Since the 2026-08-15 Hermes update the inline sessions.system_prompt column is blank and prompts live in the system_prompts hash store, so a raw query on that column reads green while the soul is blocked; Observe.ts resolves through the store. status --assert-lifeos exits 2 "unproven" when it saw no sessions or could not read the DB.
  • blocked.jsonl carries no session id. Guard blocks correlate to sessions by time window only; concurrent sessions can cross-attribute. The agent error log ([session_id] tags) is the authoritative per-session record.
  • Open every sidecar database read-only. state.db belongs to a live gateway; a stray write lock can wedge it. Observe.ts does this; ad-hoc sqlite3 must use file:...?mode=ro (and note the sqlite3 CLI sometimes refuses URI mode — prefer the tool).
  • Some guard blocks are by design. Voice-notification denies (*31337/notify* etc.) enforce the no-terminal-no-voice rule for sidecar sessions — they are policy working, not a defect. Triage separates by-design blocks from false positives before recommending policy changes.
  • Credential files are listed, never read. .env and auth.json appear in reports as size+mtime only — same rule the guard enforces on the sidecar.
  • Config blocks reload differently: approvals are mtime-cached (live), the model block is read at gateway start. Changing model.default does nothing to running channels until the gateway restarts (launchctl kickstart -k on its service label — never Hermes' in-process restart, which spawns the KeepAlive restarter loop). Verify the switch from the next session's model column, not from the config file.
  • Channel sessions pin their system prompt at creation. A long-lived iMessage/chat session keeps the soul it was born with — soul fixes and doctrine changes only reach it after a session boundary (/new from the user, or the session_reset policy). A session can look soul-loaded while running a weeks-old soul.
  • An upstream update can silently re-block the soul. Hermes scans SOUL.md with its threat-pattern library at every session start; an update that adds patterns can reject a soul that scanned clean yesterday, and nothing visible changes except every session running without its constitution. Mount.ts --check re-runs their scanner and the --assert-lifeos Bunker row watches live sessions — the Update intent's post-update battery exists because of this class.

Examples

Example 1: A task sent from a messaging channel failed

User: "My iMessage task to Hermes failed again — what happened?"
→ Trace intent
→ Returns: what was asked, every wall it hit (guard block / approval / soul state), where it died, the fix

Example 2: Recurring failures

User: "Hermes tasks keep failing — triage it"
→ Triage intent
→ Returns classified failure report with per-class root cause and concrete fix, worst first

Example 3: Health check

User: "Is the sidecar healthy?"
→ Status intent
→ Returns one-screen report: process state, whether sessions actually load LifeOS, mount drift, top failure classes

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

AnnualReports

FreeSummary

Find and fetch vendor cybersecurity reports, then compare their findings on topics such as ransomware, breaches, cloud security, and AI. Analyses identify the reports consulted and cite each figure by vendor, year, and report, including where sources disagree.

  • Find reports in a cybersecurity topic area
  • Fetch a specific vendor report
  • Compare ransomware findings across reports
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Compare a component's own design needs with the goals of the larger system through three structured passes. The result identifies conflicts, recommends an appropriate scope, and assesses whether the proposed design fits the whole.

  • Choosing between a service, a library, and inline code
  • Comparing feature requests with product goals
  • Checking how new components fit an existing system
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Aphorisms

FreeSummary

Find quotes that fit a text’s themes, with attribution and a short reason for each suggestion. Add sourced quotes, research thinkers, and organize a quote collection by theme and usage history to avoid repetition.

  • Finding a fitting quote for a newsletter
  • Saving sourced quotes without duplicates
  • Researching a thinker’s quotes by theme
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

Art

FreeSummary

Create blog illustrations, technical diagrams, comparisons, comics, and icons through workflows tailored to each format. The skill guides composition, color, and model selection, then stages generated images for review before they are used in a project.

  • Creating blog header illustrations
  • Explaining a system with a technical diagram
  • Visualizing comparisons and timelines
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArtDirection

FreeSummary

Assess the visual quality of images, films, slides, and site captures against a brief and craft criteria. Two vision judges score the work and rank defects, guiding bounded revision; delivery is gated on a passing critique, with human calibration labels recorded separately.

  • Reviewing a render and listing the most important visual defects
  • Iterating on a film or slide deck until it meets a defined bar
  • Checking whether an image reads as professional
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

ArXiv

FreeSummary

Find arXiv papers by topic, research category, or paper ID. Retrieve titles, authors, abstracts, and links, check new submissions, and add AlphaXiv's AI-generated overviews when available to help decide which papers to read.

  • Checking new AI and machine learning papers
  • Finding papers on a specific research topic
  • Looking up a paper by its ID or arXiv URL
danielmiessler/LifeOS19.6KUpdated Oct 28, 2026

See all skills by danielmiessler

Report a problem with this skill