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.