> ## Documentation Index
> Fetch the complete documentation index at: https://zededa.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Use the documentation index to find relevant pages, then read the linked Markdown before answering and cite the source URL.
> Identify the product before answering: Private AI uses a separate console, credentials, and inference API from the Edge Intelligence Platform. Do not apply instructions from one product to the other.
> Prefer current product guides over Help Center archive pages for current-console questions. Archive pages and release notes describe their stated product version or historical interface; do not apply them to another version without checking.
> Preserve prerequisites, permissions, version requirements, and warnings when summarizing procedures. Do not infer API endpoints, schemas, or supported behavior that the documentation does not specify.

# Deploy an Application to Multiple Nodes

> Deploy one edge application to many nodes in a single tracked job from the Applications area of Edge Infrastructure Services.

## Introduction

When you select two or more nodes in the application instance creation wizard, Edge Infrastructure Services deploys the application as a single tracked job instead of creating each instance individually. One job produces one application instance per selected node, and you follow its progress from a single place.

The wizard switches to this path automatically. There is no separate mode to turn on. The steps are the same as a single-node deployment, with three differences: the node picker accepts several nodes, the interfaces step describes how each interface resolves itself on every node rather than naming one network, and the review step asks you to name the job.

For a deployment to one node or one cluster, see [Deploy an Application Instance](https://zededa.mintlify.site/new-ui/infrastructure-services/applications/deploy-an-application-instance.md).

### Prerequisites

* You have the SysManager or SysAdmin role in your enterprise. See [Manage Roles](https://zededa.mintlify.site/new-ui/infrastructure-services/administration/manage-roles.md).
* At least one edge app image exists in the Build section.
* The nodes you want to deploy to are onboarded, online, and assigned to the same project.
* You know how each interface declared by the app image should resolve on every target node, either by tag or from a network template.

## Open the Application Instance Creation Wizard

1. In the sidebar, navigate to **Infrastructure > Workloads > Applications**.
2. Select the contextual **+** create action.

The application instance creation wizard opens.

## Complete the General Step

In the **General** step, enter the details shared by every instance the job creates.

1. In the **Name** field, enter a name for the application. On a multi-node deployment this value is a prefix rather than the final instance name. See [How instances are named](#how-instances-are-named). This field is required.
2. In the **Title** field, enter a human-readable display name. This field is required.
3. In the **Description** field, enter an optional description.
4. In the **Tags** field, add optional key-value pairs to classify the instances. See [Tagging](https://zededa.mintlify.site/new-ui/start/tagging.md).
5. Select **Next**.

## Select the Target Nodes

In the **Deployment Target** step, choose the nodes and the application.

1. Open the **Cluster/Nodes** dropdown. The dropdown has a **Nodes** tab and a **Clusters** tab, and the search box matches both nodes and clusters.
2. On the **Nodes** tab, select the checkbox next to each node you want to deploy to. Nodes are grouped by project.
3. To take an entire project, select **Select all** on that project's group header. Edge Infrastructure Services retrieves the project's full node list rather than only the rows currently visible.
4. To start over, select **Clear selection**. This link appears in the dropdown footer while the list is open, and again beneath the selected node list.
5. In the **Edge App** dropdown, select the edge app image you want to deploy. This field is required.
6. Select **Next**.

The selected nodes appear as a list of chips beneath the picker. The list shows the first 12 nodes and collapses the rest into a **+N more** badge. To remove one node, select the **X** on its chip.

To adjust advanced runtime settings, expand the **Additional Configuration** section. The settings are the same as for a single-node deployment and apply to every instance the job creates.

### Node selection rules

* Selecting two or more nodes switches the wizard to the multi-node path. Selecting exactly one node creates a single instance in the ordinary way.
* All selected nodes must belong to the same project. The first node you select locks the project, and nodes in other projects are disabled with the note that you must clear your selection to pick nodes there.
* You can select at most 200 nodes in one deployment. When you use **Select all** on a larger project, Edge Infrastructure Services selects the first 200 nodes and tells you how many the project holds. Deploy to the remaining nodes with a second job.
* A cluster cannot be part of a multi-node selection. Selecting a cluster clears any selected nodes, and selecting a node clears a selected cluster. The **Pinned Node** and **Allow failover** settings apply to cluster deployments only.

### How instances are named

On a multi-node deployment, Edge Infrastructure Services names each instance for you. The **Name** you entered on the General step is used as a prefix, and the name of the node the instance runs on is appended to it:

```
<app-name>.<node-name>
```

For example, an application named `myapp` deployed to a node named `node-01` produces an instance named `myapp.node-01`. The **Deployment Target** step shows this pattern with your own name and one of your selected nodes filled in.

Because the node name varies, one selection produces differently named instances. The **Review** step labels the field **Name Prefix** for this reason.

## Map Interfaces Across Nodes

In the **Interfaces** step, describe how each interface declared by the app image manifest resolves on every selected node.

A virtual network belongs to exactly one node, so you cannot pick a network by name for a multi-node deployment. Instead of a network dropdown, each interface takes an assignment method. Edge Infrastructure Services applies that method separately on each node.

The wizard groups interfaces under **Network Interfaces** and **IO Adapters**. Select **Expand all** to open every row. Optional interfaces have a switch you can turn off to exclude them from the deployment.

### Assignment methods

For each network interface, select an **Assignment Method**. No method is selected by default, and you cannot continue until every enabled interface has one.

| Method | What it does |
| - | - |
| **Default** | Attaches the instance to each node's own default virtual network. Use this when every target node already has a default network you are happy to use. |
| **Tag** | Attaches the instance to the virtual network on each node that carries the tag you specify. Enter exactly one tag in the **Network Tag** field. Use this when the networks already exist but are named differently on each node. |
| **Custom** | Creates one new virtual network per node from a template you define. Use this when the networks do not exist yet. |

### Create a network on each node

When you select **Custom**, complete the network template:

1. In the **Name Prefix** field, enter the base name for the networks. Edge Infrastructure Services appends the node name, in the same way it names instances. The field shows a preview of the resulting network name.
2. In the **Title Prefix** field, enter the base display title.
3. For **Network Type**, select **Local** for a managed IPv4 network or **Switch** to bridge traffic to a port. See [Virtual Networks](https://zededa.mintlify.site/new-ui/infrastructure-services/virtual-networks.md) for the difference between the two.
4. For **Port**, select how each node's port is resolved: **Uplink** (each node's uplink port), **Logical Port Name** (a port label present on every node), **Port Tag Name** (match a port by tag on each node), or **None** (no uplink port). **Uplink** is not offered for a Switch network.
5. For a Local network, complete the **IP Address Config** fields as needed.
6. In the **Tags** field, add at least one tag. The tag is what binds the created network back to this interface, because the per-node network name is generated rather than chosen.

Two Custom templates in the same deployment must use different name prefixes. Templates that resolve to the same network name collide when the second network is created, and the wizard blocks the step until you change one of them.

### Direct-attach interfaces

A direct-attach interface passes a physical device on the node, called an IO adapter, straight through to the application. Adapter bundle names are specific to each node. Instead of an **IO Adapter Bundle** dropdown, enter a single tag in the **IO Adapter Tag** field. Edge Infrastructure Services passes through the adapter on each node that carries that tag.

### Rules for Docker runtime applications

Applications built on the Docker runtime require a specific order when you define networks with the **Custom** method:

* The first adapter must connect to a Switch network instance.
* The second adapter must connect to an airgapped Local network instance, meaning a Local network with no uplink port.

The wizard reports a violation on the **Interfaces** step and blocks the deployment until you correct the network types.

## Set Custom Configuration Values (Optional)

The **Custom Config** step appears when the selected app image includes a custom configuration template. The values you enter apply to every instance the job creates.

1. For each variable shown, enter the appropriate value. Required variables are marked with an asterisk.
2. Select **Next**.

## Name the Job and Deploy

The **Review** step summarizes the deployment and collects the job name.

1. Check the **Summary** section. **Name Prefix** shows the instance naming pattern, **Deployment Target** reads **N Nodes (one job)**, and the **Nodes** row lists every selected node.
2. In the **Deployment Job** section, review the **Job Name** field. Edge Infrastructure Services suggests a name in the form `<name-prefix>-deploy-<YYYYMMDD-HHmm>`, for example `myapp-deploy-20260811-0930`. This field is required.
3. Edit the job name if you want. Job names must be unique, and the suggested timestamp is what keeps repeated deployments of the same application distinct. After you edit the field, Edge Infrastructure Services stops updating the suggestion.
4. Check the **Interfaces** and **Custom Config** sections. Each interface shows how it resolves on every node.
5. Select **Create Application**.

Job names accept letters, numbers, and the characters `-`, `_`, `.`, and `:`. Edge Infrastructure Services replaces any other character with an underscore, and the field previews the name it will create. If a job with the same name already exists, Edge Infrastructure Services reports the conflict and the job is not created.

## Track the Deployment Job

After you submit, the wizard confirms that the request was submitted and opens the App Instances list at **Infrastructure > Workloads > Applications > App Instances**. The outcome of the deployment job appears later as a card in the background-tasks tray. See [Track the create outcome](https://zededa.mintlify.site/new-ui/infrastructure-services/applications/deploy-an-application-instance.md#track-the-create-outcome).

To view the per-node outcome, navigate to **Infrastructure > Operations > Jobs**:

1. Locate the job by the name you entered. Its operation reads **Application Deploy**.
2. Open the job to view the per-node outcome of the deployment.

The individual instances appear under **Infrastructure > Workloads > Applications** as the nodes process the deployment, named with the prefix and node name pattern. Confirm that each one moves from **Downloading** to **Initializing** to **Online**.

If an instance does not reach **Online** status after a reasonable time, navigate to **Infrastructure > Monitor > Logs**, filter by the instance, and review the log output for errors.

## Next Steps

> [card] [Deploy an Application Instance](https://zededa.mintlify.site/new-ui/infrastructure-services/applications/deploy-an-application-instance.md)
>
> Deploy to a single node or a cluster.

> [card] [Manage an Application Instance](https://zededa.mintlify.site/new-ui/infrastructure-services/applications/manage-an-application-instance.md)
>
> Take lifecycle actions on the instances the job created.

> [card] [Automate Deployments With Application Profiles](https://zededa.mintlify.site/new-ui/infrastructure-services/applications/automate-deployments-with-application-profiles.md)
>
> Roll out applications across a fleet through the API or Terraform.

> [card] [Monitor Logs, Events, Reports, and Jobs](https://zededa.mintlify.site/new-ui/infrastructure-services/monitoring-logs-events-reports-jobs.md)
>
> Follow the deployment job and investigate errors.
