Recurring work
Wake an agent on a schedule, hand it a checklist, and let it report only when there is something to report — OFM's recurring jobs, on your own subscription.
A recurring job wakes a CLI agent on an interval or at fixed times, has it work through a checklist, act if there is anything to act on, and acknowledge silently when there isn’t.
You can run as many recurring jobs as you want, across as many projects as you want, alongside the sessions you drive by hand.
New in 3.5.0.
How a turn works
- At each slot, OFM starts an interactive CLI session in the project — the same way it starts one when you click.
- The agent reads your checklist: what should be verified this turn.
- It acts if needed, then ends the turn by writing one of two things:
- a report —
report/<turn>.md, which shows up in the UI as a link you can open; - an acknowledgement —
ack/<turn>.ok, meaning nothing to do.
- a report —
An acknowledgement is silent: the status line updates, and nothing else. Only a report becomes something to read.
This two-outcome convention is the whole point. A scheduled agent that reports every turn produces noise you learn to ignore within a week; one that reports only on real work stays worth reading.
What it is not
It does not make the agent smarter. A genuinely undecidable question is not guessed at — it stops the turn and waits for a human. It arrives in the approval queue, tagged as coming from a recurring job, with a system notification.
It is not a full cron. You get intervals, fixed daily times, and an optional active-hours window. There are no five-field expressions and no named time zones — the active-hours window uses your machine’s own time zone.
24/7, not nightly
The active-hours window is optional and absent by default: a recurring job fires at any hour. The daytime case is in fact the most reliable one — machine on, no sleep, no missed slot.
If the machine sleeps, no turn fires. The keep the machine awake option suppresses idle-sleep while the job is active, but a closed lid still forces sleep on most laptops. That is not something OFM can work around, and OFM does not wake the machine.
Missed slots are never replayed. A machine switched back on after three days does not fire the 144 turns it missed: the next slot is recomputed from the moment it started up. This is deliberate.
The task library
New in 4.0.0. A recurring job is a long form — CLI, sub-agent, cadence, active hours, turns per day, checklist, prompt template, pinned model settings — and you were re-typing all of it on every project.
The editor now has two tabs: the form, and a library where you file it and take it back out.
- Save to library asks for a filing name, pre-filled from the job’s label. A name already taken offers an explicit replacement rather than creating a silent duplicate.
- Search matches across the entry name, its note, the job name, the CLI, the sub-agent and the checklist. Every term must match.
- Reusing an entry fills the form and switches back to it. Nothing starts. A template three months old should not begin running on a new project from one click — you reread it, then save.
- An entry stores no project, which is the whole point: a library tied to one project would save you time exactly once.
- Deleting an entry asks for confirmation and leaves the jobs already created from it alone.
What a recurring job cannot block
A session you open by hand always starts, immediately, even when every orchestrator slot is busy running turns. The concurrent-session cap only counts orchestrator workers.
Recurring jobs are the only producers of work in the engine, so slot contention only ever happens between turns. The never take the last free slot setting still keeps one slot idle if you want a guaranteed margin.
Where to go next
- Checklists and reports — writing the instruction the agent reads every turn
- Scheduling — intervals, fixed times, active hours, and the states a job can display
- Approval mode and CLI flags — the setting that decides whether unattended turns work at all
- Quota, limits and safety — what a turn consumes and what it can overwrite
Frequently asked
- Does a recurring job bill against the API?
- No. A turn is the same interactive CLI session OFM always drives, started by a timer instead of by your click. Flags that switch a CLI into programmatic mode are rejected outright.
- What happens if there is nothing to do?
- The agent writes an acknowledgement instead of a report. The job's status line updates and nothing else happens — no notification, no file to read.
- Will a recurring job run while my laptop is asleep?
- No. If the machine sleeps, no turn fires, and OFM never wakes it. Missed slots are not replayed when it comes back.