Download Latest Version v0.12.0 source code.zip (9.7 MB)
Email in envelope

Get an email when there's a new version of runwisp

Home / v0.9.0
Name Modified Size InfoDownloads / Week
Parent folder
checksums-sha256.txt 2026-06-12 370 Bytes
runwisp-darwin-arm64.tar.gz 2026-06-12 9.5 MB
runwisp-darwin-x64.tar.gz 2026-06-12 10.2 MB
runwisp-linux-arm64.tar.gz 2026-06-12 9.1 MB
runwisp-linux-x64.tar.gz 2026-06-12 10.0 MB
README.md 2026-06-12 5.3 kB
v0.9.0 source code.tar.gz 2026-06-12 4.7 MB
v0.9.0 source code.zip 2026-06-12 5.2 MB
Totals: 8 Items   48.8 MB 0

Added

  • runwisp import cron / runwisp import supervisord. Convert an existing crontab or supervisord config into an annotated runwisp.toml, with inline # TODOs for anything that needs a human. See Migrating from cron and Migrating from supervisord.
  • depends_on on [services.*]. Gate a service's boot on other services becoming healthy, with reverse-order teardown on shutdown — boot ordering only, never a workflow DAG, and it never deadlocks (a dependency that won't come up starts the dependent anyway with a warning). See Boot order with depends_on.
  • include on [daemon]. Glob extra TOML files (e.g. conf.d/*.toml) into the config so tasks can be split across files; collections accumulate, names stay unique across files, and singleton tables stay in the root. See Splitting config across files.
  • runwisp reload (and SIGHUP) for explicit, validated config reload. Pick up runwisp.toml task add/change/remove edits in a running daemon without a restart; validate-first, so a bad edit or a restart-only change is rejected and the live set is untouched. See Reload.
  • jitter on [tasks.*] / [defaults]. Pace cron tasks that share a fire time through a daemon-wide one-at-a-time gate so they take turns instead of stampeding — each runs as soon as the gate frees and slips up to its window only under contention. See jitter.
  • Missed-run alerts. A scheduled run skipped because the daemon was down is detected on restart, recorded as a browsable missed run, and raised as a failure-level alert — silence it per task or globally with notify_on_missed. See Missed ticks.
  • working_dir and shell on [tasks.*] / [services.*]. Run a command in a specific directory and under a chosen interpreter (e.g. /bin/bash); shell also takes a [defaults] value. See Working directory & shell.
  • exit_codes on [tasks.*] / [services.*] / [defaults]. List the exit codes treated as success (default [0]) so a non-zero "nothing to do" code doesn't trip retries or alerts. See Retries & timeout.
  • stop_signal on [tasks.*] / [services.*] / [defaults]. Choose the signal that opens the stop ladder before SIGKILL (default SIGTERM); SIGKILL skips the grace window. See Retries & timeout.
  • priority and autostart on [services.*]. priority fixes the boot start order (lowest first, deterministic — not a dependency); autostart = false defines a service that boots stopped until you start it from the UI/API. See Startup.
  • umask on [tasks.*] / [services.*]. Set the octal file-creation mask for a run (e.g. "027"); applied per-process so concurrent runs never affect each other. See Working directory & shell.
  • run_on_start on [tasks.*]. Fire a task once at daemon boot, on top of any cron — the @reboot equivalent, tagged triggered_by = startup. See Scheduling.
  • user on [tasks.*] / [services.*]. Run as another OS user (user or user:group, name or numeric id) when the daemon runs as root. See Working directory & shell.
  • start_retries on [services.*] / [defaults], plus FATAL services. A service that keeps fast-failing (exits below healthy_after) now tolerates start_retries failed starts in a row before going FATAL — it stops restarting, records a start_failed run, and rings the bell instead of flapping forever. See When a service can't start.
  • Six-field cron with second precision. cron now accepts an optional leading seconds field, so */30 * * * * * fires every 30 seconds aligned to the wall clock. Existing 5-field specs are unchanged. See Scheduling.

Changed

  • backoff_reset_after renamed to healthy_after, which now governs both the restart-backoff reset and the failed-start/FATAL threshold. See Healthy threshold.

Fixed

  • Spurious "managed by systemd" quit prompt. A daemon spawned by runwisp / runwisp demo from a systemd-scoped terminal no longer inherits INVOCATION_ID and falsely self-reports as service-managed, so the TUI's quit dialog offers "Shut Down" again.
Source: README.md, updated 2026-06-12