> ## Documentation Index
> Fetch the complete documentation index at: https://docs.joystream.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# jstm agent schedule

> Show, set, and clear an installation's cron schedule. All times are UTC.

Three subcommands manage an installation's recurring schedule. They take an installation id, from `jstm agent installations` — not an agent id.

## `schedule show`

Show the schedule, when it last fired, and the server-computed next fire time.

```bash theme={null}
jstm agent schedule show 8c41f2b9-77de-4a30-b0c5-2e1f6a9d4b77
```

```text theme={null}
        Cron Schedule
 Schedule     */5 * * * *
 Environment  dry_run
 Last fired   —
 Next fire    2026-07-10T12:05:00+00:00
 Timezone     UTC
```

**Last fired** shows `—` until the schedule fires once. **Next fire** is computed by the server as the first scheduled time strictly after now, so a frequent schedule never shows a time that has passed.

<ParamField path="--json">
  Emit as JSON.
</ParamField>

## `schedule set`

Set the cron schedule. The expression is validated locally before any request, so a typo fails immediately with nothing changed.

```bash theme={null}
jstm agent schedule set 8c41f2b9-77de-4a30-b0c5-2e1f6a9d4b77 --cron "0 9 * * 1"
jstm agent schedule set 8c41f2b9-77de-4a30-b0c5-2e1f6a9d4b77 --cron "0 9 * * 1" --env live
```

<ParamField path="--cron" required>
  A standard five-field cron expression, evaluated in UTC.
</ParamField>

<ParamField path="--env" default="dry_run">
  Run mode: `dry_run` or `live`.
</ParamField>

<ParamField path="--json">
  Emit as JSON.
</ParamField>

<Warning>
  `set` sends the run mode on every call and defaults it to `dry_run`. Running `set` again with only `--cron` silently reverts a live schedule to `dry_run`. Always repeat `--env live` when changing a live schedule.
</Warning>

## `schedule clear`

Remove the schedule. The agent stays installed and can still be run manually or by other triggers.

```bash theme={null}
jstm agent schedule clear 8c41f2b9-77de-4a30-b0c5-2e1f6a9d4b77
```

## Cron expressions

All expressions are evaluated in UTC. There is no per-schedule timezone.

| Expression    | Runs                                    |
| ------------- | --------------------------------------- |
| `*/5 * * * *` | Every five minutes                      |
| `0 * * * *`   | Every hour, on the hour                 |
| `0 9 * * *`   | 09:00 UTC daily                         |
| `0 9 * * 1`   | 09:00 UTC every Monday                  |
| `0 0 1 * *`   | Midnight UTC on the first of each month |

## Behavior worth knowing

If the scheduler is down across several scheduled times, it fires the most recent missed one once on recovery, not a burst for every time it missed.

Changing a schedule resets its clock to the next future time. It will not back-fire for a time that has already passed.

## See also

* [Scheduling agents with cron](/features/scheduling) — the concept.
* [Schedule an agent](/guides/schedule-an-agent) — walkthrough.
