Hermes Agent is not only a chat interface. One of its highest-leverage features is the built-in cron scheduler: you can ask Hermes to run a job tomorrow morning, every weekday, every hour, or on a normal five-field cron expression, then deliver the result to Telegram, Discord, email, or another configured channel.
That changes the shape of an AI assistant. Instead of waiting for you to remember the task, Hermes can wake up, gather context, make a decision, write the report, and send the output while you are doing something else.
If you are comparing cron-style agent automation to workflow builders, see Hermes Agent vs n8n. The short version: n8n is better for deterministic app plumbing; Hermes cron jobs are better when each run needs judgment, memory, tools, and a verified written result.
Quick answer#
Hermes Agent cron jobs are scheduled AI runs. Use them when a task needs to happen repeatedly and should end with a concrete deliverable: a report, alert, commit, customer-support summary, market scan, or published page.
Use an LLM-driven cron job when the task needs judgment. Use no_agent script-only mode when a deterministic script can decide whether to stay silent or print an alert. For most business automations, the safest pattern is: write a self-contained prompt, attach only the needed skills/toolsets, set the right workdir, and require verification before the job reports success.
If you are new to Hermes, first install Hermes Agent, then use the cron scheduling feature for recurring work and Telegram delivery for daily reports.
What Hermes Cron Jobs Are#
A Hermes cron job is a scheduled agent run. It has four important pieces:
- Schedule — natural language like
every weekday 9am, a duration like30m, or a cron expression like0 9 * * *. - Prompt — the self-contained instruction the future agent run should follow.
- Delivery target — where the result goes, such as the original chat, a Telegram home channel, a Discord channel, or local output files.
- Optional runtime controls — skills, toolsets, scripts, model overrides, workdir, and whether the job should run as an LLM agent or as a script-only watchdog.
The key detail: scheduled runs execute in fresh sessions. They do not automatically inherit the context of the chat where you created them, so the prompt must include the full job description, relevant paths, output format, and success criteria.
Two Modes: Agent Jobs vs Script-Only Watchdogs#
Hermes supports two useful cron patterns.
1. LLM-driven cron jobs#
Use this when the task needs judgment. Examples:
- Research a market every morning and summarize only meaningful changes.
- Review recent GitHub issues and decide which ones are urgent.
- Check competitor pages and turn differences into a short action memo.
- Draft a blog post from current release notes and commit it to a website repo.
In this mode, the scheduler starts an agent with the prompt, tools, skills, and working directory you configured. The agent reasons, calls tools, and produces a human-readable final answer.
2. no_agent script-only jobs#
Use this when the logic is deterministic and the script itself can print the exact message to deliver. Examples:
- Disk usage watchdog.
- API health checker.
- Price threshold alert.
- Build-status monitor.
- Feed poller that stays silent unless something changed.
In script-only mode, Hermes runs the script and delivers non-empty stdout verbatim. Empty stdout means silent success. That is perfect for watchdogs: no spam when nothing happened, immediate alert when a threshold trips.
Why Cron Is Different From Reminders#
A reminder says, “Remember to check this.” A Hermes cron job can check it for you.
For example, a normal reminder might say: “At 9am, look for content ideas.” A useful Hermes cron job says:
Every day at 9am, inspect the Hermes Agent repo changelog, recent commits, GitHub issues, Discord notes, and existing website content. Pick one publishable topic, write a new SEO article, add it to /Users/antoine/work/agent-hermes/src/data/blog-posts.json, run npm run build, commit, push, and send the live URL plus verification notes.
That is a production job, not a nudge. The job definition includes the source of truth, publishing path, build command, and delivery format.
A Good Daily Content Cron Prompt#
For website publishing, make the future run impossible to misunderstand:
Daily Hermes Agent website content job. Repository: /Users/antoine/work/agent-hermes. Site: https://hermes-agent.ai/.
Goal: publish one new useful page or article every run, not merely generate a report.
Workflow:
1. Pull latest main.
2. Inspect recent Hermes Agent release notes, commits, issues, docs, and existing site data.
3. Choose one topic that is not already covered and has search intent.
4. Add or update the relevant JSON content source under src/data/.
5. Run npm run build.
6. Commit and push.
7. Verify the live URL or report the deployment blocker with exact command output.
Final message: live URL, topic, files changed, tests run, and next recommended topic.
Notice the phrase “publish one new useful page or article every run.” Without that, a cron job can accidentally become a research report generator. For content operations, the deliverable is the page.
Copy-Paste Cron Job Patterns#
Here are practical patterns to start from.
Daily executive brief#
Every weekday at 8am, review my configured email, calendar, GitHub notifications, and important project notes. Send a concise Telegram brief with: today's meetings, urgent messages, blocked projects, and the three highest-leverage actions.
Website publishing job#
Every morning, inspect the website repo, recent product changes, search-intent backlog, and existing articles. Publish one useful SEO page, run formatting/interlinking/build checks, commit, push, and send the live URL plus verification output.
Silent watchdog#
Every 15 minutes, run the health-check script. If everything is healthy, print nothing. If an endpoint fails twice in a row, print a short alert with the service name, failing URL, status code, and suggested first command to debug it.
These examples are intentionally specific. A vague scheduled prompt creates vague reports. A production cron prompt names the source of truth, desired output, verification steps, and delivery channel.
Delivery Targets Matter#
Cron delivery can be sent to the origin conversation, a home channel, or an explicit platform target. For important daily business workflows, explicit delivery is safer than relying on the origin chat.
Good examples:
deliver: telegram— send to the configured Telegram home channel.deliver: origin— send back to the chat where the job was created.deliver: telegram:<chat_id>:<thread_id>— send to a specific Telegram group topic.
If a daily report is important, pin it to the exact destination and verify the next run.
Use workdir for Real Projects#
For repository work, set the cron job working directory to the repo path. If you are setting up the machine first, start with the Hermes Agent install guide so the scheduler can run continuously. That lets Hermes load project-specific instructions from files like AGENTS.md or CLAUDE.md, and ensures terminal/file tools start from the right root.
For a Next.js SEO site, that means the scheduled agent sees the project rules before editing, runs commands in the correct directory, and does not accidentally publish to a similarly named repo.
Verification Checklist#
A good scheduled publishing job should verify all of this before it reports success:
- The new slug exists in the source data.
- The site builds locally.
- The change is committed and pushed.
- The sitemap includes the new URL.
- The live page returns a 200 after deployment.
- The final Telegram/Discord message includes the URL, not just “done.”
For daily content operations, “script refreshed successfully” is not success. “New page is live at this URL” is success.
Common Failure Modes#
The job only researches#
Fix: write the prompt with a hard deliverable: publish one page, run build, push, verify.
The job writes content but never ships#
Fix: include commit/push/deploy verification in the prompt and give the job terminal/file tools plus the repo workdir.
The job sends to the wrong place#
Fix: use an explicit delivery target, especially for Telegram group topics.
The job silently stops after a few runs#
Fix: set repeat to forever or a very high repeat count for ongoing operations.
The script prints noise every day#
Fix: use no_agent only for deterministic watchdogs. For editorial work, use an LLM-driven cron job because the task requires judgment and writing.
Best Uses for Hermes Cron#
Hermes cron is strongest when the work has a clear recurrence and a clear deliverable:
- Daily SEO publishing.
- Weekly competitor intelligence.
- Morning engineering triage.
- Scheduled customer-support summaries.
- Market or GitHub issue monitors.
- Personal assistant routines: calendar, email, travel, reminders, errands. For hosted operations, FlyHermes is the commercial path when you do not want to maintain the runtime yourself.
The point is not to schedule more notifications. The point is to schedule completed work.
FAQ#
Can Hermes cron jobs use tools? Yes. LLM-driven cron jobs can use the enabled toolsets you configure, such as web, terminal, file, browser, or GitHub-related tools.
Can a cron job run without the LLM?
Yes. Use script-only no_agent mode when stdout is the final message and no reasoning is needed.
Should daily content jobs use no_agent?
Usually no. Publishing content requires topic selection, judgment, writing, tests, and deployment verification. That should be an agent job.
What schedule format should I use for daily jobs?
Use 0 9 * * * for 9am daily, or natural language like every day at 9am when creating from chat.
What counts as success? For publishing: a committed change, a passing build, a pushed branch or deploy, and a live URL. Anything less is an incomplete automation.