Skip to content

Settings ​

Five tabs. Everything saves at once and applies immediately to schedules, builds and notifications — there is no restart step.

General ​

Settings, general tab

FieldNotes
Site nameShown in the header and in notification subjects.
Public URLUsed to build links in notifications. Set it, or notification links go nowhere.
Time zoneCron expressions are evaluated in this zone, not UTC and not the browser's.
Interface languageTraditional Chinese, English or Japanese. See Localization.
DatabaseSQLite by default, relative to the API content root. Override with ConnectionStrings:Walis, and name the engine with Database__Provider (sqlite, postgresql, mysql, sqlserver). Anything but SQLite can be shared by several nodes — see High availability.

Build ​

Settings, build tab

FieldNotes
Concurrent build limitSlots on the local runner.
Default timeoutApplied to jobs that do not set their own.
Retention (days)Retention for build records and artifacts (audit entries have their own retention setting).
Default working directoryRoot for jobs without their own directory; each job gets a subdirectory named after the job id.
Default shellThe shell each step runs in.

Isolate builds ​

On by default. Where the platform has a sandbox — macOS — each step is wrapped in sandbox-exec and cannot read or write the Walis data directory or any path in Extra denied paths. Windows and Linux have no sandbox to apply, so the switch changes nothing there: builds on the built-in runner run with the service account's permissions, and the page shows a warning that says so.

Paths are resolved segment by segment through symlinks before the rules are written. This matters more than it sounds: on macOS /tmp and /var/folders are symlinks partway along, and a rule written against the unresolved path silently does nothing.

Refuse to run without an isolation boundary ​

Off by default, so that a first build works on every platform. Turn it on to stop builds from running where nothing isolates them:

  • the built-in runner on Windows or Linux refuses to start a build;
  • a remote runner is handed work only when its name is listed under Externally isolated runnersand it was started with --external-isolation true.

Externally isolated runners ​

One runner name per line, used only while the switch above is on. List a runner only when the machine, VM or container it lives in does nothing except run Walis builds — Walis cannot verify the boundary for you.

Allowed working directories ​

One per line; empty means unrestricted. When the list is non-empty, a job whose working directory is not inside it fails immediately rather than running somewhere unintended.

Artifacts and workspace ​

  • Keep build artifacts — copies the job's artifact paths out after a successful build, up to 200 files / 64 MB, downloadable from the log window.
  • Clean workspace before each build — deletes directory contents only. Disk roots, home directories and suspiciously shallow paths are refused outright. Cleaning happens before the cache is restored.
  • Clean workspace after each build — clears directory contents after artifacts and caches are saved (jobs can override this individually), so checked-out source and credentials written by a script do not linger between builds.

Backup ​

Settings, backup tab

See Backup and restore.

Security ​

Settings, security tab

TIP

Walis now includes a dedicated Security Center (/security), aggregating posture checks, privileged resource audits, brute-force lockout releases, and security audit logs into a unified dashboard. Settings configured here sync seamlessly with the Security Center.

FieldNotes
Require sign-inOn by default. With it off, anonymous visitors are read-only: they still cannot change anything or trigger a build. The last administrator cannot be deleted.
Require OTP for all accountsAccounts not yet enrolled are directed to the OTP setup screen upon sign-in, and cannot disable OTP afterwards.
Record audit logJobs, builds, runners, variables, settings, notifications, translations, plus failed sign-ins and lockouts.
Audit retention (days)Defaults to 365 days (minimum 30), independent of build retention.
Mask secrets in build outputOn by default. Off prints secret values into retained logs.
Allowed CORS originsOne per line, effective on save. Defaults to 127.0.0.1:11124 and localhost:11124.
MCP allowed source addressesOne IPv4/IPv6 address or CIDR range per line. When non-empty, unlisted addresses are refused at /mcp before any key is checked.
Webhook secretOnce set, push requests must carry X-Hub-Signature-256, X-Gitlab-Token or X-Walis-Token.
Push webhook URLThe address to paste into GitHub or GitLab. Copy button beside it.
Secrets at restShows where the encryption key comes from (Security:EncryptionKey or secret.key in the data directory) and lets administrators clear values that cannot be decrypted after a key change or cross-machine restore.

Audit ​

Settings, audit tab

The audit trail, including actor, client remoteAddress and outcome, with filtering and CSV export. Swept by its own Audit retention (days) setting, and merged rather than wiped when restoring a backup.

Portability ​

Export writes every job and custom action as JSON, deliberately excluding identifiers, statistics and timestamps — those describe this machine, not the configuration.

Import matches by name. With overwrite false, an existing name is skipped; with it true, the job is updated in place and keeps its identifier and build history.

Action flows are objects in the export file rather than escaped strings, so the diff is reviewable.

Released under the MIT License.