Native Windows ARM64 engine (windows-arm64) for releases and npm
Summary
npx impeccable fails on native Windows ARM64 (Copilot+ / Snapdragon) because there is no windows-arm64 engine asset or @impeccable/cli-windows-arm64 optional dependency. The skill launchers already try the arm64 asset and fall back to x64; the npm shim does not.
I can test on real Windows 11 ARM64 hardware and would like to send a PR if maintainers want this.
AI assistance was used to reproduce, native-build, and draft this issue. I will disclose the same on any follow-up PR.
Reproduction
- OS: Windows 11 ARM64 (
aarch64-pc-windows-msvc) - Node: v24.14.0,
process.arch === 'arm64' - Command:
npx [email protected] install
impeccable: no binary for windows-arm64. Install @impeccable/[email protected],
set IMPECCABLE_BIN, or download impeccable-windows-arm64 v0.1.5 from
https://github.com/pbakaus/impeccable/releases/download into
~\.impeccable\bin\0.1.5\impeccable.exe.
@impeccable/cli-windows-arm64 is 404 on npm. engine-v0.1.5 ships only impeccable-windows-x64.exe.
Workaround that works today: run the signed x64 engine under Prism and set IMPECCABLE_BIN. That is emulation, not a native install.
Why a native target (not only an npm x64 fallback)
Node on this machine is native arm64, so optionalDependencies never select @impeccable/cli-windows-x64. A locally built engine (cargo build --release -p impeccable --target aarch64-pc-windows-msvc) is a PE with machine 0xAA64, answers engine-probe with impeccable-engine 0.1.5, and runs without Prism.
The x64 engine under emulation reports windows-x64 from cfg!(target_arch), so impeccable install stages scripts/bin/windows-x64/ even on ARM64 hosts. A native binary would stage windows-arm64 and match the npm shim.
Proposed approach (no ENGINE_VERSION bump in the feature PR)
- Add
windows-11-arm/aarch64-pc-windows-msvc/windows-arm64to.github/workflows/release-engine.yml(windows-11-armis GA for public repos). - Sign that PE in the existing
windows-signingjob (matrixwindows-x64+windows-arm64; Authenticode is arch-agnostic; do not execute the ARM64 binary on the x64 signer). - Add
cli/platform-packages/windows-arm64template (os: win32,cpu: arm64). - On the next engine cutover (0.1.6 or whatever you choose — 0.1.5 assets are immutable): add
windows-arm64toENGINE_TARGETSandpackage.jsonoptionalDependencies. Adding it earlier would failengine-release-readyCI against the pinned 0.1.5 release.
Happy to open a PR with (1)–(3) after you confirm this is wanted.
Local proof
cargo build --release -p impeccable --target aarch64-pc-windows-msvcsucceeds on this hostimpeccable.exe engine-probe→impeccable-engine 0.1.5- PE machine type
0xAA64
Source: pbakaus/impeccable