Skip to content

feat: add linux-arm64 (aarch64) CLI build and install support#93

Merged
RealZST merged 1 commit into
RealZST:mainfrom
Omee11:feat/linux-arm64-cli
Jun 26, 2026
Merged

feat: add linux-arm64 (aarch64) CLI build and install support#93
RealZST merged 1 commit into
RealZST:mainfrom
Omee11:feat/linux-arm64-cli

Conversation

@Omee11

@Omee11 Omee11 commented Jun 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Linux ARM64 servers cannot install HarnessKit today. The release ships hk-linux-x64,
hk-macos-arm64, hk-macos-x64 and Windows, but no aarch64 Linux CLI, so install.sh exits with
Error: unsupported architecture: aarch64 on ARM boxes (for example an Oracle Cloud Ampere A1
instance).

This adds the missing target:

  • A new release-cli-linux-arm64 job that builds the hk CLI for aarch64-unknown-linux-musl and
    uploads it as hk-linux-arm64. It is a near line-for-line mirror of the existing
    release-cli-linux job, and runs natively on GitHub's free ubuntu-24.04-arm public runner, so
    there is no cross-compilation and no self-hosted runner.
  • An install.sh case mapping aarch64/arm64 on Linux to hk-linux-arm64, instead of erroring.

No Rust source changes. The CLI is platform-agnostic; this is purely the build target plus the
installer mapping.

Linked issue

No existing issue (I searched open and closed issues and PRs for arm64/aarch64 first). This is a
small, self-contained platform addition, but I am happy to open an issue first if you prefer that
flow.

Type of change

  • Bug fix (non-breaking)
  • New feature (non-breaking)
  • Breaking change
  • Refactor or cleanup (no behaviour change)
  • Documentation
  • CI, tooling, or config

How to test

On a native aarch64 Linux box:

  1. npm ci && npm run build
  2. cargo build --release -p hk-cli --target aarch64-unknown-linux-musl
  3. ./target/aarch64-unknown-linux-musl/release/hk status (and list, audit --no-scan)

For the installer mapping: on aarch64 Linux, install.sh now resolves to hk-linux-arm64 (the
full curl install works once a release carries that asset; before this change the script errored).

Checklist

  • One concern only, scope limited to the summary above
  • I ran it and verified end to end, with one honest caveat below

Built and verified on a native aarch64 Ubuntu 24.04 box: the resulting static binary
(statically linked, ARM aarch64) runs and correctly detects agents (claude, cursor, opencode,
hermes) and 159 extensions. npm test (234 passing) and cargo test for hk-core, hk-cli,
hk-web pass locally. I did not run the full cargo test --workspace locally because the
hk-desktop (Tauri) crate needs a desktop build environment that is not present on a headless ARM
Linux server; the repo's PR CI runs the full workspace on macos-latest, which covers it.

Model used

Claude Code (Claude Opus 4.8), used to write the CI job and installer change, and to build and
verify the binary on a native aarch64 box.


🤖 Generated with Claude Code (Claude Opus 4.8)
🧑‍💻 Ideated, directed and reviewed by a human, @Omee11

Add a release-cli-linux-arm64 job that builds the hk CLI for
aarch64-unknown-linux-musl on GitHub's free ubuntu-24.04-arm public
runner, mirroring the existing x86_64 musl job, and uploads the
artifact as hk-linux-arm64. Teach install.sh to map aarch64/arm64 on
Linux to that binary instead of erroring with "unsupported
architecture".

This unblocks ARM64 Linux servers (e.g. Oracle Cloud Ampere A1), where
install.sh previously failed on aarch64. Built and verified on a native
aarch64 Ubuntu 24.04 box: the binary detects agents and runs the
read-only commands (status, list, audit).
@RealZST RealZST merged commit 528b092 into RealZST:main Jun 26, 2026
@RealZST

RealZST commented Jun 26, 2026

Copy link
Copy Markdown
Owner

Thanks for the PR! Merged.

RealZST added a commit that referenced this pull request Jun 26, 2026
Follow-up to #93, which added the Linux ARM64 CLI build. Split the
single Linux row in the manual-download table into x64 / ARM64 so the
new hk-linux-arm64 release asset is documented.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants