Docs Join alpha
Model

Heartbeat

The trigger that wakes the Sprout agent. Cron today; event-driven soon.

A heartbeat is the trigger that wakes the Sprout agent to do something on a cadence. Cron-driven today, event-driven soon. Each fire runs a skill: refreshing today's task, posting a daily brief, scheduling tomorrow's work. The heartbeat is the rhythm; the skill is the work.

Heartbeats are powerful, and the two-skill pattern (run skill + assignment skill) earns its keep. They're also rarely the right first reach: a recurring task with scheduleSpec already handles fixed-content recurrence with zero machinery.

Where you'll see this

In the wild: Schedule a heartbeat (Build) · Save it as a skill (the morning-refresh example)

A worked example

The morning refresh from the Skill page, on a heartbeat. 8am weekdays, runs the refresh skill.

Shell
heartbeat.create({
name: "Morning check-in refresh",
cron: "0 8 * * 1-5",
tz: "America/New_York",
runSkillId: "<refresh-skill>",
skillInput: {
child_name: "Jay",
child_id: "<childId>",
today: "{{fireDate}}"
},
postResultNotify: true
})
# heartbeat.describe(...) previews the cadence + first fire before commit.

For the two-skill pattern (a separate assignmentSkillId that owns the schedule for audit), pass both. With #1107, assignmentSkillId is optional: pass it when you want the scheduler itself to be an auditable skill.

Shape

When to use it (and when not to)

Try a recurring task first. If the kid sees the same prompt every weekday, task.create with taskType: "schedule" + days already handles that. Zero heartbeats needed.

Use a heartbeat when:

Common errors

Related tools

Roadmap for this noun

Schedule a heartbeat Skill Activity

Was this page helpful?