Day 6: Give Stable Workflows a Schedule

Automation is not a prompt taped to cron

The strongest product examples are daily reports, website monitoring, price alerts, and backups. These are valuable not because AI is involved, but because they are repeated, low-risk, and reviewable. Hermes helps connect collection, reasoning, formatting, and delivery.

Day 6 is not about an impressive demo. It is about one workflow you might still trust tomorrow morning.

Diagram of a Hermes Agent scheduled workflow with retries and logs
Diagram of a Hermes Agent scheduled workflow with retries and logs

What belongs on a schedule

Good candidates:

    1. A weekday morning brief from GitHub issues, calendar events, and notes.
    2. Nightly backup of Hermes config and memory.
    3. Hourly website availability check.
    4. Weekly memory and Skill review.
    5. Daily digest from fixed information sources.

Bad candidates:

    1. Outputs that can directly harm users or customers.
    2. Tasks requiring fresh human judgment every time.
    3. Workflows that have not passed manual runs.
    4. Jobs where failure cannot be diagnosed.

The product rule is simple: run manually three times before giving it a schedule.

Split the workflow into four parts

Do not let one step collect data, summarize it, and send it externally. Split:

  1. Collect: gather raw data and save it.
  2. Summarize: produce a summary from the saved data.
  3. Deliver: send or store the final output.
  4. Log: record start time, end time, input path, output path, and failure reason.

This separation lets you retry delivery without collecting different data or generating a different answer.

A daily brief template

name: daily-ops-brief
trigger: "weekday 08:30"
collect:
  - github_issues
  - calendar_events
  - yesterday_notes
summarize_from: "artifacts/daily/raw.json"
deliver_to: "Feishu / Telegram / file"
approval_required: false
log_file: "logs/daily-ops-brief.log"
retry:
  collect: "no automatic retry if API auth fails"
  deliver: "retry twice, no duplicate message"

The key is summarize_from. Hermes should summarize from a saved artifact, not from a live system that changes on every retry.

Logs are a product feature

Logs are not developer decoration. They are part of the automation experience. If the morning brief does not arrive, you should be able to see:

    1. whether the job started;
    2. which inputs were read;
    3. which step failed;
    4. whether retries happened;
    5. whether delivery succeeded.

If the user cannot see this, automation becomes another thing to babysit.

Ship this artifact

Create hermes-day-6-automation.md:

workflow: "daily-ops-brief"
manual_runs_passed: 3
trigger: "weekday 08:30"
raw_artifact: "artifacts/daily/raw.json"
final_artifact: "artifacts/daily/brief.md"
delivery: "chat or file"
idempotency_rule: "never send duplicate message on retry"
owner: "you"
rollback: "disable schedule and run manually"

Tomorrow is multi-agent orchestration. Scheduling solves repetition; multi-agent solves parallel responsibility. Neither should exist just to look advanced.

Next step

Beginner Walkthrough: Hand One Stable Job To The Background

Automation does not start with cron. Beginners first learn to run a background task and send the result to a known place.

Hermes Agent Day 6 automation run card flow
Hermes Agent Day 6 automation run card flow

Step 1: Pick a low-risk task

    1. Summarize local notes into one page.
    2. Review memory files for duplicates.
    3. Turn fixed sources into a draft.

Do not start with group messages, file deletion, or external tickets.

Step 2: Run manually three times

Read hermes-day4/raw/meeting-notes.md.
Write a one-page brief to hermes-day6/output/daily-brief.md.
Do not send externally.

Step 3: Set home chat if using messaging

/set-home

Step 4: Use a background task

/background Summarize hermes-day4/raw/meeting-notes.md and write hermes-day6/output/daily-brief.md. Do not send externally.

Step 5: Create a run card

workflow: "daily-brief"
manual_runs_passed: 3
input: "hermes-day4/raw/meeting-notes.md"
output: "hermes-day6/output/daily-brief.md"
delivery: "file first, chat later"
approval_required:
  - send to group
  - delete source file
  - create external ticket
logs: "~/.hermes/logs/gateway.log"

Common Day 6 problems

    1. Background task is silent: check home chat, gateway status, and logs.
    2. Output changes every run: save raw input and summarize from that artifact.
    3. Automation is noisy: improve the format before widening scope.
    4. Want OS cron: wait until manual and background runs are stable.

Leave this folder behind

hermes-day6/
  output/daily-brief.md
  run-card.yaml
  logs/run-001.md