floo.app.toml and they are synced on every deploy.
Declare in config
Add[cron.<name>] sections to floo.app.toml:
Fields
Deploy and verify
Push to GitHub or runfloo redeploy. Cron jobs are synced on every deploy — new jobs are created, changed jobs are updated, removed jobs are deleted.
Manually trigger a job
Test a job without waiting for its schedule:Common schedule expressions
How it works
- You declare
[cron.<name>]infloo.app.toml - The CLI sends cron definitions to the API during deploy
- The API’s
_sync_cron_jobs()creates, updates, or deletes CronJob records - Jobs run inside the specified service’s container image with the same environment variables
DATABASE_URL, REDIS_URL, and other env vars as the service they run in.
Failure handling
Cron jobs do not retry. Each scheduled run executes once; if the command exits non-zero or exceeds itstimeout, that run is marked failed and the next recovery is simply the next scheduled run — there is no automatic retry or backoff.
For runs where a miss matters, make the command idempotent and handle retries inside it, and alert on failure: floo logs --app my-app --cron <job> shows the cron output with [cron:<job>] attribution, and agent webhooks can route repeated failures to your agent or on-call.
Agent workflow
CLI Reference
See the exact
floo cron list and floo cron run flags, JSON shape, and --dry-run behavior.