Cron Blueprints
What it is
Reusable schedule templates that reduce repeated setup work.
In plain terms
A tailor who keeps a pre-cut jacket pattern on hand asks only for sleeve length and preferred color before cutting fabric — nobody re-drafts the pattern from scratch every visit. That’s what a cron blueprint is for Hermes automations: a ready-made shape for a common job, like a morning briefing or a bill-renewal watch, where a person only fills in the few details that actually vary.
Why it matters
Setting up recurring automation has a tedious part — schedule, toolset, prompt structure — and cron blueprints are templates for exactly that, so a new monitoring job or daily ritual doesn’t start from a blank cron definition every time. This pays off most for an operator running several similar jobs, a handful of repo monitors or several research briefings, where re-deriving the same configuration repeatedly is pure overhead. They’re a convenience layer on top of the cronjob toolset, not a separate execution mechanism.
How it works
Each blueprint is an AutomationBlueprint record with a schedule_template containing {slot} placeholders, a prompt_template, and a list of typed slots — time, enum, text, or weekdays (cron/blueprint_catalog.py). blueprint_form_schema turns those slots into a form the dashboard can render, while fill_blueprint validates whatever values a person supplies: unknown slot names and out-of-range enum choices raise a clear error, and so do missing required slots. Once validation passes, fill_blueprint resolves the schedule, renders the prompt template, and hands back a plain keyword-argument dict shaped for cron.jobs.create_job. On the API side, GET /api/cron/blueprints returns the catalog as form schemas, and POST /api/cron/blueprints/instantiate fills a blueprint and calls create_job in one step (hermes_cli/web_server.py).
A concrete example
Open the dashboard’s automation gallery and pick “Morning briefing.” It shows a form with a time field defaulting to 08:00 and a delivery dropdown listing only the platforms actually connected. Changing the time to 07:15 and clicking create needs no cron expression or hand-written prompt:
- The dashboard sends the blueprint key and the one changed value to /api/cron/blueprints/instantiate.
- fill_blueprint turns 07:15 into the cron fields and renders the full briefing prompt.
- A normal cron job now exists, indistinguishable from one built by hand.
How it connects
This note belongs to the Automation family. Its closest neighboring concepts are: Cron Jobs, Schedules, Agent Runtime, Personal OS.
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.
Workflows
- No first-pass workflow mapping yet; this concept still appears in the vault graph through articles and source evidence.
Related articles
- Mastering Hermes Desktop: From Local Chat App to an Always-On Agent Control Center
