Skip to main content

Install Topo

Install Topo on a host to deploy applications to an Arm-based Linux target. The host and target can be separate systems. You can also use one AArch64 Linux system as both the host and target.

Supported systems​

Topo release binaries support the following host systems:

Host operating systemHost architecture
LinuxAMD64 and Arm64
macOSIntel and Apple silicon
Windowsx64 and Arm64

A target must run Linux on AArch64 (linux/arm64). Topo uses Docker to build images on the host and run containers on the target.

Prepare the host​

Install the following tools on the host:

Topo also needs network access to download releases, clone projects, and pull container images. Network requirements vary by project because project builds can download additional dependencies.

Prepare the target​

The target requires:

  • Linux on AArch64 (linux/arm64)
  • Docker configured so that the target user can run commands without sudo
  • lscpu, which is usually included in the util-linux package
  • A POSIX-compatible login shell like sh or bash
  • SSH access from the host unless you deploy to localhost

Choose an installation method​

Install from the Arm Homebrew tap:

brew install arm/topo/topo

You can use Homebrew on macOS and supported Linux distributions. See Homebrew for installation instructions.

Verify the installation​

Print the installed version:

topo --version

Check the host dependencies:

topo health

Fix every host error before you continue. For some problems, the report provides a command that applies the fix.

Install a specific version or use a custom directory​

The Linux and macOS installer supports --version and --path. To use these options, download the script before you run it:

curl -fsSL https://raw.githubusercontent.com/arm/topo/refs/heads/main/scripts/install.sh -o install-topo.sh
sh install-topo.sh --version v4.0.0 --path "$HOME/bin"
rm install-topo.sh

The Windows installer provides equivalent -Version and -Path parameters:

$installer = irm https://raw.githubusercontent.com/arm/topo/refs/heads/main/scripts/install.ps1
& ([scriptblock]::Create($installer)) -Version v4.0.0 -Path C:\tools\topo

Replace v4.0.0 with the required release version. If you use a custom directory, add it to PATH manually.

Upgrade Topo​

Use the method that matches how you installed Topo.

Upgrade to the latest release:

topo upgrade

To install a specific version, run the installer again with its version option.

Verify the upgrade:

topo --version
topo health

Uninstall Topo​

Choose the instructions that match the installation method.

Remove the binary from the default installation directory:

rm "$HOME/.local/bin/topo"

If you selected a custom directory, remove topo from that directory instead. Remove any PATH entry that you added only for Topo.

Uninstalling Topo does not remove:

  • Cloned project directories
  • Containers or images on a target
  • The topo-registry container on the host
  • SSH keys or configuration entries created by topo setup-keys

Remove the local registry container if you no longer need it:

docker rm -f topo-registry

Other Topo installations or target aliases might use entries in ~/.ssh/config or ~/.ssh/topo_config, or keys named ~/.ssh/id_ed25519_topo_*. Remove only unused entries and keys.

Next steps​

Follow Getting started to check a target and deploy an example project.