Virgo Auto-FTP
The Ultimate FTP/SFTP Extension for Visual Studio Code
Virgo FTP is a powerful, feature-rich Visual Studio Code extension that provides automatic FTP/SFTP file synchronization directly from your editor. With real-time file watching, configurable connection profiles, and secure authentication, Virgo FTP automatically uploads files to your server on save or creation, streamlining your deployment workflow with zero friction.
Features
- Auto Upload on Save: Files are automatically uploaded when saved
- Auto Upload on Create: New files are uploaded automatically
- Auto Delete on Remote: Optionally delete remote files when local files are deleted (disabled by default)
- FTP/FTPS/SFTP Support: Works with FTP, FTPS (secure FTP), and SFTP protocols
- Secure Credential Storage: Passwords are stored securely using VS Code's SecretStorage API
- Private Key Authentication: Support for SSH key-based authentication (SFTP)
- Subfolder Config Support: Each subfolder can have its own
.virgo-ftp.json config file
- Ignore Patterns: Exclude files using glob patterns
- Connection Pooling: Reusable connections prevent "too many connections" errors
- Concurrent Uploads: Multiple files can be uploaded simultaneously (configurable max connections)
- Auto-Reconnect: Broken connections are automatically replaced
- Retry Mechanism: Automatic retry on failed uploads
Installation
- Download the
.vsix file from releases
- In VS Code, press
Ctrl+Shift+P and run "Extensions: Install from VSIX..."
- Select the downloaded file
Configuration
Create a .virgo-ftp.json file in your project root (or any subfolder):
{
"host": "ftp.example.com",
"port": 21,
"user": "username",
"protocol": "ftp",
"remotePath": "/public_html",
"uploadOnSave": true
}
Configuration Options
| Option |
Type |
Default |
Description |
host |
string |
required |
FTP/SFTP server address |
port |
number |
21 (FTP) / 22 (SFTP) |
Server port |
user |
string |
required |
Username |
password |
string |
- |
Password (not recommended, use SecretStorage instead) |
protocol |
string |
required |
"ftp" or "sftp" |
secure |
boolean/string |
false |
true for FTPS, "implicit" for implicit FTPS |
remotePath |
string |
/ |
Remote directory path |
uploadOnSave |
boolean |
true |
Enable auto-upload on save |
localRoot |
string |
- |
Local folder to watch (relative to config file) |
ignore |
string[] |
- |
Glob patterns to ignore |
retries |
number |
3 |
Retry count on failure |
timeout |
number |
10000 |
Connection timeout in ms (1000-60000) |
privateKeyPath |
string |
- |
Path to SSH private key (SFTP only) |
acceptUnauthorized |
boolean |
false |
Accept self-signed certificates |
deleteOnRemote |
boolean |
false |
Delete remote files when local files are deleted |
Subfolder Configuration
You can place a .virgo-ftp.json file in any subfolder to use different FTP settings for that folder and its contents. The extension searches upward from the file being saved to find the nearest config file.
Example project structure:
my-project/
├── .virgo-ftp.json # Main config (uploads to production)
├── src/
│ └── app.js
├── staging/
│ ├── .virgo-ftp.json # Staging config (uploads to staging server)
│ └── test.js
└── docs/
├── .virgo-ftp.json # Docs config (uploads to docs server)
└── index.html
In this example:
src/app.js uses the root config (production server)
staging/test.js uses staging/.virgo-ftp.json (staging server)
docs/index.html uses docs/.virgo-ftp.json (docs server)
Example Configurations
Basic FTP:
{
"host": "ftp.example.com",
"user": "ftpuser",
"protocol": "ftp",
"remotePath": "/public_html"
}
SFTP with Private Key:
{
"host": "server.example.com",
"port": 22,
"user": "deploy",
"protocol": "sftp",
"privateKeyPath": "~/.ssh/id_ed25519",
"remotePath": "/var/www/app"
}
FTPS (Explicit):
{
"host": "ftp.example.com",
"user": "ftpuser",
"protocol": "ftp",
"secure": true,
"remotePath": "/public_html"
}
With Ignore Patterns:
{
"host": "ftp.example.com",
"user": "ftpuser",
"protocol": "ftp",
"remotePath": "/public_html",
"ignore": [
"node_modules/**",
".git/**",
"*.log",
".env"
]
}
With Auto-Delete on Remote:
{
"host": "ftp.example.com",
"user": "ftpuser",
"protocol": "ftp",
"remotePath": "/public_html",
"deleteOnRemote": true
}
Warning: When deleteOnRemote is enabled, deleting a local file will also delete the corresponding file on the remote server. This action is irreversible. Use with caution!
VS Code Settings
Configure extension behavior in VS Code settings (Ctrl+,):
| Setting |
Type |
Default |
Description |
virgoAutoFtp.enable |
boolean |
true |
Enable/disable auto-upload globally |
virgoAutoFtp.maxConnections |
number |
10 |
Maximum concurrent FTP/SFTP connections (1-20). Connections are pooled and reused. |
Commands
- Virgo Auto-FTP: Upload Current File - Upload the active file
- Virgo Auto-FTP: Toggle Auto-Upload - Enable/disable auto-upload
- Upload with Virgo Auto-FTP - Right-click context menu for files
- Upload Folder with Virgo Auto-FTP - Right-click context menu for folders
Status Bar
The status bar shows the current state:
$(zap) Virgo Auto-FTP - Auto-upload enabled
$(circle-slash) Virgo Auto-FTP - Auto-upload disabled
$(sync~spin) Uploading (n) - Upload in progress
$(check) filename - Upload successful (shown for 3 seconds)
$(error) filename - Upload failed
Security
- Passwords are never stored in config files
- Passwords are saved using VS Code's SecretStorage (OS keychain)
- Private key file permissions are validated on Linux/Mac
- Remote path traversal (
..) is blocked for security
About Virgo Internet Services
Virgo Auto-FTP is developed and maintained by Mustafa Odabaşı, Software Developer at Virgo Internet Services Ltd. — delivering high-quality web solutions since 1997.
📧 Contact: modabasi@virgo.com.tr
Support
If you find this extension useful, consider supporting its development:

Check out other Virgo extensions:
Visual Studio Code Marketplace
- Virgo Minifier - Automatic file minification for CSS, JS, HTML, JSON, XML, and SVG
- Virgo SSH - SSH terminal client for VS Code
Open VSX Registry (Cursor, Windsurf, etc.)
- Virgo Minifier - Automatic file minification for CSS, JS, HTML, JSON, XML, and SVG
- Virgo SSH - SSH terminal client for VS Code
Enjoy using Virgo Auto-FTP! If you find it helpful, please consider leaving a review on your marketplace of choice.