HERMES AGENT MANUAL
Autonomous Cron & Background Loops
Schedule background workflows, recurring radar monitoring, and automated event notifications with Hermes native scheduler.
Architecture: Native, Local-First Scheduling
Hermes includes a native background scheduler that executes recurring workflows without external cloud cron services, webhooks, or third-party SaaS subscriptions. Scheduled tasks operate as autonomous agent executions running directly against your local environment.
Job specifications are stored in ~/.hermes/jobs.json, while durable run history, attempt logs, and telemetry are tracked in ~/.hermes/cron/executions.db.
Managing Scheduled Jobs via the CLI
The hermes cron command suite provides complete job lifecycle control:
# List all active and paused cron jobs $ hermes cron list # Create a recurring radar job using natural language $ hermes cron create "every 2h" "Check production API endpoints and alert on errors" --name "health-monitor" --deliver telegram # Create a daily morning summary using standard 5-part cron syntax $ hermes cron create "0 8 * * 1-5" "Summarize unread GitHub notifications and pull requests" --name "morning-brief" # Execute a scheduled job immediately without waiting for interval $ hermes cron run health-monitor # Pause and resume jobs $ hermes cron pause health-monitor $ hermes cron resume health-monitor # Inspect execution logs and status $ hermes cron runs $ hermes cron status
cronjob tool. You can say: "Check my disk usage every morning at 7am and message me on Discord", and the agent will register the job automatically.Delivery Targets & Dispatch Routing
When a scheduled job completes, Hermes can route the resulting summary, analysis, or alert to your preferred communication channel using the --deliver flag:
--deliver local: Prints execution output to terminal or local log file only.--deliver telegram: Dispatches output directly to your configured Telegram bot or channel.--deliver discord: Forwards markdown results to a Discord webhook or bot channel.--deliver signal: Sends end-to-end encrypted alerts via Signal messenger.--deliver <platform>:<chat_id>: Routes execution output to an explicit destination thread or room.
Script-Only Watchdog Jobs (--no-agent)
Not every task requires calling an LLM. For deterministic shell checks, log rotations, or database backups, you can run script-only jobs that execute local code directly and only wake up the LLM if an error or anomaly is detected:
# Run a fast local script without invoking LLM tokens unless exit code != 0 $ hermes cron create "every 15m" --script "/home/user/scripts/check_services.sh" --no-agent --name "fast-ping"
Diagnostics & Health Checks
To verify that background jobs are healthy, dependencies are satisfied, and lockfiles are clean, run:
$ hermes cron doctor [✓] Scheduler daemon running (PID 41209) [✓] jobs.json readable and valid syntax (3 active jobs) [✓] SQLite executions.db responsive (12ms read latency) [✓] No stale .fire-*.lock files detected [✓] Notification gateways connected (Telegram: OK)
Field Receipts & Common Failure Modes
1. Stale Lockfiles After System Reboots
Symptom: Scheduled job shows status LOCKED or skips scheduled intervals.
Root Cause: If a host machine undergoes an abrupt power cycle or kernel freeze while a job is actively running, Hermes may leave behind a .fire-<job_id>.lock file in ~/.hermes/cron/ to prevent duplicate concurrency.
Remediation: Run hermes cron doctor to detect and safely clear stale locks, or manually inspect~/.hermes/cron/ and remove orphan lockfiles after verifying the PID is no longer active.
2. Running Hermes Cron as a Persistent User Service (systemd)
To ensure background cron jobs execute 24/7 without requiring an open terminal window, deploy a lightweight user systemd service:
[Unit] Description=Hermes Agent Background Scheduler Daemon After=network.target [Service] Type=simple ExecStart=%h/.local/bin/hermes cron status --daemon Restart=on-failure RestartSec=10 Environment="PATH=%h/.local/bin:/usr/local/bin:/usr/bin:/bin" [Install] WantedBy=default.target
$ systemctl --user daemon-reload $ systemctl --user enable --now hermes-cron.service
3. Durable Memory Across Runs (hermes cron notepad)
Scheduled jobs often need to track what changed since the last execution. Hermes provides a durable key-value store for each job via hermes cron notepad:
# Inspect current state stored by a job $ hermes cron notepad get health-monitor # Set initial tracking benchmark $ hermes cron notepad set health-monitor last_seen_incident "INC-9012"
Need Help Architecting Production Daemons?
Setting up 24/7 autonomous monitoring loops with error escalation, Discord/Telegram notification pipelines, and zero-trust systemd daemons is covered in detail during a Hermes Launch Lab 1-on-1 session. We pair with you directly to leave your workstation running a bulletproof autonomous agent stack.