Skip to content

Scheduler

The Scheduler operation fires on a configurable cron schedule, initiating a new execution path at each scheduled moment. It outputs a boolean trigger and an optional nanosecond timestamp.

Scheduler operation

Trigger

This operation is a trigger. It has no inputs and initiates execution paths based on its internal schedule.

Inputs

This operation has no inputs. It initiates its own execution based on the configured schedule.

Outputs

PortTypeDefaultDescription
> (Trigger)AnyfalseUntyped trigger pulse — true for one cycle when the schedule fires, false otherwise. Initiates a new execution path.
TimeStamp(ns)IntegerNilNanosecond timestamp of the scheduled firing. Sub-second digits are always zero: this is the moment the schedule names, not the moment the trigger was dispatched.

Properties

NameTypeDefaultDescription
ScheduleScheduleCron expression and timezone defining when the trigger fires. Configurable via a visual editor or direct text input.

This Operation can never err: it has no Input to check and no completion that can fail, so its Node carries no On Error verb.

State on Reload

The trigger boolean is not preserved across restarts. The TimeStamp(ns) value is restored if previously recorded. Schedule evaluation restarts from the current time on reload. Saved TimeStamp(ns) is discarded if the cron expression or timezone changed.

The restored value is also what stops a firing running twice: because it is the moment the schedule names, it matches the schedule’s own reading exactly. On the day a timezone falls back and a reading is reached twice, a Scheduler reloaded during the second pass recognises the reading as already run and waits for the next one.


The Schedule property accepts standard cron expressions (5 or 6 fields). The 6-field variant includes seconds.

FieldValuesSpecial Characters
Seconds (optional)0—59* , - /
Minute0—59* , - /
Hour0—23* , - /
Day of Month1—31* , - / ? L L-N NW LW
Month1—12 or JAN—DEC* , - /
Day of Week0—7 or SUN—SAT* , - / ? <dow>L #

  1. Monitor — The Scheduler continuously evaluates the current time against the configured cron expression, using the specified timezone.

  2. Fire — When the current time reaches a moment the schedule names, the trigger output becomes true for one execution cycle, and the timestamp output carries that moment.

  3. Execution path — The true trigger initiates a new execution path, activating all connected downstream operations.

  4. Reset — After the cycle, the trigger returns to false until the next scheduled moment.


A cron field names a reading on a clock face, and a zone that moves its clock has readings that happen twice or not at all. A schedule resolves them like this.

The readingWhen it runs
An ordinary readingAt that instant.
One the clock jumped overAt the instant the shifted clock shows it — the named reading plus the size of the jump. A schedule set for 02:30 runs at 03:30 where the jump is an hour, and at 03:00 where it is half an hour.
One the clock reaches twiceOn the first pass only.

A repeated reading therefore runs once: an hourly schedule runs 24 times on the day a zone puts its clocks back, not 25.


Cron: */5 * * * *   Timezone: UTC

Fires at minutes 00, 05, 10, …, 55 past each hour.


  • Starting automated workflows at regular intervals (data collection, report generation).
  • Triggering periodic health checks or maintenance tasks.
  • Scheduling daily, weekly, or monthly batch processing.

  • If the cron expression or timezone is invalid, the task will not start.
  • Very frequent schedules (e.g. every second) can cause high system load.
  • The trigger output is momentary (one cycle pulse), not sustained.
  • No year field, and no @daily-style aliases.
  • Ranges do not wrap: 22-2 and FRI-MON are not accepted. Write 22-23,0-2.
  • A schedule whose host was down does not replay the firings it missed.

Two host settings bound Scheduler. Both are read at start-up from the host’s configuration file; see the Core configuration reference.

KeyTypeDefaultEffect
core.schedulerSecondsEnabledBooleantrueWhen false, only 5-field cron is accepted and a 6-field Schedule is rejected at task load.
core.maxSchedulerPerTaskInteger-1How many Scheduler nodes one Task may contain. Negative means unlimited.

core.maxSchedulerPerTask travels to the editor in the operation’s schema, so the editor refuses to add a Scheduler beyond the cap rather than letting you build a Task the server will reject.