Scheduler

The built-in scheduler runs scripts on a schedule — no cron on the server (the system task scheduler) and no other external tools are needed. The whole schedule is one file, schedule.yml, in the scripts folder, managed by the agent: you ask in chat “run every day at 9 a.m.” — the agent adds the entry itself.

How the schedule is arranged

The schedule.yml file is a list of entries. Each entry has:

  • id — the entry’s name;
  • script — the script’s path inside the folder;
  • a description — what this task is for;
  • and one of two: every — an interval (for example 15m, 24h, 7d) or cron — an exact time as six fields: seconds, minute, hour, day of month, month, day of week (in UTC);
  • extra flags: enabled (the entry is on), overlap — what to do when the previous run is still going (skip or queue), catchUp — whether to catch up on missed runs.

Intervals: no drift

A new interval entry runs immediately, then ticks on a fixed grid: every 15 minutes, every 24 hours — precisely, with no accumulated lag. If the application was down (say, the server rebooted), the next run is the grid’s first point in the future, not a “floating” time counted from the restart.

Exact times

An exact-time entry waits for its clock match (UTC): “every weekday at 7:00”. An expression with no future occurrence (February 31, say) is not lost — it is rechecked later.

All-or-nothing validation

The whole file is validated at once: one bad entry — and the entire new file is rejected, while the last working version of the schedule stays in force. It is impossible to break the schedule with a single typo; the data never loses its runs. A missing file is not an error: there is simply no schedule, and nothing runs.

Missed runs

If a run’s time came while the application was off, the run fires at startup (when catchUp is enabled) or is skipped by the queue’s rules. Runs are never lost silently — the behavior is always predictable, and no burst of back-runs ever piles up.

Managing from the interface

The Scheduler section lists every entry: what runs, when and at what interval. From here you can pause the whole schedule at once, put one entry on hold, run a script right now with the “Run now” button, and browse the schedule’s run history. The file itself is not edited in the interface: ask for schedule changes in chat — the agent updates schedule.yml, and the changes are picked up on the fly, without restarting the application.

See also: Runs, Chat with the Agent.

← Back to the documentation index