A chat agent runs when you remember it. That is the whole difference, and it is
larger than it sounds.
Every conversational assistant shares one structural property: the human is the
trigger. Nothing happens until someone opens a tab and types. The quality of the
model sets the ceiling on the answer, but the frequency of the human sets the
ceiling on the value. If you forget to ask on Tuesday, Tuesday produced nothing.
A scheduled agent inverts that. The trigger moves from the human to the clock,
and the agent's output becomes something you receive rather than something you
fetch. Same model. Same prompt. Completely different relationship.
The line that does the work
Here is the trigger from the research-digest blueprint that ships with the
RSS digest playbook:
"triggers": [
{ "type": "schedule", "schedule": "0 8 * * 1-5" }
]
Read it field by field: minute 0, hour 8, any day of the month, any month,
days of week 1-5. Eight in the morning, Monday through Friday. That is the
entire specification of a commitment that would otherwise live in someone's
head and get skipped during a busy week.
Every playbook in the library ships at least one of these. They are not all the
same, because the workflows are not all the same:
| Agent | Workflow | Schedule | In words |
|---|---|---|---|
| Sage | Daily research digest | 0 8 * * 1-5 |
Weekdays, 08:00 |
| Atlas | Refresh prospect digest | 0 8 * * 1-5 |
Weekdays, 08:00 |
| Otis | Send morning check-in | 0 9 * * 1-5 |
Weekdays, 09:00 |
| Reign | Community pulse | 0 9 * * * |
Every day, 09:00 |
| Echo | Repurpose latest blog | 0 10 * * 1-5 |
Weekdays, 10:00 |
| Mira | Draft next chapter | 0 7 * * * |
Every day, 07:00 |
| Lint | Pre-review pull requests | 0 17 * * 1-5 |
Weekdays, 17:00 |
| Halt | Yesterday's incident summary | 0 17 * * * |
Every day, 17:00 |
| Tessa | Office-hours digest | 0 18 * * 1-5 |
Weekdays, 18:00 |
| Praxis | Tomorrow's drafts | 0 19 * * 1-5 |
Weekdays, 19:00 |
| Vela | Draft monthly investor update | 0 7 1 * * |
1st of the month, 07:00 |
Those hours are not decoration. Lint runs at 17:00 because a pull request opened
during the day should have a pre-review waiting when the reviewer sits down.
Praxis runs at 19:00 because a proposal drafted tonight is a proposal you edit
tomorrow morning instead of writing from scratch. Vela runs on the first of the
month because that is when the update is due. The cron expression encodes the
judgment about when the work is worth doing, and that judgment is most of the
product.
What changes once the human stops being the trigger
Moving the trigger to the clock is not free. Three things that a chat agent can
get away with become load-bearing.
Memory stops being a nicety. In a chat, repetition is obvious — you can see
the last answer above the new one. On a schedule, nobody is watching, so the
agent has to remember on its own. That is why every blueprint in the library
pairs its scheduled task with a named memory store and reads from it before
writing. Sage keeps paper-history and checks it before adding an entry, with
one explicit instruction: never re-surface. Atlas keeps prospect-history so a
closed-lost contact is never pinged twice. Without that, a daily agent becomes a
daily duplicate.
Output has to be self-contained. A chat reply can assume context, because
the context is on screen. A scheduled result lands in Slack, or an inbox, or a
feed, hours after anyone thought about it. Sage's instruction is three lines per
paper — claim, method, why it matters — because that is a format that survives
being read cold at 08:00.
Failure gets quiet. A chat agent that fails is obvious; you are standing
there. A scheduled agent that fails is invisible unless it reports. That is why
scheduled runs land in the run history with their logs and their artifacts, and
why channels are configured on the agent rather than assumed.
The honest constraint
A daily schedule needs a daily allowance. On the free Starter tier the
steady-state cap is one run per day, raised to ten for the first fourteen days
of an account. That is enough to build the agent, watch it produce something
real, and decide — and it is genuinely not enough to run a weekday
digest and anything else on the same day.
This is the least comfortable sentence in this post, so it is worth stating
plainly rather than burying: "run this every weekday morning" is the thing the
paid tiers are for. Not the model, not the number of agents. The frequency.
The full breakdown of what the free tier does and does not cover is in
what a free account can actually do.
Where to start
Pick a workflow you already do on a rhythm and are already bad at keeping. Then
clone an agent that has the rhythm written into it — the
RSS digest playbook is the shortest
path, because the whole thing is one scheduled task, one memory store, and two
channels.
Run it once by hand to see what it produces. Then leave the cron alone and let
Tuesday take care of itself.