ref:main

fix: runner download endpoint serves no binaries — replace Burrito with Rust CLI #1

closed Opened by cole.christensen@gmail.com

Links

No links yet.

Problem

/runner/download?os=Linux&arch=aarch64 returns:

{"error":"Binary for Linux/aarch64 not built yet.","platforms":[]}

/runner/version confirms zero platforms available:

{"version":"0.7.0","platforms":[]}

Root Cause

The Dockerfile builds Elixir/Burrito runner binaries via anvil_runner/, but that build has been silently failing (|| true suppresses errors). The actual runners deployed (carl, donut) use the Rust CLI (anvil runner start), not the Burrito runner. The Elixir runner is dead code.

Solution

  1. Remove anvil_runner/ Elixir project (dead code)
  2. Remove Zig installation and Burrito build from Dockerfile
  3. Modify CI build-image step to cross-compile the Rust CLI for linux_amd64 and linux_arm64
  4. Place compiled binaries in Docker build context as priv/runner/anvil_runner_linux_{amd64,arm64}
  5. RunnerDownloadController serves them as-is (same naming convention)

Requirements

  • GET /runner/download?os=Linux&arch=x86_64 serves the amd64 Rust CLI binary
  • GET /runner/download?os=Linux&arch=aarch64 serves the arm64 Rust CLI binary
  • GET /runner/version lists both platforms
  • curl -fsSL .../runner/install.sh | sh works on both architectures
  • Dead Elixir runner code removed
colechristensen cole.christensen@gmail.com commented 2026-04-17 05:30

Closed by the full release + install pipeline. Summary:

  • fangorn/anvil-cli CI publishes CalVer releases on every main push, with anvil_linux_{amd64,arm64}_VERSION assets plus a SHA256SUMS_VERSION manifest (PRs #4, #5, #6).
  • Server-side /runner/download streams the platform binary from the latest release (fangorn/anvil#49).
  • Server-side /runner/checksums streams the SHA256SUMS; install script verifies before installing (fangorn/anvil#65).
  • curl -fsSL https://anvil.fangorn.io/runner/install.sh | sh installs as /usr/local/bin/anvil, verifies checksum, runs --version, and migrates any legacy anvil-runner install (stops service, removes old binary, regenerates service file with new ExecStart path).
  • Verified end-to-end from a fresh Debian container against the real deployed server. Production runner on carl migrated and reporting anvil 2026.04.5.