Hermes Agent cron job that starts a Sume Format run

A Hermes cron job begins with no memory of last week. Write the prompt, idempotency key, spend cap and SILENT or CRON_FAILURE reply so a Sume run starts once.

5 min readSume
All posts

To run a Sume Format on a schedule from Hermes Agent, create a cron job whose prompt contains the whole request: the Format handle and slug, the input, a spend cap, and an idempotency key built from the date. Hermes starts each run in a completely fresh session, so anything the prompt leaves out does not exist for the agent.

The second half of the job is the reply. Hermes lets a final response suppress delivery or declare failure, and a Sume run that is only queued should do neither of the usual things.

What does a fresh session change?

Hermes's cron page says each job runs in a new agent session and that the prompt must contain everything the agent needs beyond attached skills. There is no conversation to scroll back through, so the agent cannot know that last Monday's run already happened.

Hermes cron rules and what they mean for a Sume call, read 2026-10-03
Hermes rule (vendor page)Consequence for the Sume request
Fresh agent session every runPut the Format path, input and caps in the prompt, not in memory
The scheduler ticks every 60 secondsDo not expect to-the-second timing; a run may start up to a minute late
[SILENT] in the final reply suppresses deliveryUse it when the run was submitted and nothing is ready to report
[CRON_FAILURE] alone on the first line marks failureUse it when Sume answered with an error you cannot fix by retrying
hermes cron run <job_id> runs a job nowA manual rerun reuses the same key and gets the same Sume run back

What goes in the prompt?

Write it as if the agent were a contractor on day one. The key contains the ISO week, so any rerun inside the same week is a replay and not a second paid run. Sume answers a replay with 200 and idempotency_hit: true instead of 202.

Submit this week's teaser with one request, then stop.

curl -sS -X POST https://api.sume.com/v1/formats/myteam/weekly-teaser/runs \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: weekly-teaser-2026-W40" \
  -d '{"instruction":"Make the weekly teaser from the input.",
       "input":{"headline":"Autumn range"},
       "generation_spend_cap_usd":20,
       "on_active_run":"skip",
       "communication":{"webhook_url":"https://hooks.example.com/sume"}}'

Replace 2026-W40 with the current ISO week before sending.
If the status is 200 or 202, reply with exactly [SILENT].
If it is 4xx or 5xx, reply with [CRON_FAILURE] on the first line,
then the error code and message from the response body.

Why reply SILENT after a 202?

A 202 means the run is queued, not finished. A Format run is one agent turn that can take minutes, and the final media does not exist yet. Sending a delivery that says "teaser done" would be wrong, so the job stays quiet and your webhook receiver, which gets format.run.terminal when the run ends, is the thing that tells people the video is ready.

The failure branch matters more. A 400 or 403 will repeat on every schedule until someone changes the prompt or the key, and Hermes can only surface that if the reply starts with the failure marker. Hermes's own retry, which re-runs after 5, 15 and 30 minutes, applies to network errors before any API call, so it does not stand in for handling a Sume error code.

What stops overlap and runaway spend?

Two request fields do the guarding, and both are documented on Calling a Format.

  • on_active_run: "skip" returns a skipped run instead of starting a second one while the Format is still busy. Skipped runs never deliver a webhook, so a quiet week looks the same as a skipped week unless you read the receipt.
  • generation_spend_cap_usd sets the ceiling for that run. A number above the Format's own cap is honored, so pick one deliberately; 0 is rejected and null means the $500 platform maximum.
  • The run is unattended. Approvals are treated as granted, and a run that cannot finish comes back failed with unattended_blocked, so a missing input surfaces as a failure and not as a question.

What if the agent should create the schedule instead?

Sume has its own scheduler, but its API cannot create or edit schedules, so a Hermes cron job calling the Format API is the way to keep the schedule in code or a config file. The agent in the job also needs a way to send the request: a shell tool as in the prompt above, or Sume's hosted MCP as described in the Hermes MCP post.

Sources

Related posts

More in Agents

All Agents posts

Written by Sume