cronstable
Container-friendly, leader-electing, fault-tolerant cron replacement with a built-in web dashboard, DAG orchestration, and durable state.
Open source alternative to:
cronstable is a stability-focused cron replacement written in Python. It accepts jobs in YAML (or classic crontab format as-is), runs them on schedule, and adds everything the bare cron daemon never had: retries with exponential backoff, failure notifications via Sentry/Mail/Slack-compatible webhooks, an optional HTTP REST API, and a self-contained web dashboard with live log tailing, run history, keyboard-first control and ten themes.
It is built for hardened production containers out of the box: the published image runs non-root with a read-only root filesystem, RuntimeDefault seccomp, all Linux capabilities dropped, and never needs a writable working directory or temp files, so it slots into locked-down Kubernetes PodSecurity profiles unmodified. Multi-architecture images are published to GHCR and Docker Hub across Debian, Alpine, Ubuntu, RHEL, Fedora, openSUSE, Amazon Linux and distroless bases, and a self-contained binary (with embedded Python) ships for Linux (glibc & musl), macOS (signed and notarized) and Windows.
Opt-in features turn it into a small workflow platform: a durable state store (local directory or S3) gives jobs missed-run catch-up, retries that survive a restart, and a K/V, lock, cursor, idempotency-key and artifact API; DAG orchestration adds dependsOn graphs with XCom data hand-off, sensors, human approval gates and backfill; and leader-elected clustering over mutual TLS lets several replicas run from one config without double-firing. Native Prometheus metrics, optional per-job CPU/memory monitoring, an MCP server for AI agents, and a live incident timeline with a multi-tail console round out the 3 a.m. experience.
Categories:
Build with:
Frequently Asked Questions
What does cronstable offer that plain cron does not?
cronstable runs scheduled jobs defined in YAML or classic crontab format and adds retries with exponential backoff, failure notifications via Sentry, Mail, or Slack-compatible webhooks, and an optional HTTP REST API. A self-contained web dashboard provides live log tailing, run history, keyboard-first control, and ten themes. The project also publishes native Prometheus metrics and an MCP server for AI agents.
Can cronstable run in locked-down Kubernetes environments?
Yes. The published container image runs as a non-root user with a read-only root filesystem, RuntimeDefault seccomp, and all Linux capabilities dropped, and it never needs a writable working directory or temp files. That lets it fit into strict Kubernetes PodSecurity profiles without modification. Multi-architecture images are published to GHCR and Docker Hub across many base images, including Alpine, Debian, and distroless.
How does cronstable handle missed runs and restartable workflows?
With the optional durable state store, which can live in a local directory or S3, cronstable gives jobs missed-run catch-up and retries that survive a restart. It also provides K/V, lock, cursor, idempotency-key, and artifact APIs. On top of that, opt-in DAG orchestration supports dependsOn graphs with XCom data hand-off, sensors, human approval gates, and backfill, and leader-elected clustering over mutual TLS lets several replicas run from one config without double-firing.
Repository details
Updated 8/8/2026, 8:54:05 AM
View Repository