Build a Remote AI/Data Science Workstation
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 | shStart Tailscale and log in:
sudo tailscale upThen, on your workstation only, find its new private Tailscale IP address (it will start with 100.x.x.x):
tailscale ip -4Write 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 sshInstall 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 | shOnce 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 llama3Phase 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.xTest it by connecting:
ssh user@100.x.x.xYou 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.
- Open Positron on your laptop.
- Open the Command Palette (
Ctrl + Shift + P). - Type
Remote Menuand select Remote SSH: Show Remote Menu. - Select Connect to Host.
- Enter your connection string —
user@100.x.x.x— and press Enter. - 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 llama3You 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 ollamaThen 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!