Get started
Enter the desktop, review current beta boundaries, use the design foundations and explore how Warlock is built.
Current beta & runtime status
No downloadable Warlock desktop binary or Omarchy installer is published yet. In the canonical requirement ledger, 19 of 242 whole EARS requirements and 42 of 417 scenarios hold source-bound historical acceptance (including ELM-TEA-001, ELM-TEA-002, and ELM-DEL-010), alongside the published Store / Catalog / PinStore foundation (a327c8f7f, ELM-ARC-002 / ownership-presentation partial: preregistering Acquiring and retaining uncertain acquisitions across the old-RED 1 to new-GREEN 0 witness and 36-suite / 104-command Haskell build; stored Quint uniform 10k x 40-step run retains failed twoClosed = 0 coverage with 0 safety violations across 14 named traces, separately from a guided 1x20 reachability witness). Focused 3-suite --custody component checks and focused r19 --backend checks pass on the published persistent custody and callback-drain component (6e6ad828c: 25 owner controls, all 32 seeds 0..31 with 13 exercising bounded wait on the same owned ProcessHandle under remaining first-stop D + postcheck with zero SIGKILL path, 2 direct exitRace cases, and 26 socket callback drain/bytes/refuse-new-work/once-close/EOF checks; plus r19 --backend with 161 Haskell checks, 32 hostile frames, 8,010 compiled-Main checks, 40 sessions, and 401 complete frames under unchanged 5s/180s deadlines with zero forced cleanup; component verification only—full r18 remains a retained failed batch at 36/37 suites after ui-backend-controls 180s timeout -9 because changed fixture inputs make r19 a separate focused result rather than a full-suite rewrite, and application persistent wiring remains incomplete), while source-only future ELM-TEA-004 drafts are not accepted (still requiring complete HTTP wrapper full-model/effect replay and independent boundary fixtures, with PreviewPaintGate scoped Realm object drop under fix and native acceptance separate). The fresh 217-input Haskell + 3-Elm Omarchy build records 17 guarded QMP acknowledgements with Root-viewed search/Refresh captures while exiting 1 normally at 27.94s bounded launcher lifetime under the unchanged 28s timeout guard (not frame latency; no unchanged repeated trial is run to vary outcome; selectedOperationSucceeded = false, 6 of 7 checks true, and strict retired-cgroup inventory Unknown); catalog-generation receipts, physical input/focus/AT/IME, FD/preview provider cleanup, latency budgets, and release acceptance remain unconfirmed or unaccepted.
Today you can explore the 16-scenario browser test drive, follow the reproducible MVP & verification tracks below, inspect the Elm and Haskell production boundary, or download the Lacquer design foundations (CSS/JSON tokens, licensed fonts, and SVG marks).
Reproducible MVP & verification tracks
Every Warlock check separates what runs locally in a browser, what runs in Root-serialized CPU/formal suites, and what runs inside the isolated stock Omarchy Wayland guest.
Track 1 · Local static · Any contributor host
Verify the website & 16-scenario browser test drive
Requires Python 3.9+ with zero network access. From the repository root:
python3 -B site/tools/check-site.py --root site
python3 -B site/tools/test-browser-acceptance.py
python3 -B -m http.server 8000 --bind 127.0.0.1 --directory siteOpen http://127.0.0.1:8000/test-drive/index.html (or launch the test drive here). Boundary: runs compiled Elm Main, Bar, and Popup over 16 deterministic seeded fixtures; window interiors and host replies are simulated browser fixtures, never Wayland surfaces or Linux processes.
Track 2 · Root-serialized · Host CPU & qa_cpu
Run contributor checks & hash-reviewed offline CPU profiles
Check requirement admission from the repository root; Root executes hash-bound CPU/model runners serially via tools/qa_cpu.py:
python3 -B plugins/warlock-contributor/scripts/warlock.py status
python3 -B plugins/warlock-contributor/scripts/warlock.py check --project-only
python3 -B docs/warlock-build-loop/v2/loop.py check
# Root-serialized hash-bound runner (tools/check_haskell_cpu.py --ui-origin | --custody | --backend | --site):
python3 -B tools/qa_cpu.py --review "$REVIEW_JSON" --sha256 "$REVIEW_SHA256"Boundary: warlock.py check and loop.py check check contributor admission status only (never GUI acceptance). Under qa_cpu.py (3G memory cap, cpu-check.lock, loopback-only bwrap), check_haskell_cpu.py --ui-origin runs the 10 focused ui-origin suites plus warlock-ui-backend and ui-stream-child fixtures (64 commands), --custody passes the 3 focused persistent custody/ingress suites on published 6e6ad828c (25 owner controls, all 32 seeds 0..31 with 13 exercising bounded same-ProcessHandle wait under remaining first-stop D + postcheck with zero SIGKILL, 2 direct exitRace cases, and 26 ingress checks), --backend passes focused r19 compiled-Main to selected Haskell backend (161 Haskell checks, 32 hostile frames, 8,010 frontend checks, 40 sessions, 401 complete frames under unchanged 5s/180s deadlines with zero forced cleanup; full r18 remains a retained failed batch at 36/37 suites after ui-backend-controls 180s timeout -9—changed fixture inputs make r19 a separate focused result, not a full-suite pass), and --site compiles standalone site/src/SiteMain.elm. The 36-suite / 104-command common --build report (a327c8f7f), Store / Catalog / PinStore old-RED 1 to new-GREEN 0 acquire witness, Quint Store model report (14 named + 10k x 40-step uniform with 0 safety violations and retained failed twoClosed = 0 coverage vs guided 1x20 reachability), and ELM-DEL-010 real cross-user VM peer authentication are separate historical source-bound reports; source-only ELM-TEA-004 drafts remain unaccepted, and none certify FD or native provider cleanup.
Track 3 · Root-serialized · Stock Omarchy Wayland ABI
Stage the --application-only GTK4/WebKitGTK MVP trial
Follow docs/warlock/how-to/run-omarchy-mvp.md (tools/omarchy_ui_mvp.py): verify fresh Elm HTML digests against implementation/warlock/src/*.elm, build warlock-ui-owner and warlock-ui-backend offline (--offline, active-repositories: :none) inside the Omarchy 4.0.6 guest against guest gtk4 and webkitgtk-6.0 ABIs, create a fresh 0700 $RUN_DIR (D <= 28s, applicationAttachment: true, zero WEBKIT_* or proxy variables), and launch on wayland-1:
python3 -B tools/omarchy_ui_mvp.py source-manifest --repo-root . --output "$EVIDENCE_DIR/source-manifest.json"
# Inside Omarchy guest (after offline cabal build of warlock-ui-owner & warlock-ui-backend):
mkdir -m 0700 "$RUN_DIR"
python3 -B /tmp/warlock-mvp-src/tools/omarchy_ui_mvp.py guest-config --run-dir "$RUN_DIR" --deadline-seconds 28Boundary: the 217-input Haskell + 3-Elm guest build (17 guarded QMP acknowledgements) observes Applications search (foot), no-match footz, and footz retention across Refresh while preserving Foot and idle state; it currently exits 1 normally at 27.94s bounded launcher lifetime (selectedOperationSucceeded = false, 6 of 7 checks true, strict retired-cgroup inventory Unknown, nativeOperations = [] under HOSTSTOP2, and live Pin/catalog receipts, AT/IME, latency, and release unaccepted; status & recovery rules).
Enter the desktop
Real Elm interface. Simulated desktop. Explore the taskbar, windows and shell surfaces across 16 seeded browser scenarios (client interiors and host replies are browser fixtures rather than native Wayland processes).
Download the foundations
- CSS tokens and JSON tokens
- Inter, Space Grotesk Bold and JetBrains Mono Regular
- Warlock mark and monochrome mark
Read the font notices and attribution before redistribution.
Integrate the CSS
Opt in with data-warlock-design="v1" on the root element and choose data-theme="night", dawn or high-contrast. Load the shared cascade order first, followed by tokens, fonts, site and effects. This example works from this page:
<link rel="stylesheet" href="../assets/shared/layers.css">
<link rel="stylesheet" href="../assets/shared/tokens.css">
<link rel="stylesheet" href="../assets/shared/fonts.css">
<link rel="stylesheet" href="../assets/shared/site.css">
<link rel="stylesheet" href="../assets/shared/effects.css">The Elm & Haskell Architecture
Warlock’s authored production code uses Elm and Haskell only: every GUI element uses The Elm Architecture (model, view, messages, update, commands and subscriptions), while Haskell owns the backend and reviewed native/runtime integration with no shipping Python runtime. Explore the component architecture.