⚙️ rusty-sched v0.2.1

Autosys power.
One binary. Zero hassle.

Open-source job scheduler built in Rust. SQLite or Postgres. Web UI with inline editor, live log streaming, job stats, Autosys JIL import, conditions DSL, retries, and alerts. Get running in 60 seconds.

🐧 Linux  ·  🍎 macOS  ·  🪟 Windows  ·  MIT / Apache-2.0

Why another scheduler?

Every option has a fatal flaw.

cron

No monitoring. No retries. No UI. No alerts. No history. Silent failures.

🌪️

Airflow

Python DAGs, scheduler + workers + DB + executor + Redis. Overkill for running a shell script.

🟢

Cronicle

Node.js (~100MB RAM), flat-file storage, no SQL backend, no Autosys DSL, no JIL import.

🦀

rusty-sched

Single Rust binary (~4MB RAM). SQLite or Postgres. Autosys conditions DSL. JIL import. Inline editor. Live logs. Reliable as cron, powerful as Autosys. Free forever.

60-second quickstart

No dependencies. No setup. No registration.

1. Install (Linux / macOS)

curl -fsSL https://github.com/jdp5949/rusty-sched/releases/latest/download/install.sh | sh

Install to custom prefix: PREFIX=$HOME/.local ... | PREFIX=$HOME/.local sh

1. Install (Windows PowerShell)

irm https://github.com/jdp5949/rusty-sched/releases/latest/download/install.ps1 | iex

2. Start the server

# SQLite (default — zero config)
rusty-sched server

# Postgres
rusty-sched server --db-url postgres://user:pass@host/dbname

Open http://localhost:8080 — that's it.

3. Create a job via CLI

cat <<EOF | rusty-sched apply -f -
name: nightly-etl
trigger:
  cron: "0 2 * * *"
command: /opt/etl/run.sh
max_attempts: 3
backoff_secs: 30
timeout_secs: 3600
EOF

4. Or import an existing Autosys JIL file

rusty-sched jil -f my_jobs.jil

What's in v0.2

Shipped and working today.

📅

Flexible Triggers

Cron, interval, one-shot, manual, dependency, webhook, file watch.

🧩

Conditions DSL

Full Autosys expression parser: success("a") AND failure("b"). Short forms s/f/d/n/r. AND/OR/NOT/parens.

📄

JIL Import

Parse Autosys JIL text files and import jobs directly. Migrate from Autosys in minutes.

🔁

Retries + Timeouts

Max attempts, backoff delay, hard timeout. Live KILLJOB via API or CLI.

🖥️

Web UI + Inline Editor

React + Tailwind. CodeMirror inline job editor. Live log tail. Run history. Pause/resume/trigger.

📊

Job Stats + Sparklines

Success rate (24h), p50/p99 duration, last failure. Sparkline of last 20 runs per job.

📜

Persistent Log Streaming

stdout/stderr stored in DB (100MB cap). Stream to UI in real time. Replay after restart.

🗄️

SQLite + Postgres

Zero-config SQLite by default. Pass --db-url postgres://... to use Postgres. Same binary.

📣

Alerts

Email (SMTP / Gmail app password), Slack webhook, generic JSON webhook. Per-job config.

⌨️

Full CLI

apply / update / delete / trigger / pause / resume / runs / jil / sendevent KILLJOB

🔜

Auth / RBAC v0.3

Session login, roles (admin/operator/viewer), audit log.

🔜

HA Cluster v0.4

3-node embedded Raft. Sub-second failover. Zero missed fires.

How it stacks up

✅ done  ·  🔜 planned  ·  ❌ not available

rusty-sched Cronicle cron Airflow Autosys
Single binary❌ Node.js
RAM footprint~4 MB~100 MB<1 MB~500 MB~2 GB
SQLite / zero-configflat files
Postgres support
Web UI
Inline job editor
Conditions DSL (Autosys-style)Python only
JIL import
Retries + backoff
Live log streaming
Job stats + sparklines
Live KILLJOB
Email + Slack alerts
Auth / RBAC🔜 v0.3
Multi-host agents🔜 v0.3
HA cluster🔜 v0.4⚠️
Open source + free❌ $$$

Stop fighting your scheduler.

One binary. SQLite or Postgres. Web UI. Conditions DSL. Zero ops overhead.

★ Star on GitHub