# Schedules

> Pause and resume runners automatically on a weekly timetable to save server costs.

Source: https://managerunners.com/docs/manual/schedules/

A schedule resumes a runner at a start time and pauses it at a stop time, on the days of the week you choose. A runner that only runs during working hours, for example, costs Hetzner server time only then. Pausing runners outside working hours can save up to 50% of server costs.

Schedules need a **Pro** or **Enterprise** plan for the runner's organization. See [Billing and plans](https://managerunners.com/docs/manual/billing/).

> Schedules are managed with the [manage-runners CLI](https://managerunners.com/docs/cli/schedules/) or the API. The dashboard does not show them yet.

## How a schedule works

A schedule has:

| Setting | Description |
| --- | --- |
| Time zone | An IANA time zone, for example `Europe/Berlin`. Start and stop times are in this zone, including daylight saving time. |
| Start time | When the runner is resumed, as `HH:MM`. |
| Stop time or duration | When the runner is paused: a time later on the same day, or a duration of 1 to 1440 minutes. |
| Days | One or more of `Mon`, `Tue`, `Wed`, `Thu`, `Fri`, `Sat`, `Sun`. |
| Enabled | Whether the schedule is applied. A disabled schedule is kept but does nothing. |

Each runner has at most one schedule. Manage Runners checks schedules every minute:

- During the window, from the start time until the stop time, a paused runner is resumed.
- At the stop time, an active runner is paused.

Manage Runners records each start and stop it has applied and never applies a recorded one again. A start is recorded when the runner is resumed, or is found already active, during the window. A stop is recorded only when Manage Runners pauses an active runner. In practice:

- If you pause a runner by hand during its window after the start was applied, it stays paused until the next start.
- If a runner is already paused at the stop time, that stop is not recorded. If you then resume it by hand before the next start, it is paused again within a minute.
- If you pause a runner during its window before the start was applied, it is resumed within a minute.

To override a schedule reliably, for example to keep a runner running one evening, [disable the schedule](https://managerunners.com/docs/cli/schedules/#read-enable-and-disable) first and enable it again afterwards.

A stop time must be later than the start time on the same day, so a window given by start and stop times cannot cross midnight.

## Example

Run on weekdays from 07:00 to 19:00 Berlin time:

```sh
manage-runners schedule set --runner-id 812999368881481087 \
  --zone-id Europe/Berlin --start 07:00 --stop 19:00 \
  --day Mon --day Tue --day Wed --day Thu --day Fri --enabled
```

Use `--duration-minutes 720` instead of `--stop 19:00` to give the window a length. See [Schedules with the CLI](https://managerunners.com/docs/cli/schedules/) for reading, disabling and deleting schedules.

## What happens to a schedule

- Deleting a runner deletes its schedule.
- Resuming by schedule creates a new server, like resuming by hand. See [Pause and resume](https://managerunners.com/docs/manual/runners/#pause-and-resume).
- Disabling keeps the settings, so you can enable the schedule again later.
