What is Topo?

Topo is an open-source command-line tool developed by Arm. It uses a host/target model. The host — your development machine, which can be x86 or Arm, running Linux, macOS, or Windows — runs the Topo CLI and connects to an Arm-based Linux target over SSH. Topo builds container images on the host, transfers them to the target, and starts the services on the target. Topo can also build and deploy directly on the target.

Topo detects the hardware capabilities of the target — such as Arm CPU features including Neon and SVE — and uses this information to identify which containerized workload projects are compatible. Topo also provides sample projects for common use cases, including a “Hello World” webpage, an LLM chatbot, and a SIMD benchmark comparing scalar, Neon (128-bit fixed-width), and SVE (scalable-width vector) implementations.

The Topo Project specification is based on the Compose Specification , extended with x-topo metadata that describes requirements such as CPU features and build arguments. The Compose Specification is a standard, YAML-based format for describing multi-container applications. Instead of starting containers individually, you define all services, images, connections, and configuration in a single compose.yaml file.

You can use any compatible target device in this Learning Path, for example a Raspberry Pi, an AWS Graviton-based EC2 instance, a DGX Spark, or an NXP i.MX 93. The target must be Arm-based, running Linux, and accessible over SSH. Your host can also function as the target simultaneously, provided it is an Arm-based Linux device.

The optional heterogeneous deployment section requires a Cortex-A + Cortex-M SoC, such as the i.MX 93.

Why use Topo?

Topo removes the need to handle low-level setup and compatibility checks manually. It queries the target to identify processor features such as SVE or Neon, advises which projects are appropriate for the device, and automates the end-to-end deployment.

If you have a heterogeneous SoC (for example, a Cortex-A + Cortex-M device such as the i.MX 93), you can use Topo to deploy both firmware and application as containerized workloads through standard container tooling. This lets you make full use of all processors on the device.

You can also use Topo with CLI agents to streamline deployment workflows.

Install Topo

Install Topo on your host using the following install script, or download the binary manually.

On your host device, run the following command:

    

        
        

curl -fsSL https://raw.githubusercontent.com/arm/topo/refs/heads/main/scripts/install.sh | sh
  

    
    

        
        

irm https://raw.githubusercontent.com/arm/topo/refs/heads/main/scripts/install.ps1 | iex
  

    

Alternatively, find the latest release of Topo , download the binary for your platform (x86/Arm, Linux/macOS/Windows), and extract it. Topo is a single executable file. Move it to a directory on your PATH, for example /usr/local/bin/ on Linux and macOS.

Run the following command in the terminal on your host device to confirm the installation:

    

        
        
topo --help

    

If Topo is installed, the command displays the available commands and options.

What you’ve accomplished and what’s next

You have now installed Topo on your host and confirmed it is available. Next, you’ll use Topo to prepare your host and probe your target device for features, assessing its compatibility with containerized workload projects.

Back
Next