Added
sudo runwisp takeoverretires cron in one command — imports your crontabs, installs RunWisp as a service, and disables cron, with--dry-runand--yesavailable. See Retiring cron.- First run on a root Linux box can now do the full cron cutover in one prompt. See Retiring cron.
[daemon] include_cronturns your existing crontabs into live RunWisp tasks — with captured output, history, and notifications, nothing rewritten. Seeinclude_cron.- First run now detects an existing crontab and offers to import it, alongside the existing docker-compose detection. See Take over from cron.
sudo runwisp service installnow flags a still-running cron and points you totakeover. See Retiring cron.[compose.<alias>.defaults]: a reserved sub-table whose policy keys (restart,start_retries,exit_codes,notify_on_*, …) apply to every imported compose service, with per-service overrides still winning — set a whole worker pool’srestart = "always"in one line. See Block defaults.runwisp importnow reports every job in the crontab — mapped cleanly, changed, needs a fix, or already yours — with--dry-runto preview first. See Converting crontabs.runwisp import --writekeeps imported jobs in their own file, separate from your hand-written config. See Converting crontabs.runwisp promotemoves an imported or crontab-sourced task into your ownrunwisp.toml. See CLI.- Official Docker images on Docker Hub:
runwisp/runwisp(Alpine + Debian, amd64/arm64). See Docker. scripts/install.sh, the script behindcurl -fsSL https://get.runwisp.com | sh: detects your OS/arch, verifies the download, and installs the binary. See Quick start.- New
sendmailnotifier sends email through the machine’s own mail server — no relay host or credentials needed. See Email (local MTA). - Tasks now show where they came from — your own TOML, an import, or a crontab — in
runwisp list,status --json, the API, dashboard, and TUI. - Config warnings now show up live in
runwisp reload,status,/api/info, and the TUI, not just at boot. See Reload. compose_mode: run a task’s command inside an already-running Compose service, or start a fresh one. Seecompose_mode.RUNWISP_CONFIG,RUNWISP_DATA,RUNWISP_HOST,RUNWISP_PORT,RUNWISP_TLSenvironment variables for the matching CLI flags and TOML settings. See[daemon].env_base = "clean"starts a task with a minimal environment instead of inheriting your shell’s. See Tasks.working_dir = "~"resolves to the home directory of whoever runs the task. See Tasks.- Running as root now defaults to system paths (
/etc/runwisp/runwisp.toml,/var/lib/runwisp). See CLI.
Changed
- Jobs already running under a live system cron are now held, not double-scheduled, until cron is retired — visible in
status,validate, the TUI, and the dashboard. See Held jobs. - Multi-line
runscripts now stop at their first failing command instead of finishing and reporting success anyway. Opt out withset +e. See Fail-fast. - New “runbook” visual design across the web UI and docs: monospace headings, hairline borders, teal accent, flat dark mode. No behavior changes.
- Redesigned login screen, with the RunWisp brand, a cleaner password field, and a “Where’s my password?” popover.
runwisp service installnow installs system-wide by default; use--localfor a per-user install. See Autostart.- The daemon and web UI are now licensed GPL-3.0-or-later (previously Apache-2.0); shared libraries stay Apache-2.0. See LICENSE.
- Removed most hover/focus/state animations — the UI now responds instantly. Motion stays only where it’s meaningful (spinners, live-run pulse, progress bars).
- Geist Mono now ships embedded in the binary, so identifiers (task names, run IDs, exit codes) render in the same monospace font everywhere.
runcan now be combined withcompose_file, running inside the service’s existing container. Seecompose_mode.runwisp import cronnow scopes a crontab’s settings to that crontab’s own tasks, instead of applying them globally. See How cron maps to TOML.- Imported jobs skip catch-up runs, like cron did — a missed run is still recorded, just not re-fired. See How cron maps to TOML.
runwisp import --quietnow only silences clean imports — jobs that need a fix are still listed. See CLI.[daemon] tlsnow defaults to"off". A non-loopback bind used to self-sign a certificate and serve HTTPS automatically; it now serves plain HTTP unless you opt in withtls = "auto"(self-signed HTTPS) or supplytls_cert/tls_key. See[daemon].
Fixed
runwisp execno longer reports success for a run that failed within milliseconds. See CLI.- A cron day-of-week of
7(Sunday) is now accepted, fixing skipped weekly jobs on stock Debian/Ubuntu boxes. See How cron maps to TOML. runwisp statusand the TUI header now show the live task set, not the one from when the daemon started.runwisp service install --dry-runnow runs its checks before reporting success. See Autostart.runwisp servicecommands now respect--config/--dataand their environment-variable equivalents. See Autostart.
Security
- Compose task secrets are now passed via environment variables, never on the command line. See Compose.
- A control-plane peer can no longer override a task’s environment unless
[daemon] allow_cloud_dispatchis on, and can’t overwrite a task defined inrunwisp.toml. /api/instanceno longer responds to requests via a reverse proxy, keeping local paths private. See Reverse proxies.
- v1.5.1 latest
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- v0.16.4 pre
- v0.16.3 pre
- v0.16.2 pre
- v0.16.1 pre
- v0.16.0 pre
- v0.15.1 pre
- v0.15.0 pre
- v0.14.0 pre
- v0.13.2 pre
- v0.13.1 pre
- v0.13.0 pre
- v0.12.0 pre
- v0.11.0 pre
- v0.10.0 pre
- v0.9.0 pre
- v0.8.0 pre
- v0.7.0 pre
- v0.6.0 pre
- v0.5.0 pre
- v0.4.0 pre
- v0.3.0 pre
- v0.2.0 pre
- v0.1.2 pre
- v0.1.0 pre