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.
| Field | Description |
|---|---|
| Fire at | Date 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.
| Field | Description |
|---|---|
| Amount | A number |
| Unit | minutes, 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.
| Field | Description |
|---|---|
| Expression | Standard 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 minutesCron times are interpreted in your local timezone.
---
Calendar
A human-friendly alternative to cron for common recurring patterns.
| Field | Description |
|---|---|
| Frequency | daily, weekly, or monthly |
| Time | HH: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 type | How nextFireAt is updated |
|---|---|
| Once | Set to null after firing; never fires again |
| Interval | Set to completion time + interval after each run |
| Cron | Calculated as the next matching cron occurrence from now |
| Calendar | Calculated as the next matching calendar occurrence from now |
| Manual | Always null; never auto-fires |