Build a Remote AI/Data Science Workstation

Author

Bas Machielsen

Published

April 22, 2026

Introduction

If you’ve ever wanted the comfort of working on your laptop while harnessing the raw power of a more powerful workstation, this guide is for you. By combining Positron + Remote SSH + Tailscale, you can ditch the heavy video-streaming overhead of a full remote desktop entirely. Your laptop’s UI stays perfectly smooth and native, while your workstation’s CPU, RAM, and GPU do 100% of the heavy lifting in the background.

Because Positron is built on the same foundation as VS Code, it has full support for Remote SSH. Here’s how to build this exact AI/Data Science stack from scratch on two Ubuntu machines.

Phase 1: The Network Layer (Tailscale)

Tailscale creates a secure, private tunnel between your laptop and workstation so you don’t have to open any ports on your router.

Run the following on BOTH your workstation and your laptop:

Install Tailscale:

curl -fsSL https://tailscale.com/install.sh | sh

Start Tailscale and log in:

sudo tailscale up

Then, on your workstation only, find its new private Tailscale IP address (it will start with 100.x.x.x):

tailscale ip -4

Write this IP address down — you’ll need it throughout the rest of this guide.

Phase 2: The Host Layer (Workstation Setup)

Your workstation needs to accept SSH connections and be ready to run AI models.

Enable SSH

Install and enable the OpenSSH server:

sudo apt update
sudo apt install openssh-server
sudo systemctl enable --now ssh

Install Ollama (with GPU Support)

Ollama is the easiest way to run local LLMs. Its official Linux installer automatically detects your NVIDIA or AMD GPU and configures the necessary drivers.

curl -fsSL https://ollama.com/install.sh | sh

Once installed, pull a model to test it. Here we’ll use Meta’s Llama 3, but mistral, gemma, and others work just as well:

ollama pull llama3

Phase 3: The Client Layer (Laptop Setup)

To prevent Positron from constantly asking for your workstation password, set up passwordless SSH key authentication.

Create SSH Keys

On your laptop, generate a new key pair:

ssh-keygen -t ed25519 -C "laptop-to-workstation"

Press Enter to accept the defaults. You can skip the passphrase for convenience.

Copy the Key to Your Workstation

Send the public key over the Tailscale network. Replace user with your workstation’s Ubuntu username and 100.x.x.x with the Tailscale IP you noted earlier:

ssh-copy-id user@100.x.x.x

Test it by connecting:

ssh user@100.x.x.x

You should drop directly into the workstation terminal with no password prompt. Type exit to return to your laptop when you’re done.

Phase 4: Connecting Positron

Now it’s time to link your local IDE to the remote engine.

  1. Open Positron on your laptop.
  2. Open the Command Palette (Ctrl + Shift + P).
  3. Type Remote Menu and select Remote SSH: Show Remote Menu.
  4. Select Connect to Host.
  5. Enter your connection string — user@100.x.x.x — and press Enter.
  6. Positron will open a new window. The bottom-left corner will show a green indicator confirming the remote connection.

The first time you connect, Positron will take a moment to download a small backend server to the workstation. This only happens once.

Once connected, clicking Open Folder in the file explorer will browse the workstation’s hard drive — not your laptop’s. You’re in.

Phase 5: Using Your GPU for AI Coding

Everything you do inside this Positron window executes on the workstation. Here’s how to put that to use.

Running Ollama in the Terminal

Open a new terminal inside Positron (Ctrl + ~) and you’re securely shelled into the workstation. Run:

ollama run llama3

You can now chat with the LLM directly inside your IDE terminal. The workstation’s GPU handles token generation, making responses fast.

Using Ollama in Python

Because Positron executes code on the workstation, your Python scripts can hit Ollama’s local API at localhost with zero extra networking config.

Install the Ollama Python package:

pip install ollama

Then create a Python file in Positron and try this:

import ollama

response = ollama.chat(model='llama3', messages=[
  {
    'role': 'user',
    'content': 'Write a python script to process a pandas dataframe.',
  },
])

print(response['message']['content'])

When you run this script, the Positron UI is rendered locally on your laptop — but the script itself executes on the workstation, using the GPU to run Llama 3. Only the text output travels back to your screen.

Why This Stack Works So Well

Component Role
Tailscale Secure, zero-config private network between machines
OpenSSH Encrypted tunnel for all IDE communication
Ollama GPU-accelerated local LLM inference
Positron Native IDE experience with transparent remote execution

The result is a setup that feels completely local while actually running on hardware that’s far more capable than your laptop. No lag, no remote desktop stutter, no cloud bills, just your models running fast on your own machine. Thanks for reading!