Skip to main content

Read-only health scanner for long-running Hermes Agent setups

Project description

Hermes Doctor

Hermes Doctor — Health Check CLI for Personal AI Agents

PyPI Python versions License CI

Linters check your code. Hermes Doctor checks your agent's mind.

A local, read-only annual physical for a long-lived personal Hermes Agent installation.

Hermes Doctor scans bloated memories, stale skills, reminder/cron drift, oversized sessions, broken local Markdown links, and runtime warnings — without modifying anything.

Hermes gets better as it remembers. But long-lived personal agents also accumulate entropy.

It started as a family physician's tool for treating a different kind of patient: my personal AI agent. Designed by someone who thinks in preventive checkups, not emergency surgery.

Early public preview. Useful, small, and intentionally conservative.

Non-goals

Hermes Doctor is deliberately small. The following are not going to happen:

  • ❌ No --fix mode, ever. The doctor writes the prescription; you go to the pharmacy.
  • ❌ No cloud service, dashboard, or telemetry. Reports are local-only.
  • ❌ No automatic memory deduplication, skill rewriting, or cron reconciliation.
  • ❌ No support for other agent frameworks (AutoGPT, LangChain, etc.) until Hermes itself is stable.
  • ❌ No generic Markdown linting — there are better tools for that.
  • ❌ No runtime dependencies in the core scanner. Stdlib only.

Who is this for?

Hermes Doctor is for people who run Hermes Agent as a long-lived personal agent and want to know when local state is getting messy:

  • people using Hermes memories and skills heavily
  • people relying on reminder / cron automation
  • people keeping Markdown-based personal state around an agent
  • people who want safe diagnosis before cleanup
  • people interested in personal agent observability and hygiene

What it checks

  • Markdown bloat and broken local links
  • Memory / skill size, duplication, and mutable project-fact candidates
  • REMINDERS.md vs hermes cron list consistency
  • Session file size
  • Recent runtime / gateway warning and error event counts
  • Domain scores and overall health score

Safety model

Hermes Doctor v1 is observational and read-only.

It does not:

  • edit files
  • delete files
  • deduplicate memories or skills
  • reconcile reminders
  • modify cron jobs
  • scan external project folders unless explicitly requested
  • send your local data anywhere

Reports redact paths, secret-like strings, and identifier-like strings on a best-effort basis. Do not publish reports from real personal deployments without reviewing them first.

Privacy

  • No telemetry.
  • No network calls, except local execution of installed hermes CLI commands.
  • Reports are generated locally.
  • Raw Hermes command output is excluded by default.
  • --debug-raw is for local debugging only and should not be used for public reports.
  • Redaction is best-effort, not a formal secret-scanning guarantee.

Install

Recommended (zero-install, ephemeral):

pipx run hermes-doctor --summary

Persistent install:

pipx install hermes-doctor

Or from source:

git clone https://github.com/samahn0601/hermes-doctor.git
cd hermes-doctor
python -m pip install -e .

Usage

# Full Markdown report
hermes-doctor

# Compact output for cron/watchdogs
hermes-doctor --summary

# Safe JSON output
hermes-doctor --json

# Write timestamped report and refresh <HERMES_HOME>/reports/health/latest.md
hermes-doctor --write-report

# Automation gate: exit 2 on critical findings
hermes-doctor --summary --fail-on critical

By default, Hermes Doctor scans only the Hermes home directory:

hermes-doctor --hermes-home ~/.hermes

External Markdown paths are opt-in:

hermes-doctor --include ./my-notes
hermes-doctor --include-project-hub

Raw Hermes command output is excluded by default. For local debugging only:

hermes-doctor --json --debug-raw

Example summary

Hermes Health: 100/100 (healthy)
Findings: critical=0 warning=0 info=3
Domains: markdown=100, memory_skills=100, reminder_cron=100, session_context=100, runtime_gateway=100
Reminder/Cron: ids=['r_0001']
Runtime: errors=0 warnings=0
Actionable: none

Example finding

Actionable:
- [warning] Memory/skill size warning (memory.size): <HERMES_HOME>/memories/notes.md size=84KB
- [critical] Active reminder missing cron job (reminder.cron_missing): r_0007

Hermes Doctor does not fix these automatically. It tells you what to inspect before you change state.

Scoring model

Hermes Doctor uses heuristic domain scores, not a formal proof of system health.

  • warning findings apply a small penalty
  • critical findings apply a larger penalty
  • the weakest domain is weighted heavily so one bad subsystem is not hidden by a good average
  • info findings do not reduce the score

Treat the score as a screening result, not a diagnosis carved in stone.

Limitations

  • Hermes Doctor is heuristic and may produce false positives or false negatives.
  • Hermes CLI output formats may change over time.
  • Redaction is best-effort; review real reports manually before sharing.
  • v1 is intentionally conservative and does not repair state.
  • This is not an official Hermes Agent project.

Development

python -m pip install -e .[dev]
python -m pytest
python -m ruff check .

Roadmap

  • v0.1 — read-only scanner (current)
  • v0.2 — golden fixture corpus + adversarial redaction tests + stable finding IDs (HD-MEM-001, HD-CRON-002) + analyzer status reporting + PyPI publication
  • v0.3 — dry-run "review candidates" suggestions, conditional on v0.2 trust. Never executable scripts. Still no silent mutation.
  • v1.0+ — boring, trusted, intentionally feature-frozen. Wins by credibility and restraint, not feature volume.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hermes_doctor-0.2.1.tar.gz (18.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hermes_doctor-0.2.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file hermes_doctor-0.2.1.tar.gz.

File metadata

  • Download URL: hermes_doctor-0.2.1.tar.gz
  • Upload date:
  • Size: 18.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hermes_doctor-0.2.1.tar.gz
Algorithm Hash digest
SHA256 14369274cdcce58e15f491c5fddc4b8ad50a38fab9280606b6942738f2ead5d2
MD5 986423b96fa20bd3a1d4fda74dc8cdec
BLAKE2b-256 4015a57a832939719005cdf1177090516688aa4aba981101fb21dcfa008c45a9

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_doctor-0.2.1.tar.gz:

Publisher: release.yml on samahn0601/hermes-doctor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hermes_doctor-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: hermes_doctor-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hermes_doctor-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ac90441768535d67bb2756f3353d4f0614c3bcb2e65dc8ac43412802fed7847e
MD5 098a3b64bc25a5375dc12cf16d646e39
BLAKE2b-256 75f32cc0a411168e7e891adcbfda39b694ab7d29a13a2b7b3f1b1bf092558076

See more details on using hashes here.

Provenance

The following attestation bundles were made for hermes_doctor-0.2.1-py3-none-any.whl:

Publisher: release.yml on samahn0601/hermes-doctor

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page