Schedule tasks & runbooks

Schedules allow you to automatically run tasks or runbooks on a recurring cadence.

Creating schedules

To create a schedule, you must have permissions to execute the task or runbook. You can manage schedules from individual task or runbook pages:

Schedules have a name and a human-friendly description. If the task or runbook has any parameters, you can specify parameter values when creating or editing a schedule.

Cron syntax

The recurrence schedule is defined using cron syntax, with times specified in UTC. In addition to standard cron characters, Airplane supports the following:

CharacterValid FieldsExample
LDay of Week5L ("last Friday of the month")
#Day of Week5#3 ("third Friday of the month")
WDay of Month1W ("nearest weekday to the 1st of the month")

Sample cron expressions

Cron expressionMeaning
0 12 * * *Daily at 12:00 UTC
0 17 * * 5Every Friday at 17:00 UTC
0 12 * * 3#1First Wednesday of the month at 12:00 UTC
*/30 12-17 * * MON-FRIEvery half hour between 12:00 UTC and 16:59 UTC on weekdays
0 12 15 */2 *Every 15th of the month at 12:00 UTC, every two months (starting in January)

Managing schedules in task definition files

Schedules can additionally be managed in the task definition file if you are deploying your task via code. Schedules managed through the task definition should not be managed via the web UI, since any changes will be overwritten on deploy. Airplane can help you migrate schedules created in the web UI to schedules in your task definition. Reach out to and we'll help you get set up.

Archiving schedules

Schedules can be archived to temporarily or permanently prevent them from running. They may be unarchived at any time, as long as the task is also unarchived.

If a task is archived, all of its active schedules are also archived. Unarchiving a task does not automatically unarchive all of its associated schedules.

Schedule permissions

Schedules run as their creator, meaning if you schedule a runbook and it runs the next day, Airplane will execute the runbook as you (the creator). If the creator does not have access (e.g. due to permissions or the creator is no longer in the team), the schedule will automatically be paused.

Invalid schedules

It is possible for schedules to become invalid; e.g., adding or changing parameters to the task or runbook, or the schedule creator losing permissions to execute it. In these cases, the schedule will be moved into a paused state, and an alert will show up next to the schedule indicating why the schedule has been automatically paused.

You can unpause a schedule by editing it in the app and re-saving it.

Schedule concurrency

Schedules are designed to start a task or runbook based on a custom recurrence schedule. However, if the last execution has not yet finished, a new execution will only be started after the last execution has finished. For a given schedule, at most one execution will be in an active state at any time.

For example, a schedule that executes every five minutes will normally execute a run at 10:00, 10:05, 10:10, etc. If a run that starts at 10:15 takes 12 minutes, the next run will start at 10:27 at the earliest; the next run after that will start at either 10:30 or when the 10:27 run has finished, whichever is later.

This also applies to runbooks. Note that if your runbook requires human intervention by way of approvals or manual running of blocks, you may end up "missing" scheduled executions because the previous session has not terminated.