Introduction
AI developers using macOS or Windows can seamlessly connect to over 30 types of Salad GPU nodes via VS Code, enabling real-time testing and debugging in live environments — before moving to production. This gives them full access to GPU resources, environment variables, IMDS endpoints, and more. Developers can validate VRAM usage, network behavior, and external resource access; fine-tune application parameters such as local queue lengths, batch sizes, and thread counts; and catch rare, real-world edge cases that static testing often misses. There are several ways to enable VS Code remote development on SaladCloud. Tailscale can provide secure, direct network access between your developer laptop and Salad nodes, supporting both TCP and UDP-based applications. Using the Remote - SSH extension in VS Code Desktop, you can connect to a Salad node over its Tailscale IP, which launches a VS Code Server on the node. This allows you to easily open remote folders or clone GitHub repositories to begin development and testing directly on the node. This solution is simple to deploy, scales greatly, and is highly recommended. For more details on integrating Tailscale with workloads on SaladCloud, please refer to this guide.

Solution Comparison and Use Cases
Remote - SSH | Automatic Mode Remote - Tunnels | Interactive Mode Remote - Tunnels | |
---|---|---|---|
Container Image Modifications | Join the Salad node to the tailnet with a generated auth key. | Launch the VS Code Server with an existing tunnel (tunnel ID and access token). | Non-intrusive |
Supported Clients and Applications | Your developer laptop must be added to the tailnet, supporting all TCP and UDP-based applications. | VS Code Desktop and a browser from anywhere over the Internet. | VS Code Desktop and a browser from anywhere over the Internet. |
Cost-Effectiveness and Scalability | No additional cost. A free Tailscale personal account supports up to 100 devices, with no limits on speed or data transfer. | No additional cost. Each account (Github or Microsoft) supports up to 10 active tunnels for simultaneous access to 10 Salad nodes, with each tunnel offering speeds up to 20 MB/s and a total monthly data transfer limit of 5 GB per account. | No additional cost. Each account (Github or Microsoft) supports up to 10 active tunnels for simultaneous access to 10 Salad nodes, with each tunnel offering speeds up to 20 MB/s and a total monthly data transfer limit of 5 GB per account. |
User Experience (after node reallocation or container group restarts) | Retrieve the Tailscale IP of the selected instance, then connect to it. | Refresh clients to reconnect automatically. | Open the terminal of the selected instance in the SaladCloud Portal and run scripts manually. And then connect to it. |
Suggested Use Case | Need access to all Salad nodes of a workload for testing or debugging with VS Code. | Develop applications over Salad GPU nodes with VS Code for a while. This setup only supports single-replica container groups on SaladCloud. | Occasionally access any Salad node for testing or debugging with VS Code. |
Microsoft Dev Tunnels
Dev Tunnels enable secure, authenticated connections over the Internet, allowing developers to expose local services — such as applications running on Salad nodes — to remote clients, including browsers and custom applications. Both clients and servers can remain behind firewalls and NATs; they only need to initiate outbound connections to Azure, which handles secure relaying, identity and management services. Each server requires a dedicated tunnel, which can be accessed by multiple clients. While tunnels are primarily for TCP connections, UDP-based protocols are also supported by Dev Tunnels. Currently in public preview and free to use, Dev Tunnels require either a GitHub or Microsoft account for access. Each account supports up to 10 tunnels, with each tunnel offering speeds of up to 20 MB/s and a total monthly data transfer limit of 5.0 GB per account. Please check the link for more details. Below is an illustration of how applications leverage Dev Tunnels on SaladCloud:
Dev Tunnels CLI
VS Code Remote - Tunnels
VS Code Remote - Tunnels is built on Microsoft Dev Tunnels to simplify remote development. It allows developers to connect to remote VS Code Servers (such as those running on SaladCloud) using the Remote - Tunnels extension in VS Code Desktop or a browser, without requiring direct network access between the local and remote environments. To enable access, the remote environment must launch the VS Code Server in tunnel mode — either by creating a new tunnel or using an existing one to expose it. This can be done by running the VS Code Server CLI (ideal for headless environments like Salad nodes) or by enabling the Remote Tunnel Access from an existing VS Code Desktop installation. Once the tunnel is active, developers can connect to the remote VS Code Server through it. Similar to Dev Tunnels, this solution requires a GitHub or Microsoft account, and all Dev Tunnels specifications and limitations still apply. For instance, each Salad node must have its own dedicated tunnel, but multiple clients — using either VS Code Desktop or a browser — can connect to the same node through that tunnel. There are two ways to use this solution on SaladCloud:- Automatic Mode – This mode supports only single-replica container group deployments on SaladCloud, and the container image must be modified to launch the VS Code Server using an existing tunnel. You can manually create a tunnel and generate an access token using the Dev Tunnels CLI, which requires interactive browser-based authentication and must be done outside of SaladCloud. Both the tunnel ID and access token can then be passed as environment variables to a single-replica container group on SaladCloud. Once the container starts — or after a node reallocation — the VS Code Server automatically starts and connects using the provided tunnel and token, without requiring any manual intervention at runtime.
- Interactive Mode – Non-intrusive, requiring no changes to the container image. You can access any running Salad node through the terminal in the SaladCloud Portal, then manually install and launch the VS Code Server in tunnel mode. This process requires interactive browser-based authentication, which can be completed on your developer laptop.
Automatic Mode
Prepare Your Container Image
Here is an example application that demonstrates how to enable the automatic mode for container images running on SaladCloud. The Dockerfile creates a containerized environment by using a base image, then installing essential utilities and required dependencies including the VS Code Server CLI. It also copies the required Python code and startup script into the image.Dockerfile
start.sh
--name
parameter assigns a user-friendly name for the tunnel (uniquely associated with the Salad node), which is
used when connecting from a browser:
SALAD_MACHINE_ID
is a unique identifier for each Salad node and is easily viewable in the SaladCloud Portal.
SALAD_CONTAINER_GROUP_ID
is available through the SaladCloud APIs or SDKs, and can also be retrieved by running
env inside the terminal of a container instance or checking the container logs in the SaladCloud Portal. Currently,
all instances (or replicas) within a container group share the same hostname, which is set to the value of
SALAD_CONTAINER_GROUP_ID
.
You can use either SALAD_MACHINE_ID
or SALAD_CONTAINER_GROUP_ID
as the value for the --name
parameter.
- With
SALAD_MACHINE_ID
, you can easily connect to a specific node from clients, as the ID is readily accessible from the SaladCloud Portal. - Using
SALAD_CONTAINER_GROUP_ID
(as demonstrated in this example) helps avoid client-side reconfiguration — such as refreshing clients to reconnect automatically — after node reallocation or container group restarts, since the value remains consistent across instances launched at different time within the same container group.
Create a Tunnel and Generate Access Tokens
Let’s create a tunnel with an access token using the Dev Tunnels CLI:Dev Tunnels CLI
Deploy the Container Group
Now your can create a container group with the following parameters using the SaladCloud Portal. For deployment using SaladCloud APIs/SDKs, please refer to this link.
Connect to the Salad Node
Once the instance is running, you can retrieve theSALAD_CONTAINER_GROUP_ID
and connect to it using both VS Code
Desktop and a browser.


Perform a Check
Let’s check the tunnel using the Dev Tunnels CLI:Dev Tunnels CLI
Workflow Summary
The automatic mode may fit scenarios where you’re developing applications across various Salad GPU nodes over an extended period. The following summarizes the workflow:Step | Action | Performed On |
---|---|---|
0 | Modify the image to support the automatic mode, and create a 30-day tunnel using the Dev Tunnels API. | Developer Laptop |
1 | Generate an access token each day using the Dev Tunnels API. | Developer Laptop |
2 | Run the single-replica container group with the tunnel ID and the updated token. When a node goes offline unexpectedly, SaladCloud automatically allocates a new one. Stop the container group when it’s not in use. | SaladCloud |
3 | Connect using VS Code Desktop or a browser. Commit code changes regularly to the repositories. After node reallocation or container group restart, refresh clients to reconnect automatically. | Developer Laptop |
Interactive Mode
Launch the VS Code Server Interactively
To test or debug code in any running instance, open its terminal in the SaladCloud Portal. From there, you can manually install the VS Code Server CLI — or optionally include it in your container image during the build process — and start the VS Code Server in tunnel mode interactively.
VS Code Server CLI
Perform a Check
The VS Code Server CLI interacts with the Dev Tunnels service under the hood for authentication and tunnel provisioning. You can check the tunnels created by the VS Code Server CLI using the Dev Tunnels CLI:Dev Tunnels CLI
Workflow Summary
If you only need occasional access to any Salad node for testing or debugging, this mode is ideal. The following summarizes the workflow:Step | Action | Performed On |
---|---|---|
1 | Open the terminal of a running instance in the SaladCloud Portal, and install the VS Code Server CLI. | SaladCloud |
2 | Run the VS Code Server CLI to log in to the Dev Tunnels service to receive the URL and an authentication code. CLI Example: code tunnel user login –provider github | SaladCloud |
3 | Open a browser, log in using the URL, enter the code and authorize access. | Developer Laptop |
4 | Run the VS Code Server CLI to launch a VS Code Server in tunnel model, and you can safely close the terminal after this step. CLI Example: nohup code tunnel —accept-server-license-terms —name 001 &> output.log & tail -f output.txt | SaladCloud |
5 | Connect using VS Code Desktop or a browser. | Developer Laptop |