/Schedule Types
Scheduling

Schedule Types

The five ways to schedule a job in OpenHelm.

Five Schedule Types

OpenHelm supports five schedule types, selected when creating or editing a job.

---

Once

Runs the job exactly once at a specific date and time, then never again.

FieldDescription
Fire atDate and time (local timezone)

When to use: One-off migrations, initial setup tasks, or any work that should happen exactly once.

---

Interval

Runs the job repeatedly at a fixed interval after the previous run completes.

FieldDescription
AmountA number
Unitminutes, hours, or days

Example: Every 24 hours, every 30 minutes, every 7 days.

Note: The interval is measured from the *completion time* of the previous run — not from the original fire time. This prevents queue pile-ups if a run takes longer than expected.

---

Cron

Runs the job on a standard 5-field cron expression.

FieldDescription
ExpressionStandard cron format: minute hour day month weekday

Examples:

0 9 * * 1-5      # 9am Monday–Friday
0 2 * * *        # 2am every day
0 0 1 * *        # midnight on the 1st of each month
*/30 * * * *     # every 30 minutes

Cron times are interpreted in your local timezone.

---

Calendar

A human-friendly alternative to cron for common recurring patterns.

FieldDescription
Frequencydaily, weekly, or monthly
TimeHH:MM (local time)
Days of week(weekly only) which days to run, e.g. Mon, Wed, Fri
Day of month(monthly only) which day, e.g. the 1st

Examples:

  • Daily at 2:00am
  • Weekly on Monday and Thursday at 9:00am
  • Monthly on the 1st at midnight

---

Manual

The job has no automatic schedule — it only runs when you explicitly click Run now.

When to use: Jobs you want to control explicitly, ad-hoc tasks, or jobs that are part of a human-supervised workflow.

---

How the Scheduler Works

OpenHelm's built-in scheduler checks for due jobs every 60 seconds. When a job's next scheduled fire time falls within the current minute, the scheduler creates a queued run.

Jobs execute with configurable concurrency — by default one job at a time. Increase this to 2 or 3 in Settings → Max Concurrent Runs to run jobs in parallel.

Next Fire Time

The scheduler tracks a nextFireAt timestamp for each job:

Schedule typeHow nextFireAt is updated
OnceSet to null after firing; never fires again
IntervalSet to completion time + interval after each run
CronCalculated as the next matching cron occurrence from now
CalendarCalculated as the next matching calendar occurrence from now
ManualAlways null; never auto-fires