You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/deploy-containerized-workloads-with-topo/_index.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,7 +3,7 @@ title: Deploy containerized workloads to Arm-based Linux targets with Topo
3
3
4
4
description: Learn how to use Topo to detect device capabilities, select a compatible template, and deploy containerized workloads to Arm-based Linux targets over SSH.
5
5
6
-
minutes_to_complete: 45
6
+
minutes_to_complete: 30
7
7
8
8
who_is_this_for: This is an introductory topic for embedded, edge, and cloud software developers who want to easily deploy containerized workloads to Arm-based Linux targets with Topo.
A Topo health check confirms connectivity between the host and target, as well as the verifying the presence of dependencies such as docker.
35
88
36
-
You should resolve any `❌` errors before moving on. Warnings (`⚠️`) can indicate optional capabilities you can add later. `ℹ️` provides other information. A `✅` confirms the presence of dependencies and no warnings or errors.
89
+
You should resolve any `❌` errors before moving on. Warnings (⚠️) can indicate optional capabilities that may be needed in certain projects. `ℹ️` provides other information. A `✅` confirms the presence of dependencies and no warnings or errors.
37
90
38
91
If you are using password-based SSH, you will likely see the `❌` error below:
39
92
@@ -48,9 +101,9 @@ This is because Topo requires key-based SSH. You can use the command specified a
48
101
49
102
If using a Cortex-A + Cortex-M device, such as the i.MX 93, you may see a `⚠️` warning if `remoteproc-runtime` is not installed on the target.
50
103
51
-
[`remoteproc`](https://docs.kernel.org/staging/remoteproc.html) is a Linux kernel framework for managing remote / auxiliary processors in a heterogeneous SoC. It allows the main CPU (e.g., Cortex-A) to load firmware on to the auxiliary processors (e.g., Cortex-M), start and stop them, and to communicate with them (e.g. using `rpmsg`).
104
+
[`remoteproc`](https://docs.kernel.org/staging/remoteproc.html) is a Linux kernel framework for managing remote / auxiliary processors in a heterogeneous SoC. It allows the main CPU (e.g., Cortex-A) to load firmware on to the auxiliary processors (e.g., Cortex-M), start and stop them, and to communicate with them (e.g. using [`rpmsg`](https://docs.kernel.org/staging/rpmsg.html)).
52
105
53
-
[`remoteproc-runtime`](https://github.com/arm/remoteproc-runtime) builds on this by adding a container-style (OCI) interface. This lets you package and manage firmware like container images using standard tools (e.g. Docker or containerd), even though the code runs as firmware on the Cortex-M. OCI (Open Container Initiative) defines open standards for container image formats and runtimes, ensuring compatibility across container tools.
106
+
[`remoteproc-runtime`](https://github.com/arm/remoteproc-runtime) builds on this by adding a container-style (OCI - Open Container Initiative) interface. This lets you package and manage firmware like container images using standard tools (e.g. Docker or containerd), even though the code runs as firmware on the Cortex-M. [OCI](https://opencontainers.org/) defines open standards for container image formats and runtimes, ensuring compatibility across container tools.
54
107
55
108
You can use Topo to install `remoteproc-runtime`. Run the following command from the host device:
56
109
@@ -62,7 +115,7 @@ Run the health command again to verify installation. Topo uses `remoteproc-runti
62
115
63
116
## Generate a target description
64
117
65
-
In this step, you ask Topo to probe your target hardware and create a machine-readable YAML description.
118
+
In this step, you ask Topo to probe your target and create a machine-readable YAML description of the hardware.
66
119
67
120
On your host device, run:
68
121
@@ -121,7 +174,7 @@ An example output for an AWS Graviton instance is shown below:
121
174
displays a lightbulb in either the on or off state. The lightbulb state is
122
175
described by an LLM in any user-specified style.
123
176
124
-
✅ topo-v9-cpu-chat | https://github.com/Arm-Examples/topo-v9-cpu-chat.git | main
177
+
✅ topo-cpu-ai-chat | https://github.com/Arm-Examples/topo-cpu-ai-chat.git | main
125
178
Features: SVE, NEON
126
179
Complete LLM chat application optimized for Arm CPU inference.
If a template asks for build arguments, Topo prompts you interactively.
@@ -29,7 +29,7 @@ services:
29
29
build:
30
30
context: ./llama-inference
31
31
args:
32
-
ENABLE_SVE: ON
32
+
ENABLE_SVE: OFF
33
33
HF_MODEL: bartowski/Qwen_Qwen3.5-0.8B-GGUF
34
34
HF_MODEL_FILE: ""
35
35
ports:
@@ -45,7 +45,7 @@ services:
45
45
build:
46
46
context: ./simple-chat
47
47
args:
48
-
ENABLE_SVE: ON
48
+
ENABLE_SVE: OFF
49
49
depends_on:
50
50
llama-server:
51
51
condition: service_healthy
@@ -76,10 +76,10 @@ Changes can be made to the `compose.yaml` files to adjust arguments after the fa
76
76
77
77
## Deploy the app on the target
78
78
79
-
On your host device, enter the project directory created by the `topo clone` command. In the case of the LLM chatbot, this directory is `topo-v9-cpu-chat`:
79
+
On your host device, enter the project directory created by the `topo clone` command. In the case of the LLM chatbot, this directory is `topo-cpu-ai-chat`:
80
80
81
81
```bash
82
-
cd topo-v9-cpu-chat/
82
+
cd topo-cpu-ai-chat/
83
83
```
84
84
85
85
Then use `topo deploy` to automatically build the container images on the host, transfer the images to the target via SSH, and start the application on the target:
@@ -112,4 +112,4 @@ Topo is packaged as a single executable with a `README.md` file. It is straightf
112
112
113
113
Choose your preferred agent. If you do not have a CLI Agent pre-configured, you can follow our guides to [Install Codex](https://learn.arm.com/install-guides/codex-cli/), [Install Claude Code](https://learn.arm.com/install-guides/claude-code/), or [Install Gemini](https://learn.arm.com/install-guides/gemini/).
114
114
115
-
Once your agent is ready, ensure you have setup your host and target to have the required dependencies. Then ask your agent to leverage Topo to deploy an application to your target device.
115
+
Once your agent is ready, ensure you have setup your host and target to have the required dependencies. Then ask your agent to leverage Topo to deploy an application to your target device.
Copy file name to clipboardExpand all lines: content/learning-paths/cross-platform/deploy-containerized-workloads-with-topo/overview-and-setup.md
+7-45Lines changed: 7 additions & 45 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ layout: learningpathall
8
8
9
9
## What is Topo?
10
10
11
-
[Topo](https://github.com/arm/topo) is an open-source command-line tool, developed by Arm. Topo connects from a host device (e.g., your development laptop) to an Arm-based Linux target (e.g., a Raspberry Pi) over SSH, detects hardware capabilities, and allows the user to deploy compatible containerized workloads with ease. Topo builds container images on the host, transfers them to the target, and starts the services on the target. The public repository showcases several pre-built template workloads you can deploy, including a "Hello World" webpage, an LLM Chatbot, and a SIMD Benchmark comparing Scalar, Neon, and the Scalable Vector Extension (SVE).
11
+
[Topo](https://github.com/arm/topo) is an open-source command-line tool, developed by Arm. Topo connects from a host device (e.g., your development laptop) to an Arm-based Linux target (e.g., a Raspberry Pi) over SSH, detects hardware capabilities, and allows the user to deploy compatible containerized workloads with ease. Topo builds container images on the host, transfers them to the target, and starts the services on the target. Building and deploying on target is also possible. Topo also showcases several sample templates defining workloads you can deploy, including a "Hello World" webpage, an LLM Chatbot, and a SIMD Benchmark comparing Scalar, Neon, and the Scalable Vector Extension (SVE).
12
12
13
13
[Topo templates](https://github.com/arm/topo-template-format) are based on the [Compose Specification](https://github.com/compose-spec/compose-spec), 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 how to run multi-container applications. Instead of manually starting containers one-by-one, you define everything in a single file that includes which services to run, what images to use, how they connect, and what configuration they need.
14
14
@@ -18,11 +18,14 @@ The optional heterogeneous deployment with `remoteproc-runtime` requires a heter
18
18
19
19
## Why use Topo?
20
20
21
-
Topo streamlines deploying pre-existing containerized workloads to new Arm-based Linux devices. Once a template is defined, use of Topo removes the need to deal with low-level setup and compatibility issues manually. Topo first assesses the system to identify processor features such as SVE or Neon on CPU, then advises which templates are appropriate for the device, before automating the deployment.
21
+
Topo streamlines deploying containerized workloads to Arm-based Linux devices.
22
+
If you have an heterogeneous device (e.g. Cortex-A + Cortex-M SoC such as the i.MX 93), Topo enables you to use it fully, deploying both firmware and application as containerized workloads through standard container tooling.
23
+
24
+
Once a template is defined, use of Topo removes the need to deal with low-level setup and compatibility issues manually. Topo first assesses the system to identify processor features such as SVE or Neon on CPU, then advises which templates are appropriate for the device, before automating the end to end deployment, for which Topo deals with all the low-level instructions.
22
25
23
26
Topo can also be leveraged by AI Agents to further streamline and automate.
24
27
25
-
## Prepare host environment
28
+
## Install Topo
26
29
27
30
In this step, you install Topo on the host, along with other dependencies.
28
31
@@ -47,47 +50,6 @@ topo --help
47
50
48
51
You should see an output confirming Topo is present, and describing the available commands.
49
52
50
-
Confirm that the required dependencies are available on the host bu running these commands in your host terminal:
51
-
52
-
```bash
53
-
ssh -V
54
-
docker --version
55
-
```
56
-
57
-
You should see an output confirming version numbers, for example:
58
-
59
-
```output
60
-
OpenSSH_x.x
61
-
Docker version xx.x.x
62
-
```
63
-
64
-
If Docker is missing, please use [Install Docker](https://learn.arm.com/install-guides/docker/).
65
-
66
-
If SSH is missing, please use [Install SSH](https://learn.arm.com/install-guides/ssh/).
67
-
68
-
## Prepare target environment
69
-
70
-
Now that the host device is prepared, we will setup the target. On the host device, connect to your target with SSH.
71
-
72
-
```bash
73
-
ssh user@your-target
74
-
```
75
-
76
-
Once connected to the target, use the following commands to verify both Docker and `lscpu` are installed:
77
-
78
-
```bash
79
-
docker --version
80
-
lscpu
81
-
```
82
-
83
-
The output should apear similar to the following:
84
-
85
-
```output
86
-
Docker version xx.x.x
87
-
Architecture: aarch64
88
-
CPU(s): ...
89
-
```
90
-
91
53
## What you've completed and what's next
92
54
93
-
You have now prepared both your host and target for use with Topo. In the next step, you will utilize Topo to probe your target device for features, assessing its compability with template containerized workloads.
55
+
You have now installed Topo on your host. In the next step, you will utilize Topo to prepare your host machine and to probe your target device for features, assessing its compability with template containerized workloads.
0 commit comments