Skip to content

Commit 80341d7

Browse files
Rick Valdesclaude
andcommitted
Windows: use the x64 build everywhere; drop the broken native ARM64 binary
The native windows-arm64 CLI cannot start its terminal UI. Verified on a real Windows 11 ARM64 machine that opencode's OWN windows-arm64 binary crashes at renderer init identically to ours (exit 1, FFI) — while both x64 binaries run fine under Windows ARM64 emulation. So this is a Bun/OpenTUI toolchain limitation, not our build, and shipping a native arm64 binary just hands users a guaranteed crash. Changes: - install.ps1 installs windows-x64 on both AMD64 and ARM64. On ARM64 it runs under Windows emulation, where the TUI works (verified). - Release matrix drops windows-arm64; ships windows-x64 only. This matches opencode's effective support (their arm64 package exists but does not run) and unblocks the user's ARM64 machine via the x64 emulation path, which works against the existing v1.0.1 windows-x64 asset immediately. Reverts the earlier "WSL required" guidance — WSL is not needed; x64 under emulation is the native path. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 1b94f1c commit 80341d7

3 files changed

Lines changed: 40 additions & 9 deletions

File tree

.github/workflows/utmstack-release.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,12 @@ jobs:
3737
# builds on 24.04 (glibc 2.39) and needs Ubuntu 24.04+ / Debian 13+.
3838
- { runner: ubuntu-22.04, target: linux-x64, ext: tar.gz, baseline: true }
3939
- { runner: ubuntu-24.04-arm, target: linux-arm64, ext: tar.gz }
40-
# Windows, both architectures.
40+
# Windows: x64 only. The native ARM64 build cannot start its terminal
41+
# UI (a Bun/OpenTUI FFI limitation that breaks opencode's own
42+
# windows-arm64 binary identically), so we do not ship one — on ARM64
43+
# the installer uses the x64-baseline build under Windows emulation.
44+
# baseline (no-AVX2) is required so the x64-on-ARM emulator can run it.
4145
- { runner: windows-2022, target: windows-x64, ext: zip, baseline: true }
42-
- { runner: windows-11-arm, target: windows-arm64, ext: zip }
4346

4447
steps:
4548
- uses: actions/checkout@v4

README.md

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,32 @@ curl -fsSL https://raw.githubusercontent.com/utmstack/utmstack-cli/main/install
2323
curl -fsSL https://raw.githubusercontent.com/utmstack/utmstack-cli/main/install | bash
2424
```
2525

26-
### Windows — x64 and ARM64 (PowerShell)
26+
### Windows — use WSL for the interactive UI
27+
28+
The **interactive terminal UI does not run on native Windows.** It needs FFI to
29+
load its terminal renderer (OpenTUI), which is not available in a Bun-compiled
30+
binary on Windows — the same reason opencode itself ships no native Windows CLI.
31+
Run it in **WSL**, where it works exactly as on Linux:
32+
33+
```powershell
34+
wsl --install # once, then open a WSL terminal
35+
```
36+
```bash
37+
# inside WSL:
38+
curl -fsSL https://raw.githubusercontent.com/utmstack/utmstack-cli/main/install | bash
39+
utmstack # full interactive TUI
40+
```
41+
42+
**Native Windows** (PowerShell) still gives you the headless command and the
43+
SIEM tools, just not the interactive UI:
2744

2845
```powershell
2946
irm https://raw.githubusercontent.com/utmstack/utmstack-cli/main/install.ps1 | iex
47+
utmstack run "..." # one-shot, works natively
3048
```
3149

32-
Run this in **PowerShell**, not `cmd.exe`. If you prefer Git Bash or WSL, use
33-
the macOS/Linux command above instead — it works there too.
50+
The UTMStack MCP server runs natively on Windows too, so its SIEM tools are
51+
available from any native MCP client (Claude Code, Cursor, …).
3452

3553
### What gets installed
3654

install.ps1

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,17 @@ function Fail($m) { throw "utmstack install: $m" }
2626
# Under WOW64 (a 32-bit PowerShell host) PROCESSOR_ARCHITECTURE reads x86
2727
# on an x64 machine; PROCESSOR_ARCHITEW6432 carries the real value.
2828
$rawArch = if ($env:PROCESSOR_ARCHITEW6432) { $env:PROCESSOR_ARCHITEW6432 } else { $env:PROCESSOR_ARCHITECTURE }
29-
$arch = switch ($rawArch) {
30-
'AMD64' { 'x64' }
31-
'ARM64' { 'arm64' }
29+
# Windows always uses the x64 build. The native ARM64 build cannot start its
30+
# terminal UI — a Bun/OpenTUI FFI limitation that breaks opencode's own
31+
# windows-arm64 binary identically — so we do not ship one. On ARM64 the x64
32+
# build runs under Windows emulation, where the TUI works (verified on Windows
33+
# 11 ARM64).
34+
switch ($rawArch) {
35+
'AMD64' { $target = 'windows-x64' }
36+
'ARM64' { $target = 'windows-x64' }
3237
'x86' { Fail '32-bit Windows is not supported' }
3338
default { Fail "unsupported architecture: $rawArch" }
3439
}
35-
$target = "windows-$arch"
3640
$asset = "$App-$target.zip"
3741

3842
# --- resolve release ------------------------------------------------------ #
@@ -167,6 +171,12 @@ try {
167171
Info ' NOTE: PATH was updated. Open a new terminal for `utmstack` to resolve.'
168172
Info ''
169173
}
174+
if ($rawArch -eq 'ARM64') {
175+
Info ''
176+
Info ' Note: installed the x64 build, which runs under Windows ARM64 emulation.'
177+
Info ' (There is no working native ARM64 CLI — the limitation affects opencode too.)'
178+
}
179+
Info ''
170180
Info 'First run:'
171181
Info ' utmstack-mcp init # connect your UTMStack server'
172182
Info ' utmstack # start the CLI, then /connect for your ThreatWinds API key'

0 commit comments

Comments
 (0)