📋 Complete the common setup first: See IDE Setup Guide for prerequisites, SSH configuration, and VM setup before proceeding.
This guide covers VS Code-specific setup using the Remote-SSH extension.
- Install Remote-SSH Extension
- Connect to Remote VM
- Install Remote Extensions
- VS Code Optimization
- VS Code Troubleshooting
- Advanced Configuration
-
Open VS Code Extensions
- Click Extensions icon (⇧⌘X on Mac, Ctrl+Shift+X on Windows/Linux)
- Search for "Remote - SSH"
- Install the official "Remote - SSH" extension by Microsoft
-
Verify Installation
- You should see a remote indicator (
><) in the bottom-left corner
- You should see a remote indicator (
📋 Prerequisites: Complete the IDE Setup Guide first to configure SSH and run the VM configuration script.
- Press
Cmd+Shift+P(Mac) orCtrl+Shift+P(Windows/Linux) - Type "Remote-SSH: Connect to Host"
- Select your configured host (
sindri-dev)
- Click Remote Explorer icon in sidebar
- Find your host under "SSH TARGETS"
- Click the folder icon next to your host
- Click remote indicator (
><) in bottom-left - Select "Connect to Host..."
- Choose your configured host
-
VS Code Server Installation
- VS Code installs the server on remote VM (1-2 minutes)
- Progress shown in bottom-right corner
- New VS Code window opens when complete
-
Open Workspace
- Click "Open Folder" or File → Open Folder
- Navigate to
/workspace/projects/active - Select your project directory
Core Development:
ms-vscode.vscode-typescript-next- TypeScript supportms-python.python- Python developmentesbenp.prettier-vscode- Code formattingms-vscode.vscode-eslint- JavaScript lintingms-vscode.vscode-json- JSON support
Additional:
ms-vscode.vscode-docker- Docker supportgithub.copilot- AI coding assistantms-vscode.live-share- Collaborative editing
- Extensions Panel: Open Extensions (⇧⌘X) → Search → "Install in SSH: sindri-dev"
- Command Line:
code --install-extension extension-name - Settings Sync: Enable to automatically sync extensions
Note: Extensions install on the remote VM, not locally.
Add to VS Code's settings.json:
{
"remote.SSH.connectTimeout": 60,
"remote.SSH.keepAlive": 30,
"remote.SSH.maxReconnectionAttempts": 3,
"remote.autoForwardPorts": false,
"files.watcherExclude": {
"**/node_modules/**": true,
"**/.git/objects/**": true,
"**/dist/**": true,
"**/build/**": true,
"**/__pycache__/**": true
}
}- Use Remote Terminal: All commands run on remote VM
- Disable Auto Port Forwarding: Forward only needed ports
- Work in
/workspace: Use persistent volume for all files - Exclude Large Directories: Reduces CPU and improves responsiveness
📋 General Issues: See IDE Setup Guide and Troubleshooting Guide for SSH and VM issues.
Symptoms: Server installation hangs or fails
Solutions:
- Wait for VM to fully start (30-60 seconds)
- Clear remote server:
Cmd+Shift+P→ "Remote-SSH: Kill VS Code Server on Host" - Reconnect
Symptoms: Extensions show errors or don't activate
Solutions:
- Ensure extensions installed on remote, not locally
- Reload window:
Cmd+Shift+P→ "Developer: Reload Window" - Check extension compatibility with remote development
Solutions:
- Check VM resources:
htopon remote VM - Exclude large directories from file watcher
- Close unused tabs and panels
- Upgrade VM size if needed
Solutions:
- Use VS Code's integrated terminal for dev commands
- Check development server running on remote VM
- Verify port forwarding configuration
VS Code Remote Logs:
Cmd+Shift+P→ "Remote-SSH: Show Log"
Test Connection:
ssh -v sindri-dev 'echo "Connection works"'-
Use Integrated Terminal
# All commands run on remote VM cd /workspace/projects/active/my-project npm run dev
-
Port Forwarding
- VS Code auto-prompts to forward dev server ports
- Click "Forward Port" to access from local browser
- Manually forward: Ports panel in bottom bar
-
File Management
- Work directly in
/workspace(persistent) - Use File Explorer for navigation
- Auto-save recommended:
"files.autoSave": "afterDelay"
- Work directly in
{
"files.autoSave": "afterDelay",
"files.autoSaveDelay": 5000,
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"terminal.integrated.persistentSessionReviveProcess": "onExit"
}- Multiple Windows: File → New Window → Connect to same host
- Workspace Files: Save multi-root workspaces for related projects
- Project Switching: File → Open Recent
Create .vscode/settings.json in your project:
{
"python.defaultInterpreterPath": "/usr/bin/python3",
"eslint.workingDirectories": ["src"],
"prettier.configPath": ".prettierrc",
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true,
"source.organizeImports": true
}
}Create .vscode/launch.json for debugging:
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Node.js",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/src/index.js"
},
{
"name": "Python Debugger",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/main.py",
"console": "integratedTerminal"
}
]
}Create .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "npm: dev",
"type": "shell",
"command": "npm run dev",
"group": "build",
"isBackground": true
},
{
"label": "backup workspace",
"type": "shell",
"command": "/workspace/scripts/backup.sh",
"group": "build"
}
]
}VS Code is now connected to your remote Claude development environment with:
- ✅ Full IDE functionality with debugging and extensions
- ✅ Remote development on persistent Fly.io infrastructure
- ✅ Integrated access to Claude Code and Claude Flow
- ✅ Optimized performance and connection settings
- IDE Setup Guide - Common setup and utilities
- IntelliJ Setup - JetBrains IDE alternative
- Troubleshooting Guide - Problem resolution