Docs / Scheduled tasks / Cron syntax

Cron syntax

CloudyBot scheduled work uses either every N minutes (interval mode) or a five-field cron string (calendar mode). The dashboard Schedule picker builds cron from your wall-clock time plus an IANA timezone (for example America/New_York). Default timezone is UTC if you do not change it. Hub: scheduled tasks.

Two ways to schedule

Field order (5 fields, no seconds)

CloudyBot uses standard Unix-style cron — not six-field (no seconds column):

minute hour day-of-month month day-of-week

Common expressions

Interpreted in the job’s configured timezone:

Dashboard presets map to these patterns: daily, weekdays, weekends, weekly (pick day), every 15/30, hourly at a fixed minute.

Specialist duty minimum interval

Duties on hired Specialists must run no more than once every 15 minutes. The API rejects:

Valid duty examples: fixed time (0 9 * * *), */15 or */30, or hourly at a single minute (5 * * * *). Standalone Schedule-tab interval tasks are not subject to this guard.

Timezone tips

Chat-created tasks vs duties

From dashboard chat, add_task with only every_minutes creates a standalone Schedule-tab task. If the model supplies cron_expr while you are on an active Specialist thread, CloudyBot stores it as a duty under that Specialist (subject to the 15-minute rule). Interval-only tasks on Specialist threads stay standalone unless cron is provided.

Validate before you ship

Related: Troubleshooting missed runs · Where results go · repo docs/scheduledTasks/Readme.md