RunWisp vs Rundeck: when you need a scheduler, not a platform.
Rundeck is runbook automation: a Java service that runs jobs over SSH across a node inventory, with ACLs, key storage and workflows. RunWisp is a single binary that runs scheduled jobs and services on the machine it's installed on. One is built for an ops team, the other for a person with a few servers.
Should you switch?
The 10-second version. Skim, decide, scroll down for the receipts.
Switch to RunWisp if
- You installed Rundeck to run a dozen cron jobs and now maintain a JVM and a database.
- Your jobs run on the box they're scheduled on, not over SSH to others.
- The open-source edition's 8 GB RAM minimum is more than the server you're scheduling on.
- You want missed-run alerts and job queueing without a commercial licence.
- You also need long-running services supervised.
- Regular cron syntax beats Quartz's seconds field and ? placeholders.
Stay on Rundeck if
- You run the same job across many nodes selected by tags.
- Different teams need different rights, written as ACL policies.
- Operators run self-service runbooks with options, without shell access.
- Jobs are multi-step workflows with error handlers.
- You need SSH and WinRM execution, Windows nodes, or key storage for credentials.
Yes / no, at a glance
Yes / no — and both columns win on something.
| Capability | Rundeck (open source) | RunWisp |
|---|---|---|
| Web UI + run history + logs | ✓ | ✓ |
| Retries + timeouts | ✓ | ✓ |
| Jobs as code | ✓YAML / XML import | ✓runwisp.toml is the config |
| Job options / parameters | ✓ | ✓typed params |
| REST API + CLI | ✓ | ✓ |
| Single binary, no runtime | ✗Java 17+ | ✓ |
| No external database | ~H2 is test-only | ✓embedded SQLite |
| Runs on a small VPS or Pi | ✗8 GB RAM minimum | ✓~30 MB idle |
| Standard 5-field cron | ✗Quartz syntax | ✓ |
| Missed-run detection | ~commercial | ✓ |
| Queue instead of skip on overlap | ~commercial | ✓skip / queue / kill |
| Slack / Telegram / Discord built in | ~plugins | ✓ |
| Long-running services | ✗ | ✓ |
| Terminal UI over SSH | ✗ | ✓ |
| Run on many nodes over SSH | ✓node inventory | ✗local only |
| ACL / role-based access | ✓ | ✗one password |
| Multi-step workflows + error handlers | ✓ | ✗ |
| Key storage for credentials | ✓ | ~secrets_file / ${file:} |
| Windows nodes | ✓WinRM | ✗Linux / macOS / WSL |
Pros & cons
What Rundeck does better
- Runs a job across many nodes, picked by name or tags, over SSH or WinRM.
- ACL policies per project, job and node, with LDAP login.
- Self-service runbooks: an operator picks options in a form and clicks Run, without shell access.
- Workflows with steps, error handlers and job references.
- Key storage for SSH keys and passwords, and a large plugin ecosystem.
- Backed by PagerDuty, with a commercial edition for SSO, HA clusters and support.
What RunWisp adds
- One static binary, about 30 MB of RAM idle, with SQLite and the web UI built in. No JVM, no database server to run.
- Installs in seconds with curl, Homebrew or Docker, on a VPS, a Raspberry Pi, a Mac or WSL.
- Plain 5-field cron, with an optional seconds field and per-task timezone.
catch_upand missed-run alerts, andon_overlap = "queue", with no licence. In Rundeck these are commercial features.- Slack, Discord, Telegram, ntfy, Gotify, Pushover, email and webhooks with no plugins, and repeat alerts grouped.
- Supervises long-running services with restarts and health checks in the same file.
- The TOML file is the live config, not an import. Edit, review, runwisp reload.
- A TUI over SSH as well as the web UI.
The simple case
A nightly backup at 03:00. Rundeck's job definition is loaded into its database; RunWisp reads the file directly.
# nightly-backup.yaml: import with rd jobs load, or via the GUI
- name: nightly-backup
loglevel: INFO
scheduleEnabled: true
schedule:
crontab: '0 0 3 ? * * *' # Quartz: seconds first, ? required
sequence:
commands:
- exec: /usr/local/bin/backup.sh # runwisp.toml
[tasks.nightly-backup]
cron = "0 3 * * *"
run = "/usr/local/bin/backup.sh" The version that runs in prod
Same backup, hardened. Rundeck runs it on db01 over SSH from a central server. RunWisp runs on db01 itself. If you have one or two such servers, the second model has fewer moving parts. If you have fifty, the first one starts to pay off.
- name: nightly-backup
description: Snapshot the data volume off-site
loglevel: INFO
scheduleEnabled: true
schedule:
crontab: '0 0 3 ? * * *'
multipleExecutions: false
timeout: 55m
retry:
retry: '2'
delay: 30s
nodefilters:
filter: 'name: db01'
notification:
onfailure:
- email:
recipients: '[email protected]'
sequence:
keepgoing: false
strategy: node-first
commands:
- exec: /usr/local/bin/backup.sh # runwisp.toml on db01 itself
[tasks.nightly-backup]
description = "Snapshot the data volume off-site"
cron = "0 3 * * *"
on_overlap = "skip"
timeout = "55m"
retry_attempts = 2
retry_delay = "30s"
retry_backoff = "exponential"
keep_runs = 60
notify = ["email-ops", "slack-ops"]
run = "/usr/local/bin/backup.sh" Migration cheat sheet
Rundeck job YAML on the left, runwisp.toml on the right.
| Rundeck | RunWisp |
|---|---|
schedule.crontab: '0 0 3 ? * * *' | cron = "0 3 * * *": drop the seconds and year, ? becomes * |
sequence.commands[].exec | run =; several steps become one script or a && b |
timeout: 55m | timeout = "55m" |
retry.retry + retry.delay | retry_attempts + retry_delay + retry_backoff |
multipleExecutions: false | on_overlap = "skip" (or queue / kill) |
| Job options | params, filled in from the UI, CLI or API |
notification.onfailure | notify = ["email-ops"] |
| Run Job webhook / API token | hook_tokens, scoped to one task |
| Key storage | secrets_file or ${file:/run/secrets/...}, masked in logs |
nodefilters | No equivalent. Install RunWisp on each node that runs jobs. |
Gotchas
No remote execution
RunWisp runs commands on its own machine. To act on another host you'd write ssh db01 ... in run, and RunWisp has no node inventory to pick hosts from. If “run this on every web node” is your daily work, Rundeck is the right tool.
One password, no roles
A RunWisp daemon has one password. Anyone who has it can run, stop and restart every task, though nobody can change task definitions through the UI. For CI, hook_tokens grant one task's actions without the password. Per-team permissions are out of scope.
Quartz cron doesn't paste in
Rundeck schedules use Quartz: a seconds field first, an optional year last, and ? in day-of-month or day-of-week. Convert each schedule by hand. Check the result with our cron checker.
Move the small stuff first
Teams often keep Rundeck for runbooks and move the boring schedules (backups, cleanups, report generation) to RunWisp on the hosts where they run. The two don't conflict.
FAQ
What is a lightweight alternative to Rundeck?
How much RAM does Rundeck need?
Is Rundeck free?
Can RunWisp run jobs on other servers?
Can I export Rundeck jobs to RunWisp?
Schedule the jobs without running a platform.
Install one binary on the box that runs the jobs, write a runwisp.toml stanza per Rundeck job, and watch the first run land with its exit code and output.
curl -fsSL https://get.runwisp.com | sh