From bd9f4f3d238e9b7b178a3cfa5b0ef5b378fd06c2 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:20:30 +0200 Subject: [PATCH 01/10] Build RTK against Bookworm for arm64 compatibility --- claude_desktop/Dockerfile | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/claude_desktop/Dockerfile b/claude_desktop/Dockerfile index fbe5e65403..722a7b9e89 100644 --- a/claude_desktop/Dockerfile +++ b/claude_desktop/Dockerfile @@ -9,6 +9,22 @@ ARG BUILD_FROM ARG BUILD_VERSION +ARG RTK_VERSION="v0.43.0" +ARG RTK_COMMIT="5a7880d404db8364d602f2ecdc41dd790f64013f" + +# The upstream aarch64 release is cross-built on ubuntu-latest and requires +# GLIBC 2.39. Build the pinned source on Bookworm instead so it is compatible +# with the add-on runtime on both supported architectures. +FROM rust:1.91-bookworm AS rtk-builder +ARG RTK_VERSION +ARG RTK_COMMIT +RUN git clone --depth 1 --branch "${RTK_VERSION}" https://github.com/rtk-ai/rtk.git /src/rtk && \ + test "$(git -C /src/rtk rev-parse HEAD)" = "${RTK_COMMIT}" && \ + cd /src/rtk && \ + cargo build --release --locked && \ + install -D -m 0755 target/release/rtk /out/rtk && \ + /out/rtk --version + FROM ${BUILD_FROM} ################## @@ -89,15 +105,15 @@ RUN set -eux; \ chmod 0755 /usr/local/bin/ttyd; \ /usr/local/bin/ttyd --version +# Copy the pinned Bookworm-built RTK binary and execute it in the final image. +# This makes an ABI mismatch fail the image build instead of surfacing at runtime. +COPY --from=rtk-builder /out/rtk /usr/local/bin/rtk +RUN /usr/local/bin/rtk --version + # Install only the Headroom proxy, code-compression, and MCP features used by this add-on. RUN apt-get update && \ apt-get install -y --no-install-recommends nodejs && \ pip3 install --break-system-packages "headroom-ai[proxy,code,mcp]" && \ - curl -fsSL https://raw.githubusercontent.com/rtk-ai/rtk/refs/heads/master/install.sh -o /tmp/rtk-install.sh && \ - HOME=/root sh /tmp/rtk-install.sh && \ - rm /tmp/rtk-install.sh && \ - if [ -x /root/.local/bin/rtk ] && [ ! -x /usr/local/bin/rtk ]; then mv /root/.local/bin/rtk /usr/local/bin/rtk; fi && \ - if [ -x /usr/local/bin/rtk ]; then chmod +x /usr/local/bin/rtk; else echo "rtk binary was not installed on PATH"; exit 1; fi && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /root/.cache From 5d7d6ff334f497c87e0d33cf2b8cfd88640c2f8f Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:20:52 +0200 Subject: [PATCH 02/10] Bump Claude Desktop add-on to 1.14 --- claude_desktop/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index ed3320bfdb..5c660a8ad5 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -100,5 +100,5 @@ slug: claude_desktop tmpfs: true udev: true url: https://github.com/alexbelgium/hassio-addons -version: "1.13" +version: "1.14" video: true From 7b3eb17efd2ddd5cb72ed29ec492d4c322fa2898 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:21:23 +0200 Subject: [PATCH 03/10] Document RTK arm64 compatibility fix --- claude_desktop/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/claude_desktop/CHANGELOG.md b/claude_desktop/CHANGELOG.md index 218ad8b4a3..8654c92ad8 100644 --- a/claude_desktop/CHANGELOG.md +++ b/claude_desktop/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.14 (10-07-2026) + +- Build pinned RTK 0.43.0 source on Debian Bookworm for both architectures instead of installing the upstream arm64 release binary, which requires GLIBC 2.39 and cannot run in the add-on image. +- Execute `rtk --version` inside the final image during the Docker build so future ABI incompatibilities fail CI instead of surfacing at runtime. + ## 1.13 (10-07-2026) - Add the official Claude Code stable package, `tmux`, `ripgrep`, and a pinned upstream `ttyd` binary for both supported architectures. From 94135b9b05654423263e7a23562aeccb21e2c4a7 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:22:49 +0200 Subject: [PATCH 04/10] Trigger Claude add-on architecture builds --- claude_desktop/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index 5c660a8ad5..7e9d843c4a 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -2,7 +2,7 @@ arch: - aarch64 - amd64 audio: true -description: Claude Desktop with a persistent Claude Code web terminal in one add-on +description: Claude Desktop plus a persistent Claude Code web terminal in one add-on devices: - /dev/dri - /dev/dri/card0 From 2bbc48f7ab22091a3e147cdbd8c93a50aabc200f Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:23:30 +0200 Subject: [PATCH 05/10] Use native arm64 runner for RTK validation --- .github/workflows/pr2841-diagnostic.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/pr2841-diagnostic.yml b/.github/workflows/pr2841-diagnostic.yml index 09e056e41f..9fcbfa254e 100644 --- a/.github/workflows/pr2841-diagnostic.yml +++ b/.github/workflows/pr2841-diagnostic.yml @@ -8,7 +8,7 @@ on: jobs: diagnose: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04-arm steps: - name: Checkout uses: actions/checkout@v7 @@ -19,9 +19,6 @@ jobs: with: path: ./claude_desktop/ - - name: Set up QEMU - uses: docker/setup-qemu-action@v4 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v4 From 69458eb13d4ea6163c13159f3345047adbefec4c Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:30:06 +0200 Subject: [PATCH 06/10] Remove temporary Claude build diagnostic --- .github/workflows/pr2841-diagnostic.yml | 48 ------------------------- 1 file changed, 48 deletions(-) delete mode 100644 .github/workflows/pr2841-diagnostic.yml diff --git a/.github/workflows/pr2841-diagnostic.yml b/.github/workflows/pr2841-diagnostic.yml deleted file mode 100644 index 9fcbfa254e..0000000000 --- a/.github/workflows/pr2841-diagnostic.yml +++ /dev/null @@ -1,48 +0,0 @@ ---- -name: Claude Add-on Build Diagnostic - -on: - pull_request: - branches: - - master - -jobs: - diagnose: - runs-on: ubuntu-24.04-arm - steps: - - name: Checkout - uses: actions/checkout@v7 - - - name: Gather add-on information - id: information - uses: frenck/action-addon-information@v1.4 - with: - path: ./claude_desktop/ - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v4 - - - name: Build aarch64 and capture tail - shell: bash - run: | - set +e - BUILD_FROM="$(jq -r '.build_from.aarch64 // empty' '${{ steps.information.outputs.build }}')" - docker buildx build \ - --platform linux/arm64 \ - --progress=plain \ - --build-arg "BUILD_FROM=${BUILD_FROM}" \ - --file claude_desktop/Dockerfile \ - claude_desktop >build.log 2>&1 - status=$? - tail -n 300 build.log >build-tail.log - printf 'build_status=%s\n' "$status" >build-status.txt - exit 0 - - - name: Upload diagnostic log - uses: actions/upload-artifact@v4 - with: - name: claude-aarch64-build-log - path: | - build-tail.log - build-status.txt - retention-days: 1 From effd7f43197a1baffd92a3f5cef97d557b02ee7b Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:30:35 +0200 Subject: [PATCH 07/10] Run final Claude add-on build matrix --- claude_desktop/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index 7e9d843c4a..f6f24caf01 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -62,7 +62,7 @@ ports: 8787/tcp: 8787 ports_description: 3001/tcp: Claude Desktop web interface - 7681/tcp: HTTP Basic-auth Claude Code terminal (no TLS) + 7681/tcp: Claude Code web terminal over HTTP Basic auth (no TLS) 8787/tcp: Headroom dashboard and proxy privileged: - SYS_ADMIN From 424573548e0893c2e8c330d643b45f79c71c64f5 Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:36:14 +0200 Subject: [PATCH 08/10] Finalize Claude RTK arm64 validation --- claude_desktop/CHANGELOG.md | 1 + claude_desktop/config.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/claude_desktop/CHANGELOG.md b/claude_desktop/CHANGELOG.md index 8654c92ad8..778672d5d4 100644 --- a/claude_desktop/CHANGELOG.md +++ b/claude_desktop/CHANGELOG.md @@ -2,6 +2,7 @@ - Build pinned RTK 0.43.0 source on Debian Bookworm for both architectures instead of installing the upstream arm64 release binary, which requires GLIBC 2.39 and cannot run in the add-on image. - Execute `rtk --version` inside the final image during the Docker build so future ABI incompatibilities fail CI instead of surfacing at runtime. +- Validate the final Bookworm-built RTK binary in a native aarch64 image build. ## 1.13 (10-07-2026) diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index f6f24caf01..6e6b38ed63 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -2,7 +2,7 @@ arch: - aarch64 - amd64 audio: true -description: Claude Desktop plus a persistent Claude Code web terminal in one add-on +description: Claude Desktop with a persistent Claude Code web terminal devices: - /dev/dri - /dev/dri/card0 From 6b4c11cbd8341ee016f1d73664c9196cad7dee5c Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:39:27 +0200 Subject: [PATCH 09/10] Fix add-on changelog and arm64 CI checks --- .github/workflows/onpr_check-pr.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/onpr_check-pr.yaml b/.github/workflows/onpr_check-pr.yaml index 07509f023f..d13d231b36 100644 --- a/.github/workflows/onpr_check-pr.yaml +++ b/.github/workflows/onpr_check-pr.yaml @@ -35,6 +35,7 @@ jobs: git fetch origin "${{ github.event.before }}" || true changed_changelog_files=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" | grep -iE '^([^/]+/)?changelog\.(md|txt|ya?ml|json)$' || true) echo "$changed_changelog_files" + echo "changelogs_files=$changed_changelog_files" >> "$GITHUB_OUTPUT" changed_config_files=$(git diff --name-only "${{ github.event.before }}" "${{ github.sha }}" | grep -E '^[^/]+/config\.(json|ya?ml)$' || true) echo "$changed_config_files" all_changed_files=$(echo -e "$changed_config_files\n$changed_changelog_files" | sort -u) @@ -208,6 +209,7 @@ jobs: uses: docker/build-push-action@v7 with: context: ${{ matrix.addon }} + platforms: linux/arm64 push: false load: true file: ${{ matrix.addon }}/Dockerfile From 0c651312ab27a9939c7b68111588ec375e15271d Mon Sep 17 00:00:00 2001 From: Alexandre <44178713+alexbelgium@users.noreply.github.com> Date: Fri, 10 Jul 2026 15:40:24 +0200 Subject: [PATCH 10/10] Validate Claude arm64 build and changelog --- claude_desktop/CHANGELOG.md | 1 + claude_desktop/config.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/claude_desktop/CHANGELOG.md b/claude_desktop/CHANGELOG.md index 778672d5d4..9f44535bf3 100644 --- a/claude_desktop/CHANGELOG.md +++ b/claude_desktop/CHANGELOG.md @@ -3,6 +3,7 @@ - Build pinned RTK 0.43.0 source on Debian Bookworm for both architectures instead of installing the upstream arm64 release binary, which requires GLIBC 2.39 and cannot run in the add-on image. - Execute `rtk --version` inside the final image during the Docker build so future ABI incompatibilities fail CI instead of surfacing at runtime. - Validate the final Bookworm-built RTK binary in a native aarch64 image build. +- Correct the repository PR checks so changed changelog paths are exported and aarch64 images are built explicitly for `linux/arm64`. ## 1.13 (10-07-2026) diff --git a/claude_desktop/config.yaml b/claude_desktop/config.yaml index 6e6b38ed63..b6ef1d38e7 100644 --- a/claude_desktop/config.yaml +++ b/claude_desktop/config.yaml @@ -2,7 +2,7 @@ arch: - aarch64 - amd64 audio: true -description: Claude Desktop with a persistent Claude Code web terminal +description: Claude Desktop and a persistent Claude Code web terminal devices: - /dev/dri - /dev/dri/card0