What is Walis
Walis is a self-hosted CI/CD server. It runs your shell scripts on a schedule, on a webhook, or when you press a button, and it keeps the logs.
That is deliberately less than Jenkins or Woodpecker do. The difference is what it does not require.
The trade Walis makes
| Jenkins | Woodpecker | Walis | |
|---|---|---|---|
| Needs a Git forge | no | yes | no |
| Needs containers | no | in practice yes | optional |
| Needs a runtime on agents | JVM | container runtime | nothing |
| Pipeline lives in | UI or Jenkinsfile | repo YAML only | UI, exportable to JSON |
| Reads a Jenkinsfile | — | no | yes, as an import |
| Plugin isolation | none | container | JavaScript sandbox |
Jenkins can do anything because its plugins run unsandboxed in the same JVM — that is also why one bad plugin takes down the controller. Woodpecker gets isolation for free because every step is a container — and pays for it by requiring a forge and a container runtime.
Walis takes a third route: it limits what a plugin may output rather than where it runs. A plugin returns a shell snippet, which you can read before installing it.
Starting small is not staying small
The default is one process and a SQLite file: no database to run, nothing to configure, and the /health endpoint reports clustered: false.
When one node is no longer enough, point Walis at PostgreSQL, MySQL or SQL Server and run several API nodes against the same data. They claim builds atomically and elect a leader by lease for the work that must happen exactly once — cron, offline detection, cleanup and backup. Moving over is a backup and a restore, because the archive is engine-agnostic.
See High availability for what changes and what does not.
Already on Jenkins?
Walis reads Jenkins' own files. Paste a Jenkinsfile — declarative or scripted — or a job's config.xml, and it converts stages into steps, parallel into parallel steps, post into run conditions and parameters into build parameters, with a warning list for everything that does not map cleanly. Nothing is written until you review the draft and save it.
Walis has also grown the pieces a Jenkins pipeline usually leans on: build parameters, post-build steps, per-step retries, disableConcurrentBuilds, and downstream job triggers.
See Import from Jenkins for the full mapping table and the honest list of what it cannot convert.
What it is not
- Not a Git host. Point it at a repo with a webhook, or run jobs that have no repo at all.
- Not a container platform. It runs shell. If you want containers, your script can start them.