Skip to content

Schedules

A schedule defines when work is due, what should run, and how to handle edge cases.

Standard cron expression with required timezone.

{
"type": "cron",
"spec": "0 9 * * *",
"timezone": "America/New_York"
}

Five-field cron syntax. The timezone is persisted — it is not inferred from the server.

Fixed duration between runs, anchored from the schedule creation time.

{
"type": "interval",
"spec": "30m",
"timezone": "UTC"
}

Duration format follows Go’s time.Duration syntax: 15s, 5m, 2h, 24h.

Single scheduled execution at a specific time.

{
"type": "once",
"spec": "2026-04-01T09:00:00Z",
"timezone": "UTC"
}

Once schedules transition to paused after their occurrence fires.

Timezone is required and persisted. It is not optional metadata.

All next-run calculations use the stored timezone. Schedules are timezone-aware across daemon restarts.

StateMeaning
activePlanner materializes due occurrences
pausedPlanner skips. Existing runs continue.
deletedSoft-deleted. Historical runs are preserved.
Terminal window
wakeplane schedule pause --name daily-report
wakeplane schedule resume --name daily-report