Added
@runwisp/jsfor Node.js apps: an npm package that runs your node-cron tasks under RunWisp, so every run is recorded with its output and exit code and shown in the Web UI. Swap the import and keep yourschedule()calls, or define tasks and services with everyrunwisp.tomlkey. See From node-cron.@runwisp/jsplugs into NestJS (replacing@nestjs/schedule), Nuxt and Next.js (running Nitro’sscheduledTasksand Vercel Cron jobs), and Astro.- Tasks and services take
sdk = trueto run inside an app that defines them through an SDK, andrunwisp daemon --appreads its config from that app. runwisp upgradeupdates RunWisp the way you installed it (Homebrew, apt, dnf, npm/bun/pnpm/yarn, or the install script) and can restart the daemon now, once it is idle, or later..deband.rpmpackages for x64 and arm64. They add the RunWisp apt or dnf repository, so regular system updates keep RunWisp current.- Read-only access:
RUNWISP_VIEWER_PASSWORDadds a second password that can view tasks, runs and logs but can’t trigger, start, stop, pause, delete or reload. The Web UI and TUI hide those controls for it, andrunwisp password --viewerprints or generates it. See Authentication. warn_afteron a task sends one notification when a run is still going after that long, without stopping it. It goes wherever failure alerts go, or to any[[route]]that listslong_running.- Docker-friendly by default:
[daemon] log_output(orRUNWISP_LOG_OUTPUT) prints task output to the daemon’s stdout astask | line, and the Docker image turns it on, sodocker compose logs runwispshows your job output. The image also runs RunWisp undertinito reap processes tasks leave behind. - A task with
compose_serviceandruncan leave outcompose_filewhen RunWisp runs in the same compose project; it needs only the Docker socket. runwispnext to a compose file offers a starter that schedules jobs in the running stack, then one that imports its services.runwisp import ofeliaconverts Ofelia jobs, from an INI config orofelia.*compose labels, into tasks.- Cron expressions accept
L(last day of the month),LW,15W(nearest weekday) andFRI#3/FRI#L(nth or last weekday). runwisp validate --explaindescribes each schedule in plain words and lists its next 3 firings in the scheduler’s zone, marking times a daylight saving change moves or skips.runwisp validateand daemon startup suggest ajitterwhen three or more tasks would start at the same second.- The TUI run list shows each run’s CPU time and peak memory, colored by how it compares with the task’s usual run, so an unusually heavy run stands out.
- The TUI task info (
i) shows the task’s timeout, log limit, retention and usual CPU and memory, and opens with the first lines of itsruncommand; presscfor the whole command. runwisp import cronnames jobs that Bun’sBun.cron()wrote into a crontab after their title.
Changed
- The TUI,
runwisp --help, CLI messages, the startup banner and log lines share the Web UI’s teal brand colors, readable on light and dark terminals. - A finished run’s header in the TUI reads
CPU 0.3s · RAM 3.3 MB, and shows just the memory on a narrow terminal. - A scheduled
compose_mode = "run"job leaves the service’s ports and network alias to the running stack, so it runs side by side with it. - When a
compose_servicecontainer isn’t running, the run log names the compose project RunWisp searched and how to point it at the right one. runwisp validatechecks that each task’scompose_serviceexists in itscompose_file.- Details in the Web UI writes long durations in days:
keep_for = "120d"rather than"2880h". - The Star button on the TUI Home screen works from the keyboard: press ↑ from the top row, then Enter.
- Builds from source skip the update check and
runwisp upgrade.
Fixed
- Tasks and services with
compose_filerun in the compose file’s own project, likedocker compose upin that directory, so a scheduled job joins the stack’s network and named volumes and can reachdband its data. A[compose.<alias>]block does the same unless it setsproject_name. - The TUI log search (
/) shows its results consistently and, like the shutdown spinner, uses the TUI’s own colors. - RunWisp is published to npm again with this release.
@everytakes whole seconds; an interval such as1500msis reported as a config error.runwisp validateruns without creating a data directory.
Security
- The login rate limit counts only wrong passwords: the first 5 are free, then the wait grows to at most 90 seconds, so signing in again, opening the Web UI from the TUI and remote CLI calls never get locked out.
- RunWisp warns in its log and in the notification bell when requests arrive through a reverse proxy that isn’t in
[daemon] trusted_proxies, with a link to the setup docs.
- v1.9.0 latest
- v1.8.0
- v1.7.1
- v1.7.0
- v1.6.0
- v1.5.1
- 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