Skip to content

ARM64/Apple Silicon Support Request #195

Description

@yoni1342

ARM64/Apple Silicon Support Request

Summary

The NCA Toolkit Docker image currently only supports AMD64 architecture, preventing it from running natively on ARM64 systems including Apple Silicon Macs (M1/M2/M3/M4) and ARM64 Linux servers.

Environment Details

  • System Architecture: ARM64 (aarch64)
  • OS: Ubuntu Linux (ARM64) / macOS (Apple Silicon)
  • Docker Version: Latest
  • Error: exec /app/run_gunicorn.sh: exec format error

Current Behavior

When attempting to run the Docker container on ARM64 systems:

docker run --platform linux/amd64 -p 8780:8080 \
  -e API_KEY=thekey \
  -e S3_ENDPOINT_URL=http://localhost:9090 \
  -e S3_ACCESS_KEY=admin \
  -e S3_SECRET_KEY=password123 \
  -e S3_BUCKET_NAME=nca-toolkit \
  -e S3_REGION=None \
  stephengpope/no-code-architects-toolkit:latest

Result: exec /app/run_gunicorn.sh: exec format error

Attempted Solutions

  1. Platform forcing: --platform linux/amd64 - Failed
  2. Building from source: Encountered missing ARM64 packages (libsvtav1-dev)
  3. Docker Compose platform specification - Failed

Build Issues Encountered

When building from source on ARM64:

E: Package 'libsvtav1-dev' has no installation candidate

The current Dockerfile includes several packages that may not be available or compatible with ARM64 architecture.

Expected Behavior

The Docker image should support multi-architecture builds, specifically:

  • linux/amd64 (current)
  • linux/arm64 (requested)

Business Impact

  • Apple Silicon Mac users cannot run the toolkit locally
  • ARM64 cloud instances (cheaper alternatives) cannot be used
  • Development workflow is limited to AMD64 systems only

Suggested Solutions

Option 1: Multi-Architecture Build

Use Docker's buildx to create multi-arch images:

docker buildx build --platform linux/amd64,linux/arm64 -t stephengpope/no-code-architects-toolkit:latest --push .

Option 2: ARM64-Specific Dockerfile

Create a separate Dockerfile for ARM64 that:

  • Replaces unavailable packages with ARM64 equivalents
  • Uses ARM64-compatible base images
  • Handles architecture-specific dependencies

Option 3: Conditional Package Installation

Modify the existing Dockerfile to conditionally install packages based on architecture:

RUN if [ "$(uname -m)" = "aarch64" ]; then \
    apt-get install libsvtav1enc-dev; \
  else \
    apt-get install libsvtav1-dev; \
  fi

Additional Context

This issue affects the growing number of users on:

  • Apple Silicon Macs (M1/M2/M3/M4)
  • ARM64 cloud instances (AWS Graviton, etc.)
  • ARM64 development boards and servers

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions