Scheduling

Intervals, fixed daily times, active-hours windows, sleep behaviour, and every state a recurring job can display.

A recurring job fires on an interval or at fixed times of day, optionally constrained to an active-hours window.

There are no cron expressions. This covers the cases that actually come up and stays readable at a glance.

Active hours

The active-hours window is optional and absent by default — a job with no window fires at any hour, which is usually what you want.

The window uses your machine’s own time zone, read from the system. There are no named time zones to configure and nothing to keep in sync when you travel.

Sleep, and why there is no catch-up

If the machine sleeps, no turn fires. OFM does not wake the machine.

The keep the machine awake option suppresses idle-sleep while the job is active. It does not override a closed lid, which forces sleep on most laptops — that is an OS-level behaviour, not something OFM can bypass.

Missed slots are never replayed. When the machine comes back, the next slot is recomputed from that moment. A laptop reopened after three days runs one turn, not the 144 it skipped.

This is a deliberate choice: replaying a backlog of scheduled work on a machine that just woke up is how you burn a day of quota before you have finished making coffee.

Minimum interval and priority

Setting Default Note
Turns per day (default) 24 0 = unlimited
Minimum interval 300 000 ms technical floor = the scheduling pass interval
Default priority 40 lower = runs after human work
Concurrent sessions 3 global cap on the orchestrator pool
Never take the last free slot off orchestrator pool only
Engine paused off nothing launches while the pause holds

A job can override the daily cap on top of the global setting: leaving turns per day empty inherits the setting, 0 means unlimited.

Displayed states

State Meaning
pending not time yet
running a turn is in progress
turn already running the slot is deferred, a previous turn hasn’t finished
no free slot deferred, the orchestrator pool is saturated
outside window the slot falls outside the active-hours window
empty checklist nothing was launched, for lack of a checklist
daily limit reached the configured cap is spent — Run now still works
scheduler paused the orchestrator engine is paused

An empty checklist fires no turn at all. That is a saving, not a bug.

Run now

Run now ignores the time, the active-hours window and the daily cap.

It will never start a turn while one is already running for that job — starting a second turn into a live session would corrupt it.

Frequently asked

Are missed slots replayed when the machine comes back?
No. The next slot is recomputed from the moment the machine started up. A machine off for three days does not fire the turns it missed.
Can I force a turn outside its schedule?
Yes — "Run now" ignores the time, the active-hours window and the daily cap. It will not start a turn while a previous one is still running.

Last updated