Workflow

Daily Priority Ritual

A morning loop that turns memory, goals, and calendar context into one concrete priority.

Workflow field plateDaily Priority Ritualhx-workflow-daily-priority-ritualLoading visual preview…
View full-size visual

Daily Priority Ritual

What it is

A morning loop that turns memory, goals, and calendar context into one concrete priority.

Operating shape

  • Difficulty: starter
  • Cadence: daily
  • Category: personal

Core concepts

  • Personal OS
  • Daily Priority Ritual
  • Memory
  • Cron Jobs
  • Schedules

Source evidence

  • vendor/hermes-agent/toolsets.py#<file> — Structural Source Map fallback for toolsets.py. A core source file in the Tool Registry and Toolsets structure within Tools, Toolsets, and MCP.
  • Six Hermes Use Cases for a More Intentional Personal Operating System
  • Building a Personal AI System with Hermes, Local Models, Automation, and a Shared Knowledge Base

Implementation pattern

Outcome

Build a weekday priority ritual that produces one small, evidence-based plan, can be tested manually, and never saves personal preferences without review.

Before you start

  • Finish a normal Hermes chat first and choose the intended provider with hermes model.
  • Create a disposable folder containing today.md with the date, IANA timezone, constraints, and 3–7 synthetic tasks. Do not begin with a real calendar or customer data.
  • In Hermes, run /memory approval on so proposed memory writes wait for approval.
  • Decide your IANA timezone and a weekday time; the example uses Australia/Melbourne at 08:30. Hermes uses configured timezone, or server-local time when it is empty, so the displayed next run must match your choice.

Input and output contract

Input is only today.md and durable preferences that you explicitly approve. Output is daily-priority.md with the same date and timezone, exactly three priorities, one source-grounded reason and one under-25-minute first action per priority, and a Blocked or unknown section. It must not invent deadlines, send messages, edit the input, or silently write memory.

Expected output shape:

Daily priorities — YYYY-MM-DD
1. Task — reason — first action
2. Task — reason — first action
3. Task — reason — first action
Blocked or unknown:
- ...

Build it

Create a disposable input and first run the instruction manually from that folder:

LAB_DIR="$HOME/hermes-labs/daily-priority"
mkdir -p "$LAB_DIR"
cat > "$LAB_DIR/today.md" <<'EOF'
Date: 2026-07-30
Timezone: Australia/Melbourne
Constraints: no external messages; every first action must take under 25 minutes.

- Review the Hermes quickstart and record one unanswered question.
- Test session resume and record the result.
- Draft a local-only research brief.
- Publish an announcement sometime soon; date and approver are unknown.
EOF
cd "$LAB_DIR"

hermes chat --toolsets "file" -q "Read only today.md. Create daily-priority.md. Copy the Date and Timezone lines exactly; list exactly three priorities; for each, give one reason grounded in today.md and one first action under 25 minutes. Put every missing date, approver, or dependency under 'Blocked or unknown'. Do not modify today.md, contact anyone, use external tools, or save preferences to memory."

Review the file. Before scheduling, verify the Gateway and scheduler are healthy; stop if hermes cron status reports stopped, stalled, or failing ticks. Then schedule a self-contained prompt—the cron run is a fresh session and does not inherit the manual chat:

hermes config set timezone Australia/Melbourne
# Restart the Gateway with the same foreground or service method you use.
hermes doctor
hermes gateway status
hermes cron status
hermes chat --toolsets "cronjob" -q "Use the cronjob tool exactly once with action=create, schedule='30 8 * * 1-5', name='weekday-priority-ritual', workdir='$LAB_DIR', deliver='local', and enabled_toolsets=['file']. Use this self-contained job prompt: Read only today.md. Create or replace daily-priority.md. Copy the Date and Timezone lines exactly. List exactly three priorities; for each, give exactly one reason grounded in today.md and one first action that takes under 25 minutes. Put every missing date, approver, or dependency under a 'Blocked or unknown' section. Do not modify today.md, contact anyone, send messages, infer missing facts, or write memory. Do not create any other job. Return the job ID and confirm its enabled_toolsets."
hermes cron list

Verify it

  • Confirm the creation response reports enabled_toolsets: [file]. If it does not, remove the job rather than running it. Then run hermes cron run weekday-priority-ritual and confirm hermes cron list shows a future next run.
  • Confirm that the displayed next run is 08:30 in Australia/Melbourne; a correct file timezone does not compensate for a misconfigured scheduler timezone.
  • The file contains exactly three priorities and every reason points to text in today.md; its date and timezone match the input exactly.
  • A task with no date stays unknown rather than receiving an invented deadline.
  • Run /memory pending; approve only a genuinely durable preference and reject any task-specific or incorrect proposal with /memory reject <id>.
  • Re-run once without changing today.md; ordering should remain explainable rather than randomly changing.
  • Finish with hermes cron pause weekday-priority-ritual, then hermes cron list --all; leave the lab job paused.

If it fails

  • If the manual run is wrong, pause with hermes cron pause weekday-priority-ritual; tighten the input contract before resuming.
  • If the job cannot find the file, use an existing absolute --workdir and run it again.
  • If the schedule is wrong, inspect hermes cron status, edit the job, and verify the next-run time before enabling it.
  • If memory was staged incorrectly, reject it; turn memory off rather than accepting an unsafe shortcut. After every repair test, pause the lab job again.

Safety, privacy, and cost

Start with synthetic tasks, keep delivery local, restrict the manual run and scheduled job to the file toolset, and require human review before any memory write. The toolset allowlist is the capability boundary; the prompt alone is not. A scheduled agent can make a model call on every run, so keep the cadence to weekdays, keep the prompt bounded, and pause it when not useful. Cron snapshots the selected provider/model and fails closed after an unpinned default changes; inspect cost before deliberately repinning it.

Official references