Skip to content

feat(kirocrew): add Tailscale + hadolint; fix gh/glab/acli ownership - #26

Merged
fjudith merged 3 commits into
mainfrom
feat/kirocrew-tailscale
Oct 31, 2026
Merged

fjudith merged 3 commits into
mainfrom
feat/kirocrew-tailscale

Conversation

@fjudith

@fjudith fjudith commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Three related changes to the kirocrew custom image, all following the repo's existing pinned-download + symlink-into-/usr/local/bin pattern.

1. Tailscale (tailscale CLI + tailscaled daemon)

  • Arch-aware download of the pinned official static tarball https://pkgs.tailscale.com/stable/tailscale_${TAILSCALE_VERSION}_${arch}.tgz, extracting only tailscale + tailscaled (--strip-components=1) into /opt/tailscale, symlinked into /usr/local/bin, verified with --version.
  • ARG TAILSCALE_VERSION='1.104.4', Renovate-tracked via datasource=github-releases depName=tailscale/tailscale (latest release tag v1.104.4 matches the stable pkgs version).
  • Bundled systemd units are intentionally not extracted — containers run tailscaled directly. Running tailscaled still needs the host to grant NET_ADMIN + /dev/net/tun.
  • Scope: client binaries only — no auto-tailscale up / auth-key wiring at container start.

2. hadolint (Dockerfile linter)

  • Pinned ARG HADOLINT_VERSION='2.15.1', Renovate-tracked via datasource=github-releases depName=hadolint/hadolint.
  • Single static per-arch binary (hadolint-linux-{x86_64,arm64}, acli pattern) → /usr/local/bin/hadolint, chmod 0755, verified with --version. Same tool the repo's CI gate uses, now available to the agent at runtime.

3. Fix: own gh/glab/acli as the runtime user

  • The gh/glab release tarballs bake a non-root uploader uid/gid into their archive entries, so even extracted as root the binaries ended up owned by a stray uid (e.g. nobody/1001). The Kiro Crew gateway refuses a provider CLI owned by a user other than the one it runs as (UID 1000) → PR loading failed with 'executable is owned by another user'.
  • Extract with tar --no-same-owner, then chown -R ${APP_UID}:${APP_UID} the /opt/gh, /opt/glab trees and the acli binary to the runtime UID, and chmod -R go-w to clear any world-writable bit the gateway also rejects.

Docs

  • Dockerfile header + OCI LABEL description and the README tooling table updated for Tailscale, hadolint, and the (previously-undocumented) git-forge CLIs.

Tested

  • Edits are self-consistent with the repo's accepted patterns and the .hadolint.yaml ignore set; rebased onto latest main (coexists with the AWS CLI v2 / OpenSpec additions).
  • Not run in the authoring environment (no container runtime): hadolint lint gate and the image build — relying on CI / task build:kirocrew.

Install the pinned Tailscale static release tarball into the kirocrew
image, mirroring the gh/glab git-forge pattern: arch-aware download,
extract the tailscale + tailscaled binaries under /opt, symlink into
/usr/local/bin, verify with --version. Version ARG is Renovate-tracked
via github-releases (tailscale/tailscale). Bundled systemd units are
not extracted (containers run tailscaled directly).

Update the Dockerfile header/LABEL and the README tooling table.
@fjudith
fjudith force-pushed the feat/kirocrew-tailscale branch from 2850dfa to 1fb2f75 Compare October 31, 2026 13:24
Install the pinned hadolint static binary into /usr/local/bin (acli
pattern): arch-aware download of the official per-arch release asset,
chmod +x, verify with --version. Version ARG is Renovate-tracked via
github-releases (hadolint/hadolint). Updates the Dockerfile header/LABEL
and the README tooling table.
The gh/glab release tarballs bake a non-root uploader uid/gid into
their archive entries, so even extracted as root the binaries ended up
owned by that stray uid (e.g. 1001). The Kiro Crew gateway refuses a
gh/glab binary owned by a user other than the one it runs as (UID 1000),
breaking PR loading with 'executable is owned by another user'.

Extract with --no-same-owner and chown -R the /opt/gh, /opt/glab trees
and the acli binary to the runtime UID, chmod -R go-w to clear any
world-writable bit the gateway also rejects.
@fjudith fjudith changed the title feat(kirocrew): add Tailscale (tailscale CLI + tailscaled) feat(kirocrew): add Tailscale + hadolint; fix gh/glab/acli ownership Oct 31, 2026
@fjudith
fjudith merged commit bacdb13 into main Oct 31, 2026
6 checks passed
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.

1 participant