Registry-first
Every behavior change is a row write, never a code or deploy change. A job’s URL, auth, retry backoff and looping take effect on its next attempt — the worker re-reads the row every time.
Registry-first
Every behavior change is a row write, never a code or deploy change. A job’s URL, auth, retry backoff and looping take effect on its next attempt — the worker re-reads the row every time.
Loop, retry and pooling stay separate
Success-path looping, error-path backoff and parallel fan-out are three independent per-job mechanisms. A job can loop without retrying, retry without looping, or do either across a pool of 20.
HTTP and script jobs
Call an endpoint on a schedule, or run Bash, JavaScript/TypeScript or Groovy. Each runtime executes in its own worker, on its own queue — a job can never run in the wrong runtime’s container.
Visibility over automation
Per-attempt call history, heartbeats, per-job activity charts, Prometheus metrics per service, an audit log, and the embedded River UI for raw queue internals.