Skip to content

How to Schedule Automated Tasks with Hermes WebUI Cron Jobs

Problem

Most chat UIs are session-scoped. When you close the browser, nothing happens. You cannot set up recurring monitoring, morning briefings, or PR reviews. I wanted my agent to keep working while I was offline.

Architecture

Hermes WebUI separates the chat surface from the execution engine:

  • WebUI — the Tasks panel where you view, create, edit, run, pause, resume, and delete cron jobs
  • Gateway daemon — the persistent process that ticks the scheduler every 60 seconds and executes jobs

Jobs are created in the browser but executed by the gateway. This means scheduled automation keeps running even when the browser is closed.

Tasks Panel

The Tasks panel gives you a visual interface for cron management. You can:

  • View existing jobs
  • Create new jobs with cron expressions
  • Edit job parameters
  • Run a job manually
  • Pause or resume a job
  • Delete jobs
  • See run history

When a cron job completes, you get a toast notification and an unread badge on the Tasks tab. If a background agent encounters an error, a banner appears to alert you.

Docker Requirements

Here is where I got stuck initially. In Docker, scheduled jobs require the gateway daemon to run continuously. The single-container setup can create and run jobs manually, but scheduled automatic firing needs a separate gateway.

Use the two-container setup for reliable cron support:

Two-container Docker for cron
cp .env.docker.example .env
docker compose -f docker-compose.two-container.yml up -d

Verify the gateway is running:

Verify gateway
docker compose -f docker-compose.two-container.yml exec hermes-agent hermes gateway status

Delivery Channels

Hermes can deliver cron results to multiple channels:

  • Telegram
  • Discord
  • Slack
  • Signal
  • WhatsApp
  • SMS
  • Email

This means your morning briefing or monitoring alert can reach you wherever you are.

Common Mistakes

I made two mistakes when setting this up:

  1. Expecting cron jobs to fire in single-container Docker — the WebUI can run jobs manually, but scheduled execution needs the gateway daemon.
  2. Confusing “Run now” with scheduled execution — the Run button works in-process in any setup, but automatic scheduling needs the two-container configuration.

Summary

In this post, I showed how to schedule automated tasks with Hermes WebUI cron jobs. The key point is that the WebUI provides the management surface, but the gateway daemon provides the execution engine. Use the two-container Docker setup if you need reliable offline automation.

Final Words + More Resources

My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me

Here are also the most important links from this article along with some further resources that will help you in this scope:

Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!

Comments