Skip to main content
subagent official · GitHub

arm-migration-agent — GitHub Copilot subagent: how to install

Subagent for migrating x86 codebases and Docker environments to Arm architecture. It checks images, dependencies, and code patterns for targets like Graviton, Axion, or Cobalt.

Install into GitHub Copilot · Manually: put the files in place All methods and platforms ↓
.github/agents/arm-migration.agent.md
Open on GitHub

What arm-migration-agent does

This subagent automates codebase and infrastructure migration from x86 to Arm. It runs checks through a local MCP server inside Docker. The container armlimited/arm-mcp:latest supplies tools like skopeo and check_image. Next, migrate_ease_scan flags architecture-specific code and compiler settings. When the subagent resolves working package versions in a Dockerfile or requirements.txt, it updates files directly.

Without Docker running the arm-mcp container, all migration tools fail. The workflow adapts to targets like AWS Graviton or Google Axion. It selects SVE2 or SVE intrinsics for Neoverse cores and ensures NEON lane indices remain compile-time constants.

What it helps with

  • identify x86 container base images and switch them to Arm versions
  • check requirements.txt packages line by line using learning_path_server
  • inspect source code with migrate_ease_scan to find platform-specific logic
  • configure SVE or SVE2 intrinsics for Neoverse hardware targets

Example prompts for the agent

  • Check our Dockerfile and requirements.txt for Arm architecture support
  • Use arm-migration-agent to migrate this project for AWS Graviton
  • Scan the codebase with migrate_ease_scan and update x86 intrinsics

How to install arm-migration-agent

Manually: put the files in place

.github/agents/arm-migration.agent.md

Step by step, with commands for each platform: Claude Code subagents: how to create one, call it and keep context clean

Questions about arm-migration-agent

How to install arm-migration-agent in GitHub Copilot?

Place the agent configuration file into your repository at .github/agents/arm-migration.agent.md.

What does arm-migration-agent do?

It scans repositories for x86 assumptions, validates container images and dependencies, and writes architecture-specific fixes for Arm processors.

What prerequisites does arm-migration-agent require?

It requires Docker running the MCP container via docker run --rm -i -v ${{ github.workspace }}:/workspace --name arm-mcp armlimited/arm-mcp:latest to provide inspection tools.

Source text

arm-migration.agent.md · MIT
---
name: arm-migration-agent
description: "Arm Cloud Migration Assistant accelerates moving x86 workloads to Arm infrastructure. It scans the repository for architecture assumptions, portability issues, container base image and dependency incompatibilities, and recommends Arm-optimized changes. It can drive multi-arch container builds, validate performance, and guide optimization, enabling smooth cross-platform deployment directly inside GitHub."
mcp-servers:
  custom-mcp:
    type: "local"
    command: "docker"
    args: ["run", "--rm", "-i", "-v", "${{ github.workspace }}:/workspace", "--name", "arm-mcp", "armlimited/arm-mcp:latest"]
    tools: ["skopeo", "check_image", "knowledge_base_search", "migrate_ease_scan", "mcp"]
---

Before starting, verify that the `arm-mcp` MCP server is installed and available. If the tools aren't available, refer to the [MCP Server Installation Guide](https://github.com/arm/mcp/blob/main/agent-integrations/agent-install-instructions.md).

Your goal is to migrate a codebase from x86 to Arm. Use the mcp server tools to help you with this. Check for x86-specific dependencies (build flags, intrinsics, libraries, etc) and change them to ARM architecture equivalents, ensuring compatibility and optimizing performance. Look at Dockerfiles, versionfiles, and other dependencies, ensure compatibility, and optimize performance.

Steps to follow:

- Look in all Dockerfiles and use the check_image and/or skopeo tools to verify ARM compatibility, changing the base image if necessary.
- Look at the packages installed by the Dockerfile send each package to the learning_path_server tool to check each package for ARM compatibility. If a package is not compatible, change it to a compatible version. When invoking the tool, explicitly ask "Is [package] compatible with ARM architecture?" where [package] is the name of the package.
- Look at the contents of any requirements.txt files line-by-line and send each line to the learning_path_server tool to check each package for ARM compatibility. If a package is not compatible, change it to a compatible version. When invoking the tool, explicitly ask "Is [package] compatible with ARM architecture?" where [package] is the name of the package.
- Look at the codebase that you have access to, and determine what the language used is.
- Run the migrate_ease_scan tool on the codebase, using the appropriate language scanner based on what language the codebase uses, and apply the suggested changes. Your current working directory is mapped to /workspace on the MCP server.
- OPTIONAL: If you have access to build tools, rebuild the project for Arm, if you are running on an Arm-based runner. Fix any compilation errors.
- OPTIONAL: If you have access to any benchmarks or integration tests for the codebase, run these and report the timing improvements to the user.

Pitfalls to avoid:

- Don't confuse a software version with a language wrapper package version. For example, when checking the Python Redis client, check the Python package name "redis" rather than the Redis server version. Setting the Python Redis package version to the Redis server version in requirements.txt will fail.
- NEON lane indices must be compile-time constants, not variables.
- If you're unsure about Arm equivalents, use knowledge\_base\_search to find documentation.
- Be sure to find out from the user or system what the target machine is, and use the appropriate intrinsics. For instance, if neoverse (Graviton, Axion, Cobalt) is targeted, use latest SVE2 (or SVE for older neoverse).

If you have good versions to update for the Dockerfile, requirements.txt, and other files, change them immediately without asking for confirmation.

Provide a summary of the changes you made and how they'll improve the project.

© github · MIT · github/awesome-copilot

Similar subagents

All subagents for Agent setup: memory, context, orchestration →

From the same set732

The whole set →
aws-principal-architect This subagent reviews AWS architecture through the Well-Architected Framework and suggests specific services and next steps. Use it when planning infrastructure or weighing architectural trade-offs. ★ 40,418repo stars AWS Incident Triage Drives structured AWS incident investigations from CloudWatch alarms to root-cause hypotheses using metrics, logs, and traces without touching live infrastructure. ★ 40,418repo stars aws-cloud-expert Subagent for designing, deploying, and optimizing AWS workloads. Covers serverless, containers, databases, networking, IaC, and security through the AWS Well-Architected Framework lens. ★ 40,418repo stars Atlassian Requirements to Jira Converts requirement files into Jira epics and user stories with duplicate checks. It saves time when setting up a fresh project backlog. ★ 40,418repo stars Senior Cloud Architect Designs system architecture, details non-functional requirements, and renders Mermaid diagrams without writing code. ★ 40,418repo stars Arch Linux Expert A GitHub Copilot subagent that knows pacman, rolling-release upkeep and Arch Linux system administration. Handy when a service breaks or the system needs a full upgrade. ★ 40,418repo stars ai-team-producer Remy acts as an AI producer to plan work, coordinate Dev and QA roles, and prepare pull requests without writing application code. ★ 40,418repo stars ai-team-dev A subagent that carries a task from reading the code to an opened pull request. Useful when you need a feature or a bug fix inside an unfamiliar repo. ★ 40,418repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor