Connecting VS Code to PACE ICE via Tunnels
Author: Rayan Castilla-Zouine
Team: eilab-gt / data-attribution
Last Updated: February 2026
Why This Matters
Instead of hand-editing code on OnDemand's browser-based VS Code, you can run your own local VS Code with AI agents (Codex, Copilot, etc.) and have every file edit and terminal command execute directly on PACE. This dramatically speeds up the workflow for the data-attribution pipeline.
How It Works
┌──────────────────────┐ Secure Tunnel ┌──────────────────────────┐
│ Your Laptop │ ◄──────────────────────────► │ PACE Compute Node │
│ (VS Code Desktop) │ │ (GPU, CPU, Storage) │
│ │ │ │
│ • You see the files │ │ • Files live HERE │
│ • You type code │ │ • Commands run HERE │
│ • Codex/Copilot │ │ • sbatch jobs run HERE │
│ runs HERE but │ │ │
│ acts THERE ──────►│ │ ~/data-attribution/ │
└──────────────────────┘ └──────────────────────────┘
Key points:
- Files only exist on PACE (in your scratch/home directory). Nothing is stored locally on your laptop.
- When you edit a file in VS Code, it edits the file on the cluster in real-time.
- Your local machine is just a window into the remote filesystem.
git add,git commit,git pushall run on PACE and push to GitHub from there.
Prerequisites
| Requirement | Details |
|---|---|
| GT VPN | Download GlobalProtect from vpn.gatech.edu |
| VS Code Desktop | Download from code.visualstudio.com |
| PACE Account | Your class must be registered with PACE |
| GitHub Account | For tunnel authentication |
One-Time Setup (on PACE)
1. Connect to VPN
Open GlobalProtect → vpn.gatech.edu → authenticate with GT credentials + 2FA.
2. SSH into PACE
ssh YOUR_GT_USERNAME@login-ice.pace.gatech.edu
3. Install the VS Code CLI (one-time)
curl -Lk 'https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64' -o ~/vscode_cli.tar.gz
tar -xzf ~/vscode_cli.tar.gz -C ~/
4. Get a Compute Node and Start the Tunnel
# Request an interactive node (adjust resources as needed)
salloc --gres=gpu:1 --cpus-per-task=4 --mem=32G --time=04:00:00
# Start the tunnel
~/code tunnel --accept-server-license-terms
First time only: You'll be given a URL + code to authorize via GitHub. Follow the prompts.
Give your tunnel a name (e.g., pace-ice).
Leave this terminal open.
Connecting from Your Laptop
1. Install the Extension
In VS Code Desktop: Extensions → search "Remote - Tunnels" (by Microsoft) → Install.
2. Connect
Cmd+Shift+P (Mac) or Ctrl+Shift+P (Windows) → Remote Tunnels: Connect to Tunnel…
Sign in with the same GitHub account → select your tunnel.
3. Open Your Project
Click Open Folder → ~/data-attribution
You're in! The terminal is now a shell on the PACE compute node.
Daily Workflow
Every time you want to work:
1. Connect VPN
2. ssh YOUR_GT_USERNAME@login-ice.pace.gatech.edu
3. salloc --gres=gpu:1 --cpus-per-task=4 --mem=32G --time=04:00:00
4. ~/code tunnel
5. In VS Code: Cmd+Shift+P → Remote Tunnels: Connect to Tunnel
Using Git
Since files live on PACE, git commands run in the VS Code terminal (which is on the cluster):
git add .
git commit -m "your message"
git push origin main
This pushes directly from PACE to GitHub. Your laptop never holds a copy of the code.
Troubleshooting
| Problem | Solution |
|---|---|
| Can't SSH in | Check VPN is connected |
code not found |
Re-run the install step (curl + tar) |
| Connection drops | Your salloc timed out — request a new node and restart ~/code tunnel |
| Extensions missing on remote | VS Code will prompt you to install them — click "Install in Tunnel" |
Fixing AI Agent Authentication (Codex, Copilot, etc.)
When connected via a tunnel, AI agent extensions (like Codex) run on the remote node. Their OAuth sign-in flow opens your local browser, but the callback redirects to localhost:<port> — which points to your laptop, not the remote node. This causes ERR_CONNECTION_REFUSED.
Fix 1: Forward the Auth Port (Recommended)
- In VS Code, click the PORTS tab (bottom panel, next to TERMINAL).
- Click Forward a Port (or the
+button). - Enter the port number from the error URL (e.g.,
1455). - Retry the sign-in. The browser callback now routes through the tunnel.
Fix 2: Use an API Key (No Browser Needed)
- In the Codex panel, click "Use API Key".
- Get your key from platform.openai.com/api-keys.
- Paste it. Done.
Fix 3: Run Codex CLI in the Terminal
npm install -g @openai/codex
codex
This runs entirely in the terminal on the remote node — no browser redirect needed.
FAQ
Q: Does editing a file change it on my laptop too?
A: No. Files only exist on PACE. Your laptop is just a viewer/editor.
Q: What about my scratch folder on PACE?
A: If your project is in ~/scratch/data-attribution, that's exactly what you're editing. Same files, same location.
Q: Can I use Codex / Copilot / other AI agents?
A: Yes! Install them in VS Code. They send edits through the tunnel and the changes happen on PACE.
Q: Do I still need OnDemand?
A: Not for coding. You might still use OnDemand for other PACE web tools, but your IDE workflow is now fully local.
Xet Storage Details
- Size:
- 6.36 kB
- Xet hash:
- 47e2657362a97eb9d4dbacb3862d21a2f1fc09da0f51378b443feaf173b47f38
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.