Report
TL;DR
- Heartbeat = main-session periodic awareness + batching + context.
- Cron = precise scheduling + optional isolation + delivery control.
- Best setup: Heartbeat for routine checks; Cron for exact time / heavy / one-shot.
Decision rules
- Needs exact time? → Cron
- Needs isolation (don’t pollute main / different model)? → Cron (isolated)
- Can it batch with other periodic checks? → Heartbeat
- One-shot reminder? → Cron (--at)
Heartbeat best practices
- Put multiple checks into
HEARTBEAT.mdso one turn batches email/calendar/notifications. - Use
HEARTBEAT_OKsuppression when nothing matters. - Good for drift-tolerant monitoring.
Cron best practices
- Understand execution styles: main/systemEvent vs isolated/agentTurn.
- Default delivery: short announce + store full artifacts on disk (avoid IM timeouts).
- Use isolated jobs for heavy analysis and clean main-session history.
Main vs isolated (rule of thumb)
- Need main session context (recent convo/project state) → main + systemEvent
- Need isolation / heavy work / model override → isolated + agentTurn
Suggested starter defaults
- Heartbeat: every 30m (batch checks + finish notifications).
- Cron: daily/weekly reports (isolated + announce short) and one-shot reminders (main + systemEvent).