cronstable // feature comparison v1.2.8 #5978710a7e1f --:--:-- UTC live ▶ open dashboard
cronstable / kraahn-stuh-bl /

As simple as cron, as capable as Airflow, in one daemon.

Point cronstable at the crontab you already run and it behaves like plain cron. Reach for DAGs, durable state, leader-elected clustering and a live dashboard only when you need them, all from one dependency-free daemon. And when you want it, a built-in Model Context Protocol server lets an AI agent drive the whole thing.

24 / 24native features 5-in-1scheduler · DAGs · state · cluster · console 23MCP tools 0new dependencies 13OS × arch builds
▶ Explore the live dashboard An interactive board that drives every view: jobs, DAGs, the cluster, durable state and live logs. Synthetic data; no cluster required.

Start simple, scale when you're ready

The same binary covers the whole range. Run it as a nicer cron on one box, or turn on the orchestration, HA and agent tooling as you grow. You never swap tools or rewrite your jobs to move from one end to the other.

Homelab / single box

Point it at the crontab you already have and keep it. One static binary, no database, no broker, no daemon zoo. It stays out of your way and only does what a cron does until you ask for more.

Team / production

Switch on DAGs, leader-elected HA, fenced exactly-once, a durable state store, metrics and the agent interface. The same binary reaches Airflow-class orchestration without the metadata DB or the worker fleet.

How it stacks up

cronstable versus its closest cron-family competitors, plus Apache Airflow as a heavier orchestrator for scale.

Capability cronstable
24 native
yacron
Python · YAML
7 native
supercronic
Go · crontab
5 native
Ofelia
Go · Docker
3 native
dkron
Go · distributed
8 native
Cronicle
Node · master/worker
9 native
K8s CronJob
native resource
6 native
Airflow
Python · orchestrator
13 native
Diff. class
AI & agent controlSignature
MCP server for AI agents
observe & control
23 tools · read-only default +3rd-party cluster MCP +draft; 3rd-party wrapper
Agent triage & resources
canned playbooks + context
5 prompts + URI resources
Scheduling core
YAML job configuration
native YAML crontab +via dag-factory
Classic crontab files as-is
Vixie /etc/crontab
runs it unchanged import only
Arbitrary per-job timezones
any IANA zone, per job prefix hack
Concurrency policy + timeouts
execution & kill timeout
policy + exec/kill timeout no timeout no timeout
Retries with exponential backoff
backoff · survives restart no backoff fixed delay
Missed-run catch-up
after downtime
durable catch-up one run only
Orchestration & workflows
DAGs / dependency graphs
durable workflow engine
fan-out · sensors · resume chaining only chains only +Argo / Tekton
Cross-task data hand-off
XCom
XCom between tasks +Argo
Human approval gates
pause for sign-off +Argo
Backfill / historical reruns
whole-DAG backfill time machine
Distributed & fault-tolerant
Clustering + no double-run
replicas from one config
mTLS leader election · quorum
Fenced exactly-once
lease / lock fenced
fenced via lease backend no fencing no fencing
Durable state store for jobs
KV · locks · cursors · secrets
+ idempotency & artifacts PV/Secrets only Variables/secrets
Observability & control
Live web dashboard
tail · run · cancel
live tail · 10 themes no cancel/tail +separate UI
HTTP REST control API
status · start · cancel · history
Prometheus + statsd metrics
both, native +kube-state-metrics
Per-job resource monitoring
CPU time · peak memory
whole process tree Prom gauges +metrics-server
Failure reporting
mail · Sentry · Slack
+ webhook & shell Sentry only Pro for per-job +Alertmanager
Platform & deployment
Native Windows + macOS + Linux
all three, native Docker-centric no Windows
Self-contained multi-arch binaries
no runtime install
8 Linux arches + mac + win x86-64 only
Hardened container images
non-root · read-only · distroless
+ 8 distro variants you harden it not distroless
Minimal runtime dependencies
pure Python · MCP adds none 8 pip deps

Everything else it packs in

The agent interface gets the attention, but most of cronstable is the scheduler under it: a DAG engine, a fenced cluster, a durable state store and a live console, all in the same dependency-free daemon.

DAG engine

A durable workflow engine rather than plain job chaining: fan-out, sensors that wait on external conditions, and XCom hand-offs between tasks. Runs survive a restart and resume mid-flight; pause on a human approval gate, then backfill history when you need to.

fan-outsensorsXComapproval gatesbackfillresume
Fenced, elected cluster

Run replicas from one config with mTLS leader election and quorum, so a job never double-fires. Fenced exactly-once execution through a lease backend keeps a stalled leader from overwriting its successor's work.

mTLSleader electionquorumfenced exactly-once
Durable state store

A store your jobs can use directly: KV, locks, cursors, secrets, idempotency keys and artifacts, all surviving restarts. It runs without an external database or Redis.

KVlockscursorssecretsidempotencyartifacts
Live console

A web dashboard that tails logs, runs and cancels jobs on demand, and walks any DAG's task graph, with 10 phosphor themes. Backed by an HTTP REST API and native Prometheus + statsd.

live tailrun/cancelREST APIPrometheus10 themes
Scheduling core

Runs your classic Vixie crontab files unchanged, with per-job IANA timezones, concurrency policies, exec/kill timeouts, retries with exponential backoff, and missed-run catch-up after downtime.

crontab as-isper-job TZtimeoutsbackoffcatch-up
Portable & hardened

Runs natively on Windows, macOS and Linux, shipped as self-contained binaries across 13 OS × arch targets, plus distroless images that run non-root on a read-only root filesystem. Adds zero new dependencies.

WinmacLinux13 buildsdistrolessnon-root

One cool thing about cronstable

we're the only scheduler with a native agent interface.

Built-in MCP server

Point Claude, Cursor or Copilot at your scheduler.

cronstable speaks the Model Context Protocol natively, served at POST /mcp over Streamable HTTP and through a cronstable mcp stdio bridge for desktop clients. It's written in pure Python against MCP revision 2025-11-25. Enabling it adds zero new dependencies. The agent gets read-only access until you grant it write tools.

# wire it to Claude Code (remote or local)
claude mcp add --transport http \
  cronstable https://host/mcp \
  --header "Authorization: Bearer $TOKEN"

$ cronstable mcp --check
mcp check: ok, protocol 2025-11-25,
  23 tool(s) at http://127.0.0.1:8080/mcp
Observe
  • Every job, run & trend: status, history, live log tails
  • DAGs, their runs and XCom data hand-offs
  • The cluster & fleet, node-by-node
  • Metrics and the durable state store
Act · opt-in
  • Run or cancel a job on demand
  • Trigger, backfill or approve a DAG
  • Every write needs confirm: true
  • Backfills default to a dry-run preview
Triage playbooks
  • Root-cause a failing job
  • Walk why a DAG run failed
  • Scope the blast radius of a change
  • Fleet-health digest & backfill plan
Safe by default
  • Read-only until you opt in to mutating tools
  • Inherits web auth; fails closed with no token
  • Secret values & KV data redacted
  • Origin & body defenses against rebinding
5-in-1
Orchestration without the Airflow overhead

Scheduler, durable DAG engine, a job-facing state store, a leader-elected cluster and a live console in one binary. It matches Airflow's orchestration without the metadata DB, the separate workers, or the Python-only footprint.

1 of 8
Only cronstable ships a native MCP server

Across every tool surveyed, it's the only native agent interface. Airflow and Kubernetes reach MCP only through third-party, whole-system add-ons, and Airflow's own server is still a draft proposal.

0 deps
Portable and dependency-free

Pure-Python with no new dependencies, self-contained binaries for 13 OS/arch targets, and images that run non-root on a read-only root filesystem.

See it running

Open the live dashboard and drive a nine-node fleet yourself: tail a job's logs, walk a DAG's task graph, watch leader election, and inspect the durable state store.