{% extends "admin/_layout.html" %} {% from "_macros.html" import icon %} {% set section = "schedules" %} {% block title %}Scheduling - {{ brand.name }}{% endblock %} {% block heading %}Scheduling{% endblock %} {% block admin_content %}

A {{ t("schedule") }} runs a piece of work because time has passed rather than because somebody asked just now — a daily summary, a check every Monday, a reminder in an hour. Each one has its own chat and replies into it, or files a report. People make their own under {{ t("Scheduled") }}; what you decide here is whether the feature exists and what it may spend.

{{ icon("shield", "icon--sm") }} This is the one thing here that spends model time with nobody watching. A schedule pointed at a chat that can run commands would run them unattended, so a scheduled task is never an agent chat — but everything else a model can reach, it can reach on a timer. Give {{ t("Schedule work") }} under Groups & permissions to the people who should have it; it is off for everybody by default.
{% if saved %}
{{ icon("check", "icon--sm") }} {{ t("Saved.") }}
{% endif %}

{{ t("Switch") }}

Off by default. Turning this off stops everything firing and deletes nothing — schedules keep their place and resume when it is turned back on. {% if total %} There {{ "is" if total == 1 else "are" }} {{ total }} schedule{{ "" if total == 1 else "s" }} on this instance, {{ active }} of them not paused. {% endif %}

{{ t("How often it looks") }}

{{ t("Seconds. This is how late a run can be, not how often anything happens: the finest a schedule can be set to is one minute, so anything under that buys nothing. One indexed query per tick.") }}

{{ t("Seconds. A floor on how often one schedule may come round. Raise it if people are setting things to run more often than the work takes.") }}

{{ t("What it may spend") }}

{{ t("Refused at the point of creation, with the reason. Existing schedules over a lowered limit keep running; only new ones are refused.") }}

{{ t("Fifty schedules due at nine o'clock must not open fifty replies against one endpoint. The rest wait their turn rather than being dropped.") }}

{{ t("A schedule that comes round faster than its chat can answer would build a backlog for ever. Past this, a run is skipped and says so on the schedule rather than joining the queue.") }}

{% endblock %}