Hermes Agent

AI Agent Cron Jobs with Hermes Agent: Scheduling Real Work Without Breaking Your Setup

·AI agent cron jobscronautomationscheduled agentstelegramseo

Schedule real work with Hermes Agent cron jobs: choose LLM-driven vs script-only mode, pin delivery targets to Telegram or Discord, avoid provider rate limits, verify outcomes with live URLs, and know when to let FlyHermes own uptime instead of maintaining the gateway yourself.

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#

The latest GSC snapshot shows hermes cron job already surfacing the schedule-tasks page around position 8.5, while Discord evidence has 146 cron/goals/Kanban threads. This article stays intentionally focused on scheduled agent work: job mode, delivery, verification, rate limits, and uptime. It does not bundle Telegram, Discord, MCP, or dashboard keywords except where those systems are part of making a scheduled job actually deliver.

Use Hermes cron for scheduled work that needs judgment, writing, research, browser/tool use, or human-readable delivery. Use script-only no_agent=true jobs for deterministic monitors and backups. In both cases, pin the profile, workdir, tools, and delivery target, then require a concrete success condition such as a live URL, sent report, saved file, or passing test. The Hermes Web UI/dashboard can inspect cron/profile/gateway state and its browser Chat tab can help operators debug the local TUI, but delivered output is still the success proof.

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.

Diagram: scheduled runs, lifecycle events, and delivery channels.

What Hermes Cron Jobs Are#

A Hermes cron job is a scheduled agent run. It has four important pieces:

  1. Schedule — natural language like every weekday 9am, a duration like 30m, or a cron expression like 0 9 * * *.
  2. Prompt — the self-contained instruction the future agent run should follow.
  3. Delivery target — where the result goes, such as the original chat, a Telegram home channel, a Discord channel, or local output files.
  4. 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.

A Safe Production Cron Checklist#

Before turning a scheduled agent run into a daily business workflow, make these choices explicit:

  • Profile: which Hermes profile owns the model keys, skills, memory, tools, and platform tokens?
  • Workdir: which repository or folder should the future run start from?
  • Mode: LLM-driven agent job for judgment, or no_agent=true script-only job for deterministic monitors?
  • Delivery: exact Telegram chat/topic, Discord channel/thread, email, or local file path. Avoid vague origin delivery for important jobs.
  • Success condition: live URL, committed file, passing test, sent report, or silent no-op. “I ran” is not enough.
  • Failure behavior: whether the job should retry, stay silent, alert only on deltas, or report every run.

This distinction matters because Discord community demand around cron, goals, and Kanban is usually not about syntax. It is about reliability: people want unattended work without surprise provider spend, broken delivery, or ambiguous “success.” The Hermes Dashboard/Web UI can help inspect active cron jobs and gateway status, while gateway troubleshooting covers the delivery side when Telegram or Discord stops responding.

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. If a scheduled job calls MCP tools, read the MCP security risks guide first and keep unattended write access narrowly scoped.

Cron job examples by outcome#

A useful Hermes cron job starts from the outcome, not from the schedule. Pick the shape that matches the work:

  • Daily report: ask Hermes to gather sources, summarize what changed, and send the result to Telegram or Discord. Success means the report was delivered to the exact chat or channel.
  • Publishing job: ask Hermes to update a page, run tests, deploy, and verify the live URL. Pair this with the Hermes Web UI dashboard so the active profile, tools, cron state, and gateway delivery are visible.
  • Quiet monitor: use a script-only job when the script can decide whether anything changed. Success means silence when nothing changed and a concise alert only when a threshold is crossed.
  • Gateway health check: schedule a small check that verifies the long-running service and sends one proof message. If delivery fails, use the gateway troubleshooting guide before rotating tokens.
  • Repository maintenance: schedule a weekly dependency, documentation, or internal-link pass from the correct project workdir, then require a clean git diff, passing tests, and a pushed commit.

The important distinction is that Hermes cron is not a reminder app. A reminder tells you to do the work. A Hermes cron job should do the work, verify it, and report the proof.

Copy-paste safe cron templates#

Use these as starting prompts inside hermes cron create, then edit the project path, delivery target, and success condition.

LLM-driven publishing or research job#

Run from /path/to/project. Inspect current evidence before writing. Ship one concrete improvement, run the relevant tests, verify the live result, and report the URL plus command output. If the result is not live and verified, do not call the job successful.

Script-only silent watcher#

Run the configured script. Print nothing when there is no meaningful change. Print one concise alert only when the threshold is crossed. Never spend model calls for deterministic checks.

Gateway delivery smoke test#

Check the active Hermes profile, gateway status, provider health, and the exact Telegram/Discord delivery target. Send a short proof message only after the checks pass. If delivery fails, include the failing layer and the next command to run.

These templates deliberately include verification language because scheduled jobs run when you are not watching them. Without a success condition, a cron can produce a plausible report while failing to deploy, deliver, or alert.

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.

Scheduled jobs need clean memory boundaries#

Cron jobs are only reliable when the job runs in the intended profile with the intended memory, skills, and provider config. Recent context and memory support threads show why a daily job should not depend on a messy interactive session. For recurring work, keep durable facts in memory, procedures in skills, and debug recall failures with the memory/context troubleshooting checklist.

Provider reliability is part of this workflow too. If setup fails because credits, API keys, rate limits, or model switching are unclear, use the Hermes Agent model provider costs guide to choose a primary model lane, a cheaper routine-work lane, and a local or hosted fallback before blaming the rest of the stack.

If cron is part of an always-on assistant, start from the Hermes 24/7 AI agent setup guide so the runtime, provider credits, gateway delivery, dashboard checks, and script-only jobs are designed before alerts depend on them.

The safe cron pattern: scheduled work, not scheduled hope#

A good Hermes cron job has a success condition the agent can prove. “Check the website” is vague. “Open the production URL, confirm the title and CTA exist, run the mobile no-overflow check, then send the live URL” is a real scheduled-work contract.

Use this pattern before connecting a cron job to Telegram delivery, Discord delivery, GitHub, or a publishing repo:

  1. Write a self-contained prompt. Cron runs do not inherit the full original chat. Include the repo path, data sources, success condition, and delivery target.
  2. Pick the right mode. Use LLM-driven cron for judgment-heavy tasks; use no_agent=true script-only jobs for deterministic monitors that should stay silent unless a threshold trips.
  3. Pin the environment. Set the profile, working directory, toolsets, skills, model/provider, and channel delivery explicitly.
  4. Verify the output path. For reports, check the target chat/topic. For site changes, run tests, build, push, and live-rendered QA. For alerts, confirm the quiet path prints nothing.
  5. Watch costs and retries. Scheduled agents can call models, tools, browser sessions, and auxiliary models. Pair cron with the provider fallback guide and the dashboard/Web UI so failures are visible.

If the job must stay online while your laptop sleeps, pair it with the 24/7 Hermes setup guide, VPS deployment guide, or the managed FlyHermes path.

Cron delivery depends on gateway health#

A scheduled job can finish successfully and still fail the user-visible outcome if delivery is pointed at a stale Telegram topic, Discord channel, or stopped gateway. For important recurring jobs, pin the delivery target and pair cron QA with the gateway troubleshooting checklist, especially after provider changes, Docker rebuilds, or service restarts.

Dashboard checks for scheduled jobs#

The dashboard is useful for cron jobs, but it should not be the success condition. Use the Hermes Agent Dashboard/Web UI to confirm that the right profile, provider, skills, tools, memory, gateway, and delivery target are active. Then verify the actual artifact: a sent Telegram message, a Discord post, a committed file, a live URL, or a quiet monitor that emitted nothing because no threshold was crossed.

A safe scheduled-work checklist:

  1. Run hermes cron list and confirm the schedule, timezone, profile, workdir, toolsets, and delivery target.
  2. Open hermes dashboard --no-open --port 9120 privately on a server only when you need a visual check.
  3. Require the prompt to state the deliverable, not just “send a report.” For publishing jobs, the success condition is a live page plus QA, not a draft.
  4. Use script-only no_agent=true cron for deterministic monitors and LLM-driven cron for editorial, research, or judgment-heavy work.
  5. After a provider 429/402/rate-limit incident, either reduce the job or move deterministic parts into a script so the scheduler does not silently fail every day.

Community evidence backs this exact split: the May 2026 Discord scrape grouped 146 cron/goals/Kanban threads beside 122 messaging-platform threads and 87 dashboard/UI threads. People do not only ask “can Hermes schedule?” They ask whether the scheduled run actually reached Telegram, Discord, a file, or a production URL without breaking the setup.

Frequently Asked Questions

What is an AI agent cron job?

It is a scheduled agent run that can use memory, tools, files, browser automation, web search, and messaging delivery to produce a verified result at a planned time.

When should I use Hermes cron instead of normal cron?

Use Hermes cron when each run needs judgment, writing, research, tool use, or a human-readable decision. Use normal cron or Hermes no_agent mode when a deterministic script can decide everything.

What is the safest way to schedule Hermes jobs?

Make the prompt self-contained, pin workdir/profile/toolsets/delivery, require a concrete success condition, and verify the final artifact or live URL before sending success.

Can Hermes cron jobs publish content or commit code?

Yes, if the job has the right permissions and success criteria. For publishing jobs, require tests, build verification, commit/push, live URL checks, and rendered mobile QA before reporting success.

Why did my scheduled Hermes job not send anything?

Check whether it was a quiet script-only job, whether the delivery target was pinned, whether the provider hit rate/credit limits, and whether the gateway was actually running.

Should daily monitors use a full agent run?

Not always. If a deterministic script can check the condition and produce the output, use a script-only Hermes cron job with no_agent=true. Save full agent runs for judgment, writing, research, or tool-using workflows.

Should a Hermes cron job use origin delivery or an explicit channel?

Use an explicit Telegram topic, Discord channel, email, or file path for important recurring jobs. Origin delivery is convenient for tests but fragile for durable business workflows.

Can Hermes cron jobs publish pages or code changes automatically?

Yes, if the prompt is explicit about the repository, workdir, tests, deployment path, and live verification. A publishing cron should not stop at a draft or report; it should ship, test, deploy, and verify the live URL before reporting success.

When should a Hermes cron job use script-only no_agent mode?

Use no_agent mode when a deterministic script can decide whether anything changed, such as backups, index checks, price thresholds, or service health monitors. It saves model calls and keeps quiet jobs quiet.

How do I keep scheduled Hermes reports from going to the wrong place?

Pin the delivery target, profile, and workdir in the job. After the first run, verify the exact Telegram topic, Discord channel, email, or file path instead of assuming origin delivery picked the right destination.

Why does my Hermes cron job fail with 'hermes_plugins.discord_platform.adapter: no bot token configured'?

That error means the Discord bot token is not in the Hermes profile running the cron job. Check that the gateway process uses the same profile as the cron job, that the Discord token is in that profile's .env, and that the Hermes profile running the gateway has 'discord' in its enabled platform list. If you are using separate profiles for CLI and the bot, the cron job delivery must go through the profile that owns the Discord token, not the CLI profile. Use the gateway troubleshooting guide to verify the Discord adapter state before assuming the cron job is broken.

Why does Hermes crash with an AttributeError about 'DiscordAdapter' after an update or restart?

That usually means the gateway process is running old in-memory modules after a Hermes update. The Discord adapter can start and show as connected, but a gateway turn then calls a method that no longer exists in the installed version. Fix it by updating Hermes to the latest version and hard-restarting the gateway service — not just sending /restart from inside the running gateway, but killing and relaunching the actual process. On macOS, use launchctl to bootstrap the service after bootout rather than relying on a /restart that depends on a working agent loop.

Should a cron job be considered successful if it appears in the dashboard?

No. The dashboard can confirm schedule and runtime state, but success should be the real output: delivered message, committed file, live URL, or verified quiet monitor result.

FlyHermes (Managed Cloud)

Deploy in 60 seconds. API costs included. Cancel anytime.

Deploy faster with FlyHermes →

Self-Host (Open Source)

Full control. MIT licensed. Run on your own infrastructure.

View install guide →

Keep reading

Related Hermes Agent guides