Scheduling routines
A routine is a cron-scheduled run of a task or runbook. Instead of kicking off a run by hand, you give it a cadence and Jetty fires it for you — on the hour, every morning, once a week, whatever you set.
Why schedule
There are two everyday reasons to put a task on a schedule:
- Keep evals fresh. Models drift. Providers change defaults, deprecate versions, and re-tune behind the same name. A runbook that passed at 84% last month can quietly regress without a single line of your code changing. A nightly routine re-runs the eval so you catch the drift instead of discovering it in production. See evaluating & optimizing.
- Recurring jobs. A daily report, a weekly digest, a scheduled data pull — anything you'd otherwise remember to trigger yourself.
Create a routine
Routines hang off a task. In the app, open the task and go to its Routines tab; you can also create and manage them through the Routines API (see below). A routine has:
- A cadence: a cron-like schedule that says when it fires.
- Controls: pause it, resume it, or run it now without waiting for the next tick.
Pausing is the safe way to stop a routine temporarily; the schedule is preserved, so resume picks up exactly where it left off. Run-now is handy for confirming a routine works before you trust it to run unattended.
What a firing does
A routine fires the same workflow as a manual run of that task — same steps, same config, same evals. There's no separate scheduled code path to keep in sync. Each firing produces its own trajectory, so your scheduled runs show up in the same history as your manual ones and carry the same recorded eval result. That's what makes routines the natural home for freshness checks: every night's run is one more dot on the same score over time.
The Routines API
Everything the Routines tab does is available over the API: full CRUD on routines plus run-now and listing past routine runs. Use it to provision schedules from infrastructure code, or to wire run-now into your own tooling. The methods and endpoints are in the API reference (the SDK exposes them too, as runRoutineNow and listRoutineRuns).
A scheduled eval is only useful if it's a good eval. See evaluating & optimizing for how scores get recorded, and the API reference for the routine endpoints.