Skip to content

Cron jobs

A Cron service runs your code on a schedule and exits — perfect for nightly jobs, cleanups, report generation, or any recurring task.

Set a standard 5-field crontab expression (minute hour day month weekday), or use a convenience alias like @daily, @hourly, or @weekly. The service page shows the schedule and the next run time, and validates the expression as you type.

  • Run to completion — each run starts your container, runs your command, and stops when it exits. You’re billed for the run time, not for idle time between runs.
  • Overlap protection — if a run is still going when the next tick arrives, the new run is skipped (no pile-ups).
  • Run now — trigger a one-off run immediately from the service, without waiting for the schedule.
  • Live reschedule — change the schedule any time; it takes effect immediately, no redeploy needed.

Every run’s output is captured and browsable per-run, so you can see exactly what happened on any given tick — the same runtime logs view, scoped to cron runs.

Create the service with type Cron (from a Git repo or a Docker image, like any service), set the schedule and the command to run, and deploy. Deploying builds/updates the image and registers the schedule — the actual runs happen on each tick.

  • Gate or verify runs with Deploy hooks.
  • For always-on background work instead of scheduled runs, use a Worker (Service types).