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 example15m,24h,7d) orcron— 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.