Daily Priority Ritual
What it is
A daily loop that asks Hermes to focus the day around one important outcome.
In plain terms
Picture a ship’s captain who gathers the crew on deck each morning before sunrise, calls out the one heading that matters most for that day, and then disappears below deck until the next dawn’s muster. The ritual works the same way inside Hermes: a standing appointment that shows up once a day, names a single priority, and hands the floor back to you until tomorrow’s muster.
Why it matters
The shape of a cron job is defined in tools/cronjob_tools.py: it stores a prompt plus optional skills, and cron/scheduler.py’s tick() — invoked every 60 seconds by the gateway — assembles that prompt at fire time, optionally prepending a pre-run script’s stdout or a prior job’s saved output via context_from. The run itself inherits the operator’s SOUL.md identity but is built with skip_memory=True specifically so a scheduled system turn can’t corrupt the persistent memory store; instead its transcript lands in the same SQLite session store session_search queries, so a later ritual can recall what an earlier one reported.
How it works
A ritual is just a cron job created with a schedule string like “0 8 * * *” — parse_schedule() (cron/jobs.py) recognizes that five-field pattern as a recurring cron expression, distinct from a one-off “30m” delay or a repeating “every 2h” interval. At fire time the job’s stored prompt can be built with context from a prior run via context_from, so a Monday check-in can reference what a Friday job already found. Once a run finishes and lands in the session database, later rituals can retrieve it: session_search’s discovery mode (tools/session_search_tool.py) runs full-text search across sessions but ranks cron-sourced sessions below interactive chats, so a week of automated morning runs never buries an actual conversation, while still keeping every past ritual searchable when nothing else matches.
A concrete example
Say you set up two jobs: one on schedule “0 16 * * 5” (Fridays at 4pm) that reviews the week and writes a short summary, and a second on “0 8 * * 1” (Mondays at 8am) with context_from pointing at the Friday job’s ID — the chaining pattern the tool itself is built for, “job A collects data, job B processes it.” When Monday’s job fires, the scheduler reads the Friday job’s most recent saved output and injects it into Monday’s prompt before Hermes runs, so Monday’s check-in can open with “last Friday’s review flagged the client proposal as still outstanding — still true?” instead of starting from a blank slate.
How it connects
This note belongs to the Workflow Patterns family. Its closest neighboring concepts are: Personal OS, Business CRM, Agent Runtime.
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.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.
Workflows
- Daily Priority Ritual
Related articles
- Hermes Agent Explained: Why an Agent Harness Matters More Than Another Chat Window
- Six Hermes Use Cases for a More Intentional Personal Operating System
