FeaturesSchedules

Work that starts on its own.

Some work comes round like the bins: dependency updates on Monday, a hunt for flaky tests on Saturday, benchmarks every night. Give an agent the task and the time, once or again and again, and each run is a session of its own that you follow like any other, on your Claude subscription.

Set one up How schedules work

The Shop project's schedules: weekly dependency updates at 02:00 and a weekly design check at 09:00, each with when it runs next and how its last run went. The Shop project's schedules: weekly dependency updates at 02:00 and a weekly design check at 09:00, each with when it runs next and how its last run went.
The Shop project's schedules on a phone. The Shop project's schedules on a phone.
When As often as it takes

Every hour, day, weekday, week or month in your time zone, once at a set time, on any cron, or only when asked.

Calm Runs don't pile up

A run is skipped while the last is still at work, or while its plan is at its limit, and says so.

Now Or right away

Run one now from the app, with fctl schedules run, or from another tool with an access token.

Fair On its owner's plan

A schedule runs on the subscription of whoever set it up. Change someone else's, and it runs on yours.

Not sure what to schedule? Start from an idea.

A project without schedules shows what they're good for, and four ideas that most projects can use tomorrow: update dependencies, triage new issues, tidy the project's memory, and learn from the week's reviews. Pick one, and the form fills itself in for you to adjust.

The Driver app's Schedules tab before it has any: what schedules do, a preview of the week, and four ideas to start from. The Driver app's Schedules tab before it has any: what schedules do, a preview of the week, and four ideas to start from.
The same tab on a phone. The same tab on a phone.

A task, a time, and how hard to think.

A schedule is what you'd write in the task box, with a time. Choose the model and effort its sessions start with, the branch they start from and how much they may do on GitHub: a triage run that only labels and comments never needs to push.

  • Your time zone, not UTC. 09:00 on Monday stays 09:00 through summer time.
  • From the task box, too. Write the task, then pick Schedule rather than Start.
  • Paused, not forgotten. Pause one for the holidays, and it waits until it's resumed.
A new schedule from the Update dependencies idea: its task filled in, every Monday at 09:00, and the next three runs listed. A new schedule from the Update dependencies idea: its task filled in, every Monday at 09:00, and the next three runs listed.

Every run, a session.

At two in the morning, the shop's weekly dependency updates ran. The agent got its task and a note from fctl: which schedule started it, how the last run went, and that nobody was watching, so it should decide what it can and say plainly what only a person can. By breakfast it had updated nine packages, left two majors for a person, and opened the pull request.

Follow it like any session
shop#227, Update 9 npm dependencies: started by the Weekly dependency updates schedule, with its task, fctl's note and the pull request it opened. shop#227, Update 9 npm dependencies: started by the Weekly dependency updates schedule, with its task, fctl's note and the pull request it opened.

Or from the terminal.

Everything the tab does, fctl schedules does too, with --json for scripts. A schedule that runs only when asked is a task another tool can start with one call, with context of its own: an issue that was just opened, a deploy that just went out.

Every schedules command
noor@Noors-MacBook-Pro ~/src/milkfloat

fctl schedules add "Triage new issues" -p milkfloat --cron "0 8 * * 1-5" --github comment -m "Label the issues opened since yesterday, ask for what's missing, and close duplicates."

✓ Set up Triage new issues in milkfloat

Runs every weekday at 08:00 (Europe/Stockholm) · next in 22h 50m

Its runs start on your Claude subscription. Run it now: fctl schedules run sch_01K8ZTQ3W6M2HB0XKD4PVC9N7E

fctl schedules -p milkfloat-bench

● Nightly benchmarks sch_01K2M7RW4E8XQ5TB9CJZ3HDN6P

Runs every day at 01:00 (Europe/Stockholm) · next in 15h 50m · on Noor Haddad's Claude subscription

last run started session #41 Benchmark main on 356 instances · on time · 8h ago

In the docs

Times and time zones, whose subscription a run uses, and running one from elsewhere.

Start a factory tonight.

curl -fsSL https://fctl.sh/install | sh