{"id":3836,"date":"2026-04-13T16:13:18","date_gmt":"2026-04-13T16:13:18","guid":{"rendered":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/04\/13\/how-to-analyze-hugging-face-for-arm64-readiness\/"},"modified":"2026-04-13T16:13:18","modified_gmt":"2026-04-13T16:13:18","slug":"how-to-analyze-hugging-face-for-arm64-readiness","status":"publish","type":"post","link":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/2026\/04\/13\/how-to-analyze-hugging-face-for-arm64-readiness\/","title":{"rendered":"How to Analyze Hugging Face for Arm64 Readiness"},"content":{"rendered":"<p><em>This post is a collaboration between Docker and Arm, demonstrating how Docker MCP Toolkit and the Arm MCP Server work together to scan Hugging Face Spaces for Arm64 Readiness.<\/em><\/p>\n<p>In our <a href=\"https:\/\/www.docker.com\/blog\/automate-arm-migration-docker-mcp-copilot\/\">previous post<\/a>, we walked through migrating a legacy C++ application with AVX2 intrinsics to Arm64 using <a href=\"https:\/\/docs.docker.com\/ai\/mcp-catalog-and-toolkit\/toolkit\/\" rel=\"nofollow noopener\" target=\"_blank\">Docker MCP Toolkit <\/a>and the <a href=\"https:\/\/hub.docker.com\/mcp\/server\/arm-mcp\/overview\" rel=\"nofollow noopener\" target=\"_blank\">Arm MCP Server<\/a> \u2013 code conversion, SIMD intrinsic rewrites, compiler flag changes, the full stack. This post is about a different and far more common failure mode.<\/p>\n<p>When we tried to run <a href=\"https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\" rel=\"nofollow noopener\" target=\"_blank\">ACE-Step v1.5<\/a>, a 3.5B parameter music generation model from Hugging Face, on an Arm64 MacBook, the installation failed not with a cryptic kernel error but with a pip error. The flash-attn wheel in requirements.txt was hardcoded to a <code>linux_x86_64<\/code> URL, no Arm64 wheel existed at that address, and the container would not build. It\u2019s a deceptively simple problem that turns out to affect roughly 80% of Hugging Face Docker Spaces: not the code, not the Dockerfile, but a single hardcoded dependency URL that nobody noticed because nobody had tested on Arm.<\/p>\n<p>To diagnose this systematically, we built a 7-tool MCP chain that can analyse any Hugging Face Space for Arm64 readiness in about 15 minutes. By the end of this guide you\u2019ll understand exactly why ACE-Step v1.5 fails on Arm64, what the two specific blockers are, and how the chain surfaces them automatically.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Why Hugging Face Spaces Matter for Arm<\/strong><\/h2>\n<p>Hugging Face hosts over one million Spaces, a significant portion of which use the Docker SDK meaning developers write a Dockerfile and HuggingFace builds and serves the container directly. The problem is that nearly all of those containers were built and tested exclusively on linux\/amd64, which creates a deployment wall for three fast-growing Arm64 targets that are increasingly relevant for AI workloads.<\/p>\n<div class=\"wp-block-ponyo-table\" data-highlighted-columns=\"null\" data-highlighted-rows=\"null\">\n<table class=\"responsive-table\">\n<tbody class=\"wp-block-ponyo-table-body\" data-highlighted-columns=\"[]\" data-highlighted-rows=\"[]\">\n<tr class=\"wp-block-ponyo-table-header\">\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Target\">\n<p>Target<\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Hardware\">\n<p>Hardware<\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Why it matters\">\n<p>Why it matters<\/p>\n<\/th>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Cloud<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>AWS Graviton, Azure Cobalt, Google Axion<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>20-40% cost reduction vs. x86<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Edge\/Robotics<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>NVIDIA Jetson Thor, DGX Spark<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>GR00T, LeRobot, Isaac all target Arm64<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Local dev<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Apple Silicon M1-M4<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Most popular developer machine, zero cloud cost<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The failure mode isn\u2019t always obvious, and it tends to show up in one of two distinct patterns. The first is a missing container manifest \u2013 the image has no arm64 layer and Docker refuses to pull it, which is at least straightforward to diagnose. The second is harder to catch: the Dockerfile and base image are perfectly fine, but a dependency in requirements.txt points to a platform-specific wheel URL. The build starts, reaches pip install, and fails with a platform mismatch error that gives no clear indication of where to look. ACE-Step v1.5 is a textbook example of the second pattern, and the MCP chain catches both in minutes.<\/p>\n<h2 class=\"wp-block-heading\"><strong>The 7-Tool MCP Chain<\/strong><\/h2>\n<p><a href=\"https:\/\/docs.docker.com\/ai\/mcp-catalog-and-toolkit\/toolkit\/\" rel=\"nofollow noopener\" target=\"_blank\">Docker MCP Toolkit<\/a> orchestrates the analysis through a secure MCP Gateway. Each tool runs in an isolated Docker container. The seven tools in the chain are:<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=2040792778  fetchpriority=\"high\" decoding=\"async\" width=\"1999\" height=\"1221\" src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image17.png\" class=\"fade-in\" alt=\"The 7-tool MCP chain architecture diagram\" title=\"- image17\" \/>\n        <\/div>\n<p><em>Caption: The 7-tool MCP chain architecture diagram<\/em><\/p>\n<p>The tools:<\/p>\n<ol class=\"wp-block-list\">\n<li><strong>Hugging Face MCP<\/strong> \u2013 Discovers the Space, identifies SDK type (Docker vs. Gradio)<\/li>\n<li><strong>Skopeo<\/strong> (via Arm MCP Server) \u2013 Inspects the container registry, reports supported architectures<\/li>\n<li><strong>migrate-ease<\/strong> (via Arm MCP Server) \u2013 Scans source code for x86-specific intrinsics, hardcoded paths, arch-locked libraries<\/li>\n<li><strong>GitHub MCP<\/strong> \u2013 Reads <code>Dockerfile<\/code>, <code>pyproject.toml<\/code>, <code>requirements.txt<\/code> from the repository<\/li>\n<li><strong>Arm Knowledge Base<\/strong> (via Arm MCP Server) \u2013 Searches learn.arm.com for build strategies and optimization guides<\/li>\n<li><strong>Sequential Thinking<\/strong> \u2013 Combines findings into a structured migration verdict<\/li>\n<li><strong>Docker MCP Gateway<\/strong> \u2013 Routes requests, manages container lifecycle<\/li>\n<\/ol>\n<p>The natural question at this point is whether you could simply rebuild your Docker image for Arm64 and be done with it and for many applications, you could. But knowing in advance whether the rebuild will actually succeed is a different problem. Your Dockerfile might depend on a base image that doesn\u2019t publish Arm64 builds. Your Python dependencies might not have aarch64 wheels. Your code might use x86-specific system calls. The MCP chain checks all of this automatically before you invest time in a build that may not work.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Setting Up Visual Studio Code with Docker MCP Toolkit<\/strong><\/h2>\n<h3 class=\"wp-block-heading\"><strong>Prerequisites<\/strong><\/h3>\n<p>Before you begin, make sure you have:<\/p>\n<ul class=\"wp-block-list\">\n<li>A machine with 8 GB RAM minimum (16GB recommended)<\/li>\n<li>The latest Docker Desktop release<\/li>\n<li>VS Code with GitHub Copilot extension<\/li>\n<li>GitHub account with personal access token<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><strong>Step 1. Enable Docker MCP Toolkit<\/strong><\/h3>\n<p>Open Docker Desktop and enable the MCP Toolkit from Settings.<\/p>\n<p><strong>To enable:<\/strong><\/p>\n<ol class=\"wp-block-list\">\n<li>Open Docker Desktop<\/li>\n<li>Go to <strong>Settings<\/strong> &gt; <strong>Beta Features<\/strong><\/li>\n<\/ol>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1278250511  fetchpriority=\"high\" decoding=\"async\" width=\"1999\" height=\"1015\" src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image2-2.png\" class=\"fade-in\" alt=\"Enabling Docker MCP Toolkit under Docker Desktop\" title=\"- image2 2\" \/>\n        <\/div>\n<p><em>Caption: Enabling Docker MCP Toolkit under Docker Desktop<\/em><\/p>\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Toggle <strong>Docker MCP Toolkit<\/strong> ON<\/li>\n<li>Click <strong>Apply<\/strong><\/li>\n<\/ol>\n<h3 class=\"wp-block-heading\"><strong>Step 2. Add Required MCP Servers from Catalog<\/strong><\/h3>\n<p>Add the following four MCP Servers from the Catalog. You can find them by selecting \u201cCatalog\u201d in the Docker Desktop MCP Toolkit, or by following these links:<\/p>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/hub.docker.com\/mcp\/server\/arm-mcp\/overview\" rel=\"nofollow noopener\" target=\"_blank\"><strong>Arm MCP Server<\/strong><\/a> \u2013 Architecture analysis, <code>migrate-ease<\/code> scanning, <code>skopeo<\/code> inspection, and Arm knowledge base<\/li>\n<li><a href=\"https:\/\/hub.docker.com\/mcp\/server\/github-official\/overview\" rel=\"nofollow noopener\" target=\"_blank\"><strong>GitHub MCP Server<\/strong><\/a> \u2013 Repository analysis, code reading, and pull request creation<\/li>\n<li><a href=\"https:\/\/hub.docker.com\/mcp\/server\/sequentialthinking\/overview\" rel=\"nofollow noopener\" target=\"_blank\"><strong>Sequential Thinking MCP Server<\/strong><\/a> \u2013 Complex problem decomposition and planning<\/li>\n<li><a href=\"https:\/\/huggingface.co\/docs\/hub\/en\/mcp-server\" rel=\"nofollow noopener\" target=\"_blank\"><strong>Hugging Face MCP Server<\/strong><\/a> \u2013 Space discovery and metadata retrieval<\/li>\n<\/ul>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=233230147  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image21.png\"  decoding=\"async\" width=\"1999\" height=\"1132\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Searching for Arm MCP Server in the Docker MCP Catalog\" title=\"- image21\" \/>\n        <\/div>\n<p><em>Caption: Searching for Arm MCP Server in the Docker MCP Catalog<\/em><\/p>\n<h3 class=\"wp-block-heading\"><strong>Step 3. Configure the Servers<\/strong><\/h3>\n<ol class=\"wp-block-list\">\n<li><strong>Configure the Arm MCP Server<\/strong><\/li>\n<\/ol>\n<p>To access your local code for the migrate-ease scan and MCA tools, the Arm MCP Server needs a directory configured to point to your local code.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1776175932  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image1-2.png\"  decoding=\"async\" width=\"1999\" height=\"731\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Arm MCP Server configuration\" title=\"- image1 2\" \/>\n        <\/div>\n<p><em>Caption: Arm MCP Server configuration<\/em><\/p>\n<p>Once you click \u2018Save\u2019, the Arm MCP Server will know where to look for your code. If you want to give a different directory access in the future, you\u2019ll need to change this path.<\/p>\n<p><strong>Available Arm Migration Tools<\/strong><\/p>\n<p>Click Tools to view all six MCP tools available under Arm MCP Server:<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=447936335  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image14.png\"  decoding=\"async\" width=\"1999\" height=\"1181\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"List of MCP tools provided by the Arm MCP Server\" title=\"- image14\" \/>\n        <\/div>\n<p><em>Caption: List of MCP tools provided by the Arm MCP Server<\/em><\/p>\n<ul class=\"wp-block-list\">\n<li><code>knowledge_base_search<\/code> \u2013 Semantic search of Arm learning resources, intrinsics documentation, and software compatibility<\/li>\n<li><code>migrate_ease_scan<\/code> \u2013 Code scanner supporting C++, Python, Go, JavaScript, and Java for Arm compatibility analysis<\/li>\n<li><code>check_image<\/code> \u2013 Docker image architecture verification (checks if images support Arm64)<\/li>\n<li><code>skopeo<\/code> \u2013 Remote container image inspection without downloading<\/li>\n<li><code>mca<\/code> \u2013 Machine Code Analyzer for assembly performance analysis and IPC predictions<\/li>\n<li><code>sysreport_instructions<\/code> \u2013 System architecture information gathering<\/li>\n<\/ul>\n<ol start=\"2\" class=\"wp-block-list\">\n<li><strong>Configure the GitHub MCP Server<\/strong><\/li>\n<\/ol>\n<p>The GitHub MCP Server lets GitHub Copilot read repositories, create pull requests, manage issues, and commit changes.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=617232078  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image12.png\"  decoding=\"async\" width=\"1999\" height=\"651\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Steps to configure GitHub Official MCP Server\" title=\"- image12\" \/>\n        <\/div>\n<p><em>Caption: Steps to configure GitHub Official MCP Server<\/em><\/p>\n<p><strong>Configure Authentication:<\/strong><\/p>\n<ol class=\"wp-block-list\">\n<li>Select GitHub official<\/li>\n<li>Choose your preferred authentication method<\/li>\n<li>For Personal Access Token, get the token from GitHub &gt; Settings &gt; Developer Settings<\/li>\n<\/ol>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1478976995  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image6.png\"  decoding=\"async\" width=\"1999\" height=\"620\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Setting up Personal Access Token in GitHub MCP Server\" title=\"- image6\" \/>\n        <\/div>\n<p><em>Caption: Setting up Personal Access Token in GitHub MCP Server<\/em><\/p>\n<ol start=\"3\" class=\"wp-block-list\">\n<li><strong>Configure the Sequential Thinking MCP Server<\/strong><\/li>\n<\/ol>\n<ul class=\"wp-block-list\">\n<li>Click <strong>\u201cSequential Thinking\u201d<\/strong><\/li>\n<li>No configuration needed<\/li>\n<\/ul>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=2042209528  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image3-2.png\"  decoding=\"async\" width=\"1999\" height=\"642\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Sequential MCP Server requires zero configuration\" title=\"- image3 2\" \/>\n        <\/div>\n<p><em>Caption: Sequential MCP Server requires zero configuration<\/em><\/p>\n<p>This server helps GitHub Copilot break down complex migration decisions into logical steps.<\/p>\n<ol start=\"4\" class=\"wp-block-list\">\n<li><strong>Configure the Hugging Face MCP Server<\/strong><\/li>\n<\/ol>\n<p>The Hugging Face MCP Server provides access to Space metadata, model information, and repository contents directly from the Hugging Face Hub.<\/p>\n<ul class=\"wp-block-list\">\n<li>Click <strong>\u201cHugging Face\u201d<\/strong><\/li>\n<li>No additional configuration needed for public Spaces<\/li>\n<li>For private Spaces, add your HuggingFace API token<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><strong>Step 4. Add the Servers to VS Code<\/strong><\/h3>\n<p>The Docker MCP Toolkit makes it incredibly easy to configure MCP servers for clients like VS Code.<\/p>\n<p>To configure, click \u201cClients\u201d and scroll down to Visual Studio Code. Click the \u201cConnect\u201d button:<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1481815869  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image11.png\"  decoding=\"async\" width=\"1999\" height=\"812\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Setting up Visual Studio Code as MCP Client\" title=\"- image11\" \/>\n        <\/div>\n<p><em>Caption: Setting up Visual Studio Code as MCP Client<\/em><\/p>\n<p>Now open VS Code and click on the \u2018Extensions\u2019 icon in the left toolbar:<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=208117798  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image8.png\"  decoding=\"async\" width=\"290\" height=\"1006\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Configuring MCP_DOCKER under VS Code Extensions\" title=\"- image8\" \/>\n        <\/div>\n<p><em>Caption: Configuring MCP_DOCKER under VS Code Extensions<\/em><\/p>\n<p>Click the <code>MCP_DOCKER<\/code> gear, and click \u2018Start Server\u2019:<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=193446606  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image7.png\"  decoding=\"async\" width=\"442\" height=\"195\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Starting MCP Server under VS Code\" title=\"- image7\" \/>\n        <\/div>\n<p><em>Caption: Starting MCP Server under VS Code<\/em><\/p>\n<h3 class=\"wp-block-heading\"><strong>Step 5. Verify Connection<\/strong><\/h3>\n<p>Open GitHub Copilot Chat in VS Code and ask:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\">\nWhat Arm migration and Hugging Face tools do you have access to?\n<\/pre>\n<\/div>\n<p>You should see tools from all four servers listed. If you see them, your connection works. Let\u2019s scan a Hugging Face Space.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=226567782  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image22.png\"  decoding=\"async\" width=\"1144\" height=\"1722\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Playing around with GitHub Copilot\" title=\"- image22\" \/>\n        <\/div>\n<p><em>Caption: Playing around with GitHub Copilot<\/em><\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=2037939210  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image15.png\"  decoding=\"async\" width=\"1144\" height=\"1648\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"image15\" title=\"- image15\" \/>\n        <\/div>\n\n<h2 class=\"wp-block-heading\"><strong>Real-World Demo: Scanning ACE-Step v1.5<\/strong><\/h2>\n<p>Now that you\u2019ve connected GitHub Copilot to Docker MCP Toolkit, let\u2019s scan a real Hugging Face Space for Arm64 readiness and uncover the exact Arm64 blocker we hit when trying to run it locally.<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Target:<\/strong><a href=\"https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\" rel=\"nofollow noopener\" target=\"_blank\"> ACE-Step v1.5<\/a> \u2013 a 3.5B parameter music generation model\u00a0<\/li>\n<li><strong>Time to scan:<\/strong> 15 minutes\u00a0<\/li>\n<li><strong>Infrastructure cost:<\/strong> $0 (all tools run locally in Docker containers)\u00a0<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><strong>The Workflow<\/strong><\/h3>\n<p>Docker MCP Toolkit orchestrates the scan through a secure MCP Gateway that routes requests to specialized tools: the Arm MCP Server inspects images and scans code, Hugging Face MCP discovers the Space, GitHub MCP reads the repository, and Sequential Thinking synthesizes the verdict.\u00a0<\/p>\n<p><strong>Step 1. Give GitHub Copilot Scan Instructions<\/strong><\/p>\n<p>Open your project in VS Code. In GitHub Copilot Chat, paste this prompt:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\">\nYour goal is to analyze the Hugging Face Space \"ACE-Step\/ACE-Step-v1.5\" for Arm64 migration readiness. Use the MCP tools to help with this analysis.\n\nSteps to follow:\n1. Use Hugging Face MCP to discover the Space and identify its SDK type (Docker or Gradio)\n2. Use skopeo to inspect the container image - check what architectures are currently supported\n3. Use GitHub MCP to read the repository - examine pyproject.toml, Dockerfile, and requirements\n4. Run migrate_ease_scan on the source code to find any x86-specific dependencies or intrinsics\n5. Use knowledge_base_search to find Arm64 build strategies for any issues discovered\n6. Use sequential thinking to synthesize all findings into a migration verdict\n\nAt the end, provide a clear GO \/ NO-GO verdict with a summary of required changes.\n<\/pre>\n<\/div>\n<p><strong>Step 2. Watch Docker MCP Toolkit Execute<\/strong><\/p>\n<p>GitHub Copilot orchestrates the scan using Docker MCP Toolkit. Here\u2019s what happens:<\/p>\n<p><strong>Phase 1: Space Discovery<\/strong><\/p>\n<p>GitHub Copilot starts by querying the Hugging Face MCP server to retrieve Space metadata.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=747303153  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image13.png\"  decoding=\"async\" width=\"1136\" height=\"1318\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"GitHub Copilot uses HuggingFace MCP to discover the Space and identify its SDK type.\" title=\"- image13\" \/>\n        <\/div>\n<p><em>Caption: GitHub Copilot uses Hugging Face MCP to discover the Space and identify its SDK type.<\/em><\/p>\n<p>The tool returns that ACE-Step v1.5 uses the <strong>Docker SDK<\/strong> \u2013 meaning Hugging Face serves it as a pre-built container image, not a Gradio app. This is critical: Docker SDK Spaces have Dockerfiles we can analyze and rebuild, while Gradio SDK Spaces are built by Hugging Face\u2019s infrastructure we can\u2019t control.<\/p>\n<p><strong>Phase 2: Container Image Inspection<\/strong><\/p>\n<p>Next, Copilot uses the Arm MCP Server\u2019s <code>skopeo<\/code> tool to inspect the container image without downloading it.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=823194905  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image4-1.png\"  decoding=\"async\" width=\"1106\" height=\"1182\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"The skopeo tool reports that the container image has no arm64 build available. The container won't start on Arm hardware.\" title=\"- image4 1\" \/>\n        <\/div>\n<p><em>Caption: The skopeo tool reports that the container image has no Arm64 build available. The container won\u2019t start on Arm hardware.<\/em><\/p>\n<p>Result: the manifest includes only linux\/amd64. No Arm64 build exists. This is the first concrete data point\u00a0 the container will fail on any Arm hardware. But this is not the full story.<\/p>\n<p><strong>Phase 3: Source Code Analysis<\/strong><\/p>\n<p>Copilot uses GitHub MCP to read the repository\u2019s key files. Here is <a href=\"https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\/blob\/main\/Dockerfile\" rel=\"nofollow noopener\" target=\"_blank\">the actual Dockerfile<\/a> from the Space:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\">\nFROM python:3.11-slim\n\nENV PYTHONDONTWRITEBYTECODE=1 \n    PYTHONUNBUFFERED=1 \n    DEBIAN_FRONTEND=noninteractive \n    TORCHAUDIO_USE_TORCHCODEC=0\n\nRUN apt-get update &amp;amp;&amp;amp; \n    apt-get install -y --no-install-recommends git libsndfile1 build-essential &amp;amp;&amp;amp; \n    apt-get install -y ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswresample-dev &amp;amp;&amp;amp; \n    rm -rf \/var\/lib\/apt\/lists\/*\n\nRUN useradd -m -u 1000 user\nRUN mkdir -p \/data &amp;amp;&amp;amp; chown user:user \/data &amp;amp;&amp;amp; chmod 755 \/data\n\nENV HOME=\/home\/user \n    PATH=\/home\/user\/.local\/bin:$PATH \n    GRADIO_SERVER_NAME=0.0.0.0 \n    GRADIO_SERVER_PORT=7860\n\nWORKDIR $HOME\/app\nCOPY --chown=user:user requirements.txt .\nCOPY --chown=user:user acestep\/third_parts\/nano-vllm .\/acestep\/third_parts\/nano-vllm\nUSER user\n\nRUN pip install --no-cache-dir --user -r requirements.txt\nRUN pip install --no-deps .\/acestep\/third_parts\/nano-vllm\n\nCOPY --chown=user:user . .\nEXPOSE 7860\nCMD [\"python\", \"app.py\"]\n\n<\/pre>\n<\/div>\n<p>The Dockerfile itself looks clean:<\/p>\n<ul class=\"wp-block-list\">\n<li>python:3.11-slim already publishes multi-arch builds including arm64<\/li>\n<li>No -mavx2, no -march=x86-64 compiler flags<\/li>\n<li>build-essential, ffmpeg, libsndfile1 are all available in Debian\u2019s arm64 repositories<\/li>\n<\/ul>\n<p>But the real problem is in <code>requirements.txt<\/code>. This is what I hit when I tried to install ACE-Step locally:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: plain; gutter: false; title: ; notranslate\">\n# nano-vllm dependencies\ntriton&amp;gt;=3.0.0; sys_platform != 'win32'\n\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/\n  download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_x86_64.whl\n  ; sys_platform == 'linux' and python_version == '3.11'\n<\/pre>\n<\/div>\n<p><strong>Two immediate blockers:<\/strong><\/p>\n<ul class=\"wp-block-list\">\n<li><strong><code>flash-attn<\/code><\/strong> is pinned to a hardcoded <code>linux_x86_64<\/code> wheel URL. On an aarch64 system, pip downloads this wheel and immediately rejects it: <em>\u201cnot a supported wheel on this platform.\u201d<\/em> This is the exact error I hit.<\/li>\n<li><strong><code>triton&gt;=3.0.0<\/code><\/strong> has no aarch64 wheel on PyPI for Linux. It will fail on Arm hardware.<\/li>\n<\/ul>\n<p>Neither of these is a code problem. The Python source code is architecture-neutral. The fix is in the dependency declarations.<\/p>\n<p><strong>Phase 4: Architecture Compatibility Scan<\/strong><\/p>\n<p>Copilot runs the <code>migrate_ease_scan<\/code> tool with the Python scanner on the codebase.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1546523607  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image5-1.png\"  decoding=\"async\" width=\"1046\" height=\"1224\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"The migrate_ease_scan tool analyzes the Python source code and finds zero x86-specific dependencies. No intrinsics, no hardcoded paths, no architecture-locked libraries.\" title=\"- image5 1\" \/>\n        <\/div>\n<p><em>Caption: The migrate_ease_scan tool analyzes the Python source code and finds zero x86-specific dependencies. No intrinsics, no hardcoded paths, no architecture-locked libraries.<\/em><\/p>\n<p>The application source code itself returns 0 architecture issues \u2014 no x86 intrinsics, no platform-specific system calls. But the scan also flags the dependency manifest. Two blockers in requirements.txt:<\/p>\n<div class=\"wp-block-ponyo-table\" data-highlighted-columns=\"null\" data-highlighted-rows=\"null\">\n<table class=\"responsive-table\">\n<tbody class=\"wp-block-ponyo-table-body\" data-highlighted-columns=\"[]\" data-highlighted-rows=\"[]\">\n<tr class=\"wp-block-ponyo-table-header\">\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Dependency\">\n<p><span>Dependency<\/span><\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Issue\">\n<p><span>Issue<\/span><\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Arm64 Fix\">\n<p><span>Arm64 Fix<\/span><\/p>\n<\/th>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>flash-attn (linux wheel)<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Hardcoded linux_x86_64 URL<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Use flash-attn 2.7+ via PyPI \u2014 publishes aarch64 wheels natively<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>triton&gt;=3.0.0<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No aarch64 PyPI wheel for Linux<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Exclude on aarch64 or use triton-nightly aarch64 build<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Phase 5: Arm Knowledge Base Lookup<\/strong><\/p>\n<p>Copilot queries the Arm MCP Server\u2019s knowledge base for solutions to the discovered issues.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1178763060  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image19.png\"  decoding=\"async\" width=\"1086\" height=\"1246\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"GitHub Copilot uses the knowledge_base_search tool to find Docker buildx multi-arch strategies from learn.arm.com.\" title=\"- image19\" \/>\n        <\/div>\n<p><em>Caption: GitHub Copilot uses the knowledge_base_search tool to find Docker buildx multi-arch strategies from learn.arm.com.<\/em><\/p>\n<p>The knowledge base returns documentation on:<\/p>\n<ul class=\"wp-block-list\">\n<li>flash-attn aarch64 wheel availability from version 2.7+<\/li>\n<li>PyTorch Arm64 optimization guides for Graviton and Apple Silicon<\/li>\n<li>Best practices for CUDA 13.0 on aarch64 (Jetson Thor \/ DGX Spark)<\/li>\n<li>triton alternatives for CPU inference paths on Arm<\/li>\n<\/ul>\n<p><strong>Phase 6: Synthesis and Verdict<\/strong><\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=744291671  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image20.png\"  decoding=\"async\" width=\"1116\" height=\"1338\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"Sequential Thinking combines all findings into a structured verdict\" title=\"- image20\" \/>\n        <\/div>\n\n<p>Sequential Thinking combines all findings into a structured verdict:<\/p>\n<div class=\"wp-block-ponyo-table\" data-highlighted-columns=\"null\" data-highlighted-rows=\"null\">\n<table class=\"responsive-table\">\n<tbody class=\"wp-block-ponyo-table-body\" data-highlighted-columns=\"[]\" data-highlighted-rows=\"[]\">\n<tr class=\"wp-block-ponyo-table-header\">\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Check\">\n<p><span>Check<\/span><\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Result\">\n<p><span>Result<\/span><\/p>\n<\/th>\n<th class=\"wp-block-ponyo-cell\" data-responsive-table-heading=\"Blocks?\">\n<p><span>Blocks?<\/span><\/p>\n<\/th>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Container manifest<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>amd64 only<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Yes, needs rebuild<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Base image python:3.11-slim<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Multi-arch (arm64 available)<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>System packages (ffmpeg, libsndfile1)<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Available in Debian arm64<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>torch==2.9.1<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>aarch64 wheels published<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>flash-attn linux wheel<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Hardcoded linux_x86_64 URL<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>YES, add arm64 URL alongside<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>triton&gt;=3.0.0<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>aarch64 wheels available from 3.5.0+<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No, resolves automatically<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Source code (migrate-ease)<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>0 architecture issues<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<tr class=\"wp-block-ponyo-table-row\">\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>Compiler flags in Dockerfile<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>None x86-specific<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<td class=\"wp-block-ponyo-cell\">\n                    <span class=\"responsive-table-label\"><\/span>\n<p>                    <span class=\"responsive-table-value\"><br \/>\n                                                    <span class=\"responsive-table-value-content\"><\/span><\/span><\/p>\n<p><span>No<\/span><\/p>\n<p>                    <br \/>\n                                            \n            <\/p><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Verdict: CONDITIONAL GO<\/strong>. Zero code changes. Zero Dockerfile changes. One dependency fix is required.<\/p>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=2125073036  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image18.png\"  decoding=\"async\" width=\"1130\" height=\"1304\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"image18\" title=\"- image18\" \/>\n        <\/div>\n\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=464882695  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image9.png\"  decoding=\"async\" width=\"1128\" height=\"1302\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"image9\" title=\"- image9\" \/>\n        <\/div>\n<p>Here are the exact changes needed in requirements.txt:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\">\n# BEFORE \u2014 only x86_64\n\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_aarch64.whl ; sys_platform == 'linux' and python_version == '3.11' and platform_machine == 'aarch64'\n\n\n# AFTER \u2014 add arm64 line alongside x86_64\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_aarch64.whl ; sys_platform == 'linux' and python_version == '3.11' and platform_machine == 'aarch64'\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_x86_64.whl ; sys_platform == 'linux' and python_version == '3.11' and platform_machine != 'aarch64'\n\n# triton \u2014 no change needed, 3.5.0+ has aarch64 wheels, resolves automatically\ntriton&gt;=3.0.0; sys_platform != 'win32'\n\n<\/pre>\n<\/div>\n<p>After those two fixes, the build command is:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\">\ndocker buildx build --platform linux\/arm64 -t ace-step:arm64 .\n<\/pre>\n<\/div>\n<p>That single command unlocks three deployment paths:<\/p>\n<ul class=\"wp-block-list\">\n<li>NVIDIA Arm64 \u2014 Jetson Thor, DGX Spark (aarch64 + CUDA 13.0)<\/li>\n<li>Cloud Arm64 \u2014 AWS Graviton, Azure Cobalt, Google Axion (20-40% cost savings)<\/li>\n<li>Apple Silicon \u2014 M1-M4 Macs with MPS acceleration (local inference, $0 cloud cost)<\/li>\n<\/ul>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=2094332716  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image10.png\"  decoding=\"async\" width=\"1895\" height=\"861\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"image10\" title=\"- image10\" \/>\n        <\/div>\n\n<p><strong>Phase 7: Create the Pull Request<\/strong><\/p>\n<p>After completing the scan, Copilot uses GitHub MCP to propose the fix. Since the only blocker is the hardcoded <code>linux_x86_64<\/code> wheel URL on line 32 of <code>requirements.txt<\/code>, the change is surgical: one line added, nothing removed.<\/p>\n<p>The fix adds the equivalent <code>linux_aarch64<\/code> wheel from the same release alongside the existing x86_64 entry, conditioned on <code>platform_machine == 'aarch64'<\/code>:<\/p>\n<div class=\"wp-block-syntaxhighlighter-code \">\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\">\n# BEFORE \u2014 only x86_64, fails silently on Arm\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/\n  download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_x86_64.whl\n  ; sys_platform == 'linux' and python_version == '3.11'\n\n# AFTER \u2014 add arm64 line alongside, conditioned by platform_machine\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/\n  download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_x86_64.whl\n  ; sys_platform == 'linux' and python_version == '3.11'\nflash-attn @ https:\/\/github.com\/mjun0812\/flash-attention-prebuild-wheels\/releases\/\n  download\/v0.7.12\/flash_attn-2.8.3+cu128torch2.10-cp311-cp311-linux_aarch64.whl\n  ; sys_platform == 'linux' and python_version == '3.11' and platform_machine == 'aarch64'\n<\/pre>\n<\/div>\n<div class=\"wp-block-ponyo-image\">\n                <img data-opt-id=1858472872  data-opt-src=\"https:\/\/www.docker.com\/app\/uploads\/2026\/03\/image16.png\"  decoding=\"async\" width=\"1530\" height=\"671\" src=\"data:image/svg+xml,%3Csvg%20viewBox%3D%220%200%20100%%20100%%22%20width%3D%22100%%22%20height%3D%22100%%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Crect%20width%3D%22100%%22%20height%3D%22100%%22%20fill%3D%22transparent%22%2F%3E%3C%2Fsvg%3E\" class=\"fade-in\" alt=\"PR #14 on Hugging Face - Ready to merge\" title=\"- image16\" \/>\n        <\/div>\n<p><em>Caption: PR #14 on Hugging Face \u2013 Ready to merge<\/em><\/p>\n<p>The key insight: the upstream maintainer already published the arm64 wheel in the same release. The fix wasn\u2019t a rebuild or a code change \u2013 it was adding one line that references an artifact that already existed. The MCP chain found it in 15 minutes. Without it, a developer hitting this pip error would spend hours tracking it down.<\/p>\n<p><strong>PR:<\/strong> <a href=\"https:\/\/github.com\/ajeetraina\/Ace-Step-v1.5\/pull\/1\" rel=\"nofollow noopener\" target=\"_blank\"><\/a><a href=\"https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\/discussions\/14\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\/discussions\/14<\/a><\/p>\n<h3 class=\"wp-block-heading\"><strong>Without Arm MCP vs. With Arm MCP<\/strong><\/h3>\n<p>Let\u2019s be clear about what changes when you add the Arm MCP Server to Docker MCP Toolkit.<\/p>\n<ul class=\"wp-block-list\">\n<li>Without Arm MCP: You ask GitHub Copilot to check your Hugging Face Space for Arm64 compatibility. Copilot responds with general advice: \u201cCheck if your base image supports arm64\u201d, \u201cLook for x86-specific code\u201d, \u201cTry rebuilding with buildx\u201d. You manually inspect Docker Hub, grep through the codebase, check each dependency on PyPI, and hit a pip install failure you cannot easily diagnose. The flash-attn URL issue alone can take an hour to track down.<\/li>\n<\/ul>\n<ul class=\"wp-block-list\">\n<li>With Arm MCP + Docker MCP Toolkit: You ask the same question. Within minutes, it uses skopeo to verify the base image, runs migrate_ease_scan on your actual codebase, flags the hardcoded linux_x86_64 wheel URLs in requirements.txt, queries knowledge_base_search for the correct fix, and synthesizes a structured CONDITIONAL GO verdict with every check documented.<\/li>\n<\/ul>\n<p>Real images get inspected. Real code gets scanned. Real dependency files get analyzed. The difference is Docker MCP Toolkit gives GitHub Copilot access to actual Arm migration tooling, not just general knowledge.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Manual Process vs. MCP Chain<\/strong><\/h3>\n<p><strong>Manual process:<\/strong><\/p>\n<ol class=\"wp-block-list\">\n<li>Clone the Hugging Face Space repository (10 minutes)<\/li>\n<li>Inspect the container manifest for architecture support (5 minutes)<\/li>\n<li>Read through pyproject.toml and requirements.txt (20 minutes)<\/li>\n<li>Check PyPI for Arm64 wheel availability across all dependencies (30 minutes)<\/li>\n<li>Analyze the Dockerfile for hardcoded architecture assumptions (10 minutes)<\/li>\n<li>Research CUDA\/cuDNN Arm64 support for the required versions (20 minutes)<\/li>\n<li>Write up findings and recommended changes (15 minutes)<\/li>\n<\/ol>\n<p><strong>Total: 2-3 hours per Space<\/strong><\/p>\n<p><strong>With Docker MCP Toolkit:<\/strong><\/p>\n<ol class=\"wp-block-list\">\n<li>Give GitHub Copilot the scan instructions (5 minutes)<\/li>\n<li>Review the migration report (5 minutes)<\/li>\n<li>Submit a PR with changes (5 minutes)<\/li>\n<\/ol>\n<p><strong>Total: 15 minutes per Space<\/strong><\/p>\n<h2 class=\"wp-block-heading\"><strong>What This Suggests at Scale<\/strong><\/h2>\n<p>ACE-Step is a standard Python AI application: PyTorch, Gradio, pip dependencies, a slim Dockerfile. This pattern covers the majority of Docker SDK Spaces on Hugging Face.<\/p>\n<p>The Arm64 wall for these apps is not always visible. The Dockerfile looks clean. The base image supports arm64. The Python code has no intrinsics. But buried in requirements.txt is a hardcoded wheel URL pointing at a linux_x86_64 binary, and nobody finds it until they actually try to run the container on Arm hardware.<\/p>\n<p>That is the 80% problem: <strong>80% of Hugging Face Docker Spaces have never been tested on Arm.<\/strong> Not because the code will not work. but because nobody checked. The MCP chain is a systematic check that takes 15 minutes instead of an afternoon of debugging pip errors.<\/p>\n<p>That has real cost implications:<\/p>\n<ul class=\"wp-block-list\">\n<li>Graviton inference runs 20-40% cheaper for the same workloads. Every amd64-only Space leaves that savings untouched.<\/li>\n<li>NVIDIA Physical AI (GR00T, LeRobot, Isaac) deploys on Jetson Thor. Developers find models on Hugging Face, but the containers fail to build on target hardware.<\/li>\n<li>Apple Silicon is the most common developer laptop. Local inference means faster iteration and no cloud bill.<\/li>\n<\/ul>\n<h2 class=\"wp-block-heading\"><strong>How Docker MCP Toolkit Changes Development<\/strong><\/h2>\n<p>Docker MCP Toolkit changes how developers interact with specialized knowledge and capabilities. Rather than learning new tools, installing dependencies, or managing credentials, developers connect their AI assistant once and immediately access containerized expertise.<\/p>\n<p>The benefits extend beyond Hugging Face scanning:<\/p>\n<ul class=\"wp-block-list\">\n<li><strong>Consistency<\/strong> \u2014 Same 7-tool chain produces the same structured analysis for any container<\/li>\n<li><strong>Security<\/strong> \u2014 Each tool runs in an isolated Docker container, preventing tool interference<\/li>\n<li><strong>Reproducibility<\/strong> \u2014 Scans behave identically across environments<\/li>\n<li><strong>Composability<\/strong> \u2014 Add or swap tools as the ecosystem evolves<\/li>\n<li><strong>Discoverability<\/strong> \u2014 Docker MCP Catalog makes finding the right server straightforward<\/li>\n<\/ul>\n<p>Most importantly, developers remain in their existing workflow. VS Code. GitHub Copilot. Git. No context switching to external tools or dashboards.<\/p>\n<h2 class=\"wp-block-heading\"><strong>Wrapping Up<\/strong><\/h2>\n<p>You have just scanned a real Hugging Face Space for Arm64 readiness using Docker MCP Toolkit, the Arm MCP Server, and GitHub Copilot. What we found with ACE-Step v1.5 is representative of what you will find across Hugging Face: code that is architecture-neutral, a Dockerfile that is already clean, but a requirements.txt with hardcoded x86_64 wheel URLs that silently break Arm64 builds.<\/p>\n<p>The MCP chain surfaces this in 15 minutes. Without it, you are staring at a pip error with no clear path to the cause.<\/p>\n<p><strong>Ready to try it?<\/strong> Open <a href=\"https:\/\/hub.docker.com\/open-desktop?url=https:\/\/open.docker.com\/dashboard\/mcp&amp;_gl\" rel=\"nofollow noopener\" target=\"_blank\">Docker Desktop<\/a> and explore the MCP Catalog. Start with the <a href=\"https:\/\/hub.docker.com\/mcp\/server\/arm-mcp\/overview\" rel=\"nofollow noopener\" target=\"_blank\">Arm MCP Server<\/a>, add <a href=\"https:\/\/hub.docker.com\/mcp\/server\/github-official\/overview\" rel=\"nofollow noopener\" target=\"_blank\">GitHub<\/a>,<a href=\"https:\/\/hub.docker.com\/mcp\/server\/sequentialthinking\/overview\" rel=\"nofollow noopener\" target=\"_blank\">Sequential Thinking<\/a>, and <a href=\"https:\/\/hub.docker.com\/mcp\/server\/hugging-face\/overview\" rel=\"nofollow noopener\" target=\"_blank\">Hugging Face MCP<\/a>. Point the chain at any Hugging Face Space you\u2019re working with and see what comes back.<\/p>\n<h3 class=\"wp-block-heading\"><strong>Learn More<\/strong><\/h3>\n<ul class=\"wp-block-list\">\n<li><strong>New to Docker?<\/strong><a href=\"https:\/\/www.docker.com\/products\/docker-desktop\"> Download Docker Desktop<\/a><\/li>\n<li><strong>Explore the MCP Catalog:<\/strong><a href=\"https:\/\/hub.docker.com\/mcp\" rel=\"nofollow noopener\" target=\"_blank\"> Discover containerized, security-hardened MCP servers<\/a><\/li>\n<li><strong>Get Started with MCP Toolkit:<\/strong><a href=\"https:\/\/docs.docker.com\/ai\/mcp-catalog-and-toolkit\/\" rel=\"nofollow noopener\" target=\"_blank\"> Official Documentation<\/a><\/li>\n<li><strong>Arm MCP Server:<\/strong><a href=\"https:\/\/developer.arm.com\/community\/arm-community-blogs\/b\/ai-blog\/posts\/introducing-the-arm-mcp-server-simplifying-cloud-migration-with-ai\" rel=\"nofollow noopener\" target=\"_blank\"> Developer Documentation<\/a><\/li>\n<li><strong>Hugging Face MCP Server:<\/strong><a href=\"https:\/\/huggingface.co\/docs\/hub\/en\/mcp-server\" rel=\"nofollow noopener\" target=\"_blank\"> <\/a><a href=\"https:\/\/hub.docker.com\/mcp\/server\/hugging-face\/overview\" rel=\"nofollow noopener\" target=\"_blank\">Hub Documentation<\/a><\/li>\n<li><strong>ACE-Step v1.5:<\/strong><a href=\"https:\/\/huggingface.co\/spaces\/ACE-Step\/Ace-Step-v1.5\" rel=\"nofollow noopener\" target=\"_blank\"> Hugging Face Space<\/a><\/li>\n<li><strong>Migration PR:<\/strong><a href=\"https:\/\/github.com\/ajeetraina\/Ace-Step-v1.5\/pull\/1\" rel=\"nofollow noopener\" target=\"_blank\"> GitHub Pull Request<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>This post is a collaboration between Docker and Arm, demonstrating how Docker MCP Toolkit and the Arm MCP Server work [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3837,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[4],"tags":[],"class_list":["post-3836","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-docker"],"_links":{"self":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/3836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/comments?post=3836"}],"version-history":[{"count":0,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/posts\/3836\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media\/3837"}],"wp:attachment":[{"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/media?parent=3836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/categories?post=3836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rssfeedtelegrambot.bnaya.co.il\/index.php\/wp-json\/wp\/v2\/tags?post=3836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}