Settings
Five tabs. Everything saves at once and applies immediately to schedules, builds and notifications — there is no restart step.
General
| Field | Notes |
|---|---|
| Site name | Shown in the header and in notification subjects. |
| Public URL | Used to build links in notifications. Set it, or notification links go nowhere. |
| Time zone | Cron expressions are evaluated in this zone, not UTC and not the browser's. |
| Interface language | Traditional Chinese, English or Japanese. See Localization. |
| Database | SQLite 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
| Field | Notes |
|---|---|
| Concurrent build limit | Slots on the local runner. |
| Default timeout | Applied to jobs that do not set their own. |
| Retention (days) | Shared by build records, artifacts and audit entries. |
| Default working directory | Starting point for new jobs. |
| Default shell | The shell each step runs in. |
Isolate builds
On by default, and macOS only. There, each step is wrapped in sandbox-exec and cannot read or write the Walis data directory or any path in Extra denied paths. On Windows and Linux the setting has no effect — those platforms rely on Allowed working directories and environment scrubbing instead.
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.
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.
Backup
See Backup and restore.
Security
| Field | Notes |
|---|---|
| Require sign-in | Off by default. Create an administrator account first — and the last account cannot be deleted. |
| Require OTP for all accounts | Accounts not yet enrolled can still sign in, but cannot disable OTP afterwards. |
| Record audit log | Jobs, builds, runners, variables, settings, notifications, translations. |
| Mask secrets in build output | On by default. Off prints secret values into retained logs. |
| Allowed CORS origins | One per line, effective on save. Defaults to 127.0.0.1:11124 and localhost:11124. |
| Webhook secret | Once set, push requests must carry X-Hub-Signature-256, X-Gitlab-Token or X-Walis-Token. |
| Push webhook URL | The address to paste into GitHub or GitLab. Copy button beside it. |
Audit
The audit trail, when recording is on. Swept by the same Retention (days) value as builds — so shortening retention to tidy up build history also shortens how far back you can investigate.
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.