Cron & Automation

Cron & Automation

Hermes runs scheduled jobs via a cron scheduler built into the gateway process. Jobs can run LLM-driven prompts or script-only watchdogs, delivering results to Discord, CLI, or other channels.

Active Cron Jobs

Job Schedule Type Deliver To
PMO-Kanban-Dispatcher Every 15 min LLM agent local
Hermes Service Watchdog Hourly Script-only local
Hermes Playground Daily Backup 8:00 AM daily LLM agent Discord
Claude Skills Daily Report 8:30 AM weekdays LLM agent local
Monthly Ollama Model Review 9:00 AM 1st/15th LLM agent local
Hermes Config Backup to Forgejo 3:00 AM Sundays LLM agent local
Snoopy Research Cleanup 3:00 AM daily Script call local
Session Length Guard Every 120 min Script-only origin
Vault Daily Health 6:00 AM daily LLM agent origin
Vault Weekly Digest 8:00 AM Mondays LLM agent origin
Vault Wiki Curator 7:00 AM Wednesdays LLM agent origin

Gateway Dependency

The cron scheduler runs inside the Hermes gateway process. If the gateway isn’t running, no cron jobs fire — not even manual cronjob action='run' triggers. Always verify the gateway is running:

hermes gateway status
lsof -i :8642   # gateway API port

On macOS 26+ where launchctl is unreliable, the gateway must be started as a detached daemon (see macos-detached-daemon skill).

Script-Only Jobs

Script-only jobs (no_agent: true) skip the LLM entirely — the scheduler just runs the script and delivers stdout. This means zero token cost for watchdogs and health checks. Empty stdout = silent (no delivery). Non-zero exit = error alert.

Script path pitfall: The script field resolves relative to ~/.hermes/scripts/. Setting script: "scripts/my-script.py" results in the double path ~/.hermes/scripts/scripts/my-script.py. Use just the filename: script: "my-script.py".

Cron Job Quality Pitfalls

LLM-driven cron jobs can produce low-quality output:

Cron Prompt Security

The cron prompt scanner can block assembled prompts containing literal trigger strings (e.g., security keywords from skill documentation). This caused the Playground Daily Backup job to be blocked when the nginx-site-admin skill’s docs contained certain trigger words. Fix: sanitize skill content in cron prompts and add guardrail rules.

Delivery Channels