[PR #94] [CLOSED] feat: add ARM (aarch64) platform support #176

Closed
opened 2026-10-29 14:20:40 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/kvcache-ai/AgentENV/pull/94
Author: @liunianxuxie
Created: 7/31/2026
Status: ❌ Closed

Base: main ← Head: feat/arm-support


📝 Commits (1)

  • e9f59e8 feat: add ARM (aarch64) support rebased on latest main

📊 Changes

10 files changed (+297 additions, -33 deletions)

View changed files

📝 Makefile (+5 -1)
📝 README.md (+8 -1)
📝 config/deps_manifest.toml (+11 -0)
📝 docs/src/SUMMARY.md (+2 -1)
➕ docs/src/getting-started/quickstart-arm.md (+174 -0)
📝 src/cfg.rs (+27 -3)
📝 src/setup/deps.rs (+44 -20)
📝 src/setup/overlaybd.rs (+3 -2)
📝 src/setup/packages.rs (+1 -1)
📝 tools-image/Dockerfile (+22 -4)

📄 Description

What

Add ARM (aarch64) platform support for AgentENV, enabling source-build installation on ARM servers including AWS Graviton, Ampere Altra, and Kunpeng (openEuler).

Why

AgentENV currently only supports x86_64. ARM servers are increasingly common in cloud and enterprise deployments, and openEuler is widely used on Kunpeng hardware. This PR makes AgentENV installable from source on aarch64.

Related issue

Closes #63

Scope and non-goals

Included:

  • Architecture-aware dependency resolution: Firecracker and guest kernel use {arch} URL templates pointing to kvcache-ai/firecracker (provides both x86_64 and aarch64 binaries)
  • openEuler Linux distro recognition (src/setup/packages.rs + src/setup/overlaybd.rs)
  • tools-image/Dockerfile fixes for ARM Docker builds (APT/GOPROXY mirrors, busybox extraction, platform resolution)
  • Makefile dynamic target triple detection (uname -m → Cargo runner env var)
  • ARM quickstart documentation

Excluded:

  • Pre-built ARM server binaries (CI release pipeline for aarch64)
  • Multi-arch Docker image publishing
  • ublk host kernel module on openEuler (requires host kernel rebuild; documented as optional)

Design and behavior changes

  • deps_manifest.toml: Firecracker and kernel now use kvcache-ai/firecracker releases with {arch} in the URL template instead of R2. Same URL serves both architectures.
  • src/setup/deps.rs: added {arch} placeholder to kernel URL resolution. No structural changes to dependency download logic.
  • Config default behavior unchanged. x86_64 existing deployments are unaffected.
  • ublk is enabled by default on all architectures. openEuler users who haven't rebuilt their host kernel should set [ublk].enabled = false.

Compatibility and operations

  • Public API or generated protocol: N/A (no API changes)
  • Configuration or defaults: N/A (default config unchanged)
  • Snapshot manifest, artifact layout, or storage format: N/A
  • Upgrade and rollback: N/A (source-build only for ARM; x86_64 unchanged)
  • Host requirements, permissions, ports, or dependencies: ARM hosts need KVM (/dev/kvm). Docker with Buildx for tools.ext4 compilation. openEuler additionally needs dpkg.

Validation

  • make fmt
  • make clippy
  • make test-unit (not run — no ARM CI runner available)
  • Relevant Rust integration tests (not run — no ARM CI runner available)
  • make -C services test (N/A — no services/ changes)
  • Generated clients/server regenerated (N/A — no API changes)
  • Documentation updated
  • Benchmarks or performance comparison completed (N/A)

Commands and results:

image image

Risks and reviewer notes

  • This PR changes Firecracker/kernel download URLs from R2 to kvcache-ai/firecracker. Both x86_64 and aarch64 binaries are available at the new location. The PR #86 branch uses the same source.
  • The tools-image/Dockerfile changes (APT/GOPROXY mirrors, platform fixes) are backwards-compatible for x86_64 builds.
  • openEuler distro detection in packages.rs maps to the existing CentOS/RPM-family package list. No new packages are required beyond what CentOS already uses.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/kvcache-ai/AgentENV/pull/94 **Author:** [@liunianxuxie](https://github.com/liunianxuxie) **Created:** 7/31/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/arm-support` --- ### 📝 Commits (1) - [`e9f59e8`](https://github.com/kvcache-ai/AgentENV/commit/e9f59e830cfb346583bd41f7a1e6ccda96999354) feat: add ARM (aarch64) support rebased on latest main ### 📊 Changes **10 files changed** (+297 additions, -33 deletions) <details> <summary>View changed files</summary> 📝 `Makefile` (+5 -1) 📝 `README.md` (+8 -1) 📝 `config/deps_manifest.toml` (+11 -0) 📝 `docs/src/SUMMARY.md` (+2 -1) ➕ `docs/src/getting-started/quickstart-arm.md` (+174 -0) 📝 `src/cfg.rs` (+27 -3) 📝 `src/setup/deps.rs` (+44 -20) 📝 `src/setup/overlaybd.rs` (+3 -2) 📝 `src/setup/packages.rs` (+1 -1) 📝 `tools-image/Dockerfile` (+22 -4) </details> ### 📄 Description ## What Add ARM (aarch64) platform support for AgentENV, enabling source-build installation on ARM servers including AWS Graviton, Ampere Altra, and Kunpeng (openEuler). ## Why AgentENV currently only supports x86_64. ARM servers are increasingly common in cloud and enterprise deployments, and openEuler is widely used on Kunpeng hardware. This PR makes AgentENV installable from source on aarch64. Related issue Closes #63 ## Scope and non-goals Included: - Architecture-aware dependency resolution: Firecracker and guest kernel use {arch} URL templates pointing to kvcache-ai/firecracker (provides both x86_64 and aarch64 binaries) - openEuler Linux distro recognition (src/setup/packages.rs + src/setup/overlaybd.rs) - tools-image/Dockerfile fixes for ARM Docker builds (APT/GOPROXY mirrors, busybox extraction, platform resolution) - Makefile dynamic target triple detection (uname -m → Cargo runner env var) - ARM quickstart documentation Excluded: - Pre-built ARM server binaries (CI release pipeline for aarch64) - Multi-arch Docker image publishing - ublk host kernel module on openEuler (requires host kernel rebuild; documented as optional) Design and behavior changes - deps_manifest.toml: Firecracker and kernel now use kvcache-ai/firecracker releases with {arch} in the URL template instead of R2. Same URL serves both architectures. - src/setup/deps.rs: added {arch} placeholder to kernel URL resolution. No structural changes to dependency download logic. - Config default behavior unchanged. x86_64 existing deployments are unaffected. - ublk is enabled by default on all architectures. openEuler users who haven't rebuilt their host kernel should set [ublk].enabled = false. Compatibility and operations - Public API or generated protocol: N/A (no API changes) - Configuration or defaults: N/A (default config unchanged) - Snapshot manifest, artifact layout, or storage format: N/A - Upgrade and rollback: N/A (source-build only for ARM; x86_64 unchanged) - Host requirements, permissions, ports, or dependencies: ARM hosts need KVM (/dev/kvm). Docker with Buildx for tools.ext4 compilation. openEuler additionally needs dpkg. Validation - make fmt - make clippy - make test-unit (not run — no ARM CI runner available) - Relevant Rust integration tests (not run — no ARM CI runner available) - make -C services test (N/A — no services/ changes) - Generated clients/server regenerated (N/A — no API changes) - Documentation updated - Benchmarks or performance comparison completed (N/A) Commands and results: <img width="1114" height="382" alt="image" src="https://github.com/user-attachments/assets/b1ef2383-513e-49fe-b195-2e03f9302ba1" /> <img width="613" height="213" alt="image" src="https://github.com/user-attachments/assets/51b11b62-d0e2-42c0-936f-1f555e0ca47b" /> Risks and reviewer notes - This PR changes Firecracker/kernel download URLs from R2 to kvcache-ai/firecracker. Both x86_64 and aarch64 binaries are available at the new location. The PR #86 branch uses the same source. - The tools-image/Dockerfile changes (APT/GOPROXY mirrors, platform fixes) are backwards-compatible for x86_64 builds. - openEuler distro detection in packages.rs maps to the existing CentOS/RPM-family package list. No new packages are required beyond what CentOS already uses. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-29 14:20:40 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
kvcache-ai/AgentENV#176
No description provided.