Learning Objectives
  • Set up a scheduled task using Hermes's built-in cron.
  • Design at least one practical recurring Sectors workflow.
  • Write self-contained prompts that survive a fresh, memory-less cron session.
  • Understand what running Hermes on a VPS enables vs local-only operation.

Why Scheduling Matters

A tool you only open when you remember is still reactive. Scheduling makes Hermes genuinely autonomous, running the workflow and delivering the result without you starting anything. It has a built-in cron system, no external scheduler needed, that runs as long as the gateway is up.

How Scheduling Works

Describe the schedule in plain language when you set up the task, "every weekday at 7am" or "every Friday at 4:30pm" works fine. No cron syntax to write by hand.

The Golden Rule for Scheduled Prompts

Cron jobs run in fresh sessions with no memory of the chat that set them up. Every prompt must be self-contained, no "do the usual thing," spell out what to pull, from where, and where to send it.

For monitoring jobs that shouldn't spam you, use the [SILENT] convention: Hermes responds with just that token when nothing's worth reporting.
If a message is fully determined by a script, Hermes can run it in "no-agent mode":
  • Stdout delivered directly
  • Zero model calls
  • Zero token spend
No need to request this, plain language like "ping me if RAM is over 85%" is enough.
! Cron jobs run with the cronjob, messaging, and clarify toolsets disabled, so skills needing interactive confirmation won't work headless. If a job silently fails, check the gateway is running and the timezone is right first, the two most common causes.

Not Every Job Needs to Be a Hermes Prompt

A standalone script on a VPS, triggered by plain OS-level cron, works well for deterministic jobs, fetch data, summarize cheaply, write a file, no reasoning needed. A daily AI news digest is a good example: a script pulls top Hacker News stories, summarizes them with a free-tier API, and writes the result straight to a file, all outside Hermes entirely.

Cron entry
0 7 * * * GEMINI_API_KEY=your-key VAULT_DIR=/root/vault python3 /root/scripts/news_digest.py >> /root/news_digest.log 2>&1

Runs daily at 7 AM server time. Check the VPS's timezone first with timedatectl, cron uses local system time. Save Hermes's own scheduling for jobs that genuinely need judgment, not just a fetch-and-format loop.

Practical Scenarios with Sectors

Three recurring workflows that provide real daily value. Each prompt is self-contained, per the golden rule above.

01
Morning Briefing (Weekdays, 7 AM) Pull yesterday's top 3 IDX movers. For each, include the percentage change and a one-line note from Sectors news. Deliver to Telegram before you start your day.
Prompt
Pull the top 3 IDX stock movers from yesterday. For each, show the ticker, percentage change, and a one-line summary of any Sectors news. Send to Telegram.
02
Weekly Portfolio Snapshot (Fridays, 4 PM) Compare your watchlist stocks against their 30-day performance. Summarize in a table and send to Telegram ahead of the weekend.
Prompt
Compare BBCA, BMRI, and TLKM's current price against 30 days ago. Show the change as a percentage. Format as a table and send to Telegram.
03
Price Threshold Alert (Hourly) Hermes checks BBCA's price every hour. If it drops below a threshold you define, send an immediate Telegram message.
Prompt
Check BBCA's current price. If it is below 9500 IDR, send a Telegram message: "Alert: BBCA has dropped below 9500. Current price: [price]."

Running on a VPS

Local means the gateway runs only while your machine is on, close your laptop and the morning briefing doesn't run. A VPS fixes that. Setup mirrors local (SOUL.md, Sectors MCP, messaging), but Hermes runs as a Docker container with a restart policy so it survives reboots:

Persistent gateway on a VPS
docker run -d --name hermes --restart unless-stopped -v ~/.hermes:/opt/data -p 8642:8642 nousresearch/hermes-agent gateway run

Run setup over SSH directly, not a browser-based VPS console, some corrupt special characters like : and @ in tokens and keys.

A Note on Safety with Scheduled Tasks

Command approval prompts interrupt scheduled tasks by default. For the 7 AM briefing to run unattended, the workflow needs to stick to read and messaging operations only, nothing that triggers approval.

Configure only read and messaging as trusted for scheduled workflows, never write or delete. The briefing runs unattended, destructive actions still need you present.