Phase 2: memory, session search, git worktree configured Phase 3: Telegram gateway connected, DM pairing approved Phase 4: custom skills created (aws-diagnostics, jira-query, confluence-search, bitbucket-pr)
2.9 KiB
2.9 KiB
Hermes Agent: Automation (Cron)
Capabilities
Hermes has a full cron system built into the gateway daemon. Everything below is available through the cronjob tool — the agent can set it up via conversation.
Job Types
| Type | Schedule | Example |
|---|---|---|
| One-shot | Relative delay | 30m, 2h |
| Recurring | Interval | every 30m, every 2h |
| Recurring | Cron expression | 0 9 * * * |
| One-shot | ISO timestamp | 2026-03-15T09:00:00 |
| No-agent mode | Any schedule | Script-only, zero LLM cost |
Delivery Targets
origin → Back to where the job was created
local → Save to ~/.hermes/cron/output/
telegram → Telegram home channel
discord → Discord
slack → Slack
email → Email
all → Every connected platform
"telegram:123:456" → Specific chat + thread
No-Agent Mode (Script-Only)
For watchdogs, disk checks, health pings — zero LLM cost:
# Script at ~/.hermes/scripts/check-disk.sh
# Agent skips this entirely — just runs script, delivers stdout
hermes cron create "every 5m" --no-agent --script check-disk.sh --deliver telegram
- Empty stdout → silent tick (no delivery)
- Non-zero exit → error alert delivered
{"wakeAgent": false}→ silent tick
Skill-Backed Cron Jobs
Load one or more skills before running the prompt:
cronjob(action="create", skill="blogwatcher",
prompt="Check configured feeds, summarize anything new.",
schedule="0 9 * * *", name="Morning Feeds")
Job Chaining
cronjob(action="create", name="daily-digest",
schedule="every day 7am",
context_from=["ai-news-fetch", "github-prs-fetch"],
prompt="Write the daily digest using the outputs above.")
Job Lifecycle
hermes cron list
hermes cron pause <id>
hermes cron resume <id>
hermes cron run <id>
hermes cron edit <id> --schedule "every 4h"
hermes cron remove <id>
Provider Recovery for Cron
Cron jobs inherit fallback_providers and credential pool rotation. Per-job provider override:
cronjob(action="create", schedule="every 2h",
provider="openrouter", model="google/gemini-3-flash-preview",
prompt="Check server status")
Scheduled Task (Chat)
/cron add "every 1h" "Summarize new feed items" --skill blogwatcher
Key ngn-agent Use Cases
| Use Case | How |
|---|---|
| Daily report | Cron + skill → delivered to Telegram |
| Stale session cleanup | Cron + no-agent script to list, archive old sessions |
| Jira summary | Cron + MCP Jira skill → delivered to Telegram |
| Infra health check | Cron + no-agent script, deliver only on error |
| S3 cleanup monitoring | Cron + AWS CLI script, wakeAgent only when issue found |
ngn-agent should NOT build
- Custom scheduler (use Hermes cron)
- Report delivery system (use cron delivery targets)
- Script execution (use no-agent mode)