FileVerse: FTP/SFTP Sync for VS Code
Download your site, edit it locally (by hand or with AI), and upload only what changed.
FileVerse connects VS Code to your FTP, FTPS, or SFTP server and mirrors your site into a real
local folder. You work on ordinary local files, with search, Git, formatters, and AI coding
tools like Claude Code, Copilot, or Cursor, and FileVerse keeps track of every file that changed
so you can push it back to the server with one click.
Nothing is uploaded until you say so.
Why FileVerse?
Most FTP extensions open remote files one at a time or upload the moment you save. That breaks
down as soon as a tool edits files for you: AI assistants write to disk directly, make changes
across many files at once, and can't see files that live only on a server.
FileVerse takes a different approach:
- Your whole site is local. Every file is on disk, so AI tools and workspace search can read
and edit all of it, not just the tab you have open.
- Every change is tracked, no matter who made it. Edits from the editor, an AI agent, a
script, or another app are detected automatically.
- You decide when to go live. Changed files are marked ready to upload; review them, then
upload one file or everything at once.
- Your work is never overwritten. Re-downloading from the server skips files you've changed
but not uploaded yet.
Features
Connections
- FTP, FTPS (explicit TLS) and SFTP in one extension.
- Password or SSH private key authentication, with optional key passphrase.
- Multiple connection profiles, managed from a dedicated sidebar.
- Import from FileZilla (
sitemanager.xml export) or a JSON/XML file, so you don't have to
retype hosts and passwords.
- Duplicate, edit, and test connections from the right-click menu.
- SSH host key verification: you're asked to trust a server's fingerprint on first connect
and warned if it ever changes.
Local-first editing
- One-click download of the whole remote root (e.g.
/public_html/wp-content/themes/) into
a local folder of your choice.
- Open just the site folder in VS Code so the Explorer, search, and AI tools see only your
server's files.
- Automatic reconnect when you reopen a site folder.
Change tracking & upload
- Detects changes made anywhere, including files edited or created by AI agents outside the
editor.
- Green ↑ badge on every changed file in the Explorer, plus a "N pending" counter in the
status bar and on the connection.
- Smart detection: a file saved without real changes, or edited back to the original,
isn't flagged.
- Upload a single file from the editor title bar, the editor context menu, or the Explorer.
- Upload all pending changes in one go, or pick a file from the list to review first.
- New local files and folders are created on the server when uploaded.
- Optional upload on save for those who prefer the classic workflow.
Safe re-sync
- Download All from Server refreshes your local copy with the latest server files.
- Files with changes you haven't uploaded are kept, never overwritten.
- Files that were flagged but match the server exactly are automatically un-flagged.
Secure by default
- Passwords and passphrases are stored in VS Code Secret Storage, backed by your operating
system's credential manager (Windows Credential Manager, macOS Keychain, libsecret on Linux).
- Hosts, usernames, and paths are stored in settings; credentials never are.
- FTPS certificates are verified; connecting to a server with a self-signed certificate
requires your explicit approval.
- Plain FTP sends your password unencrypted, as the protocol requires. Prefer SFTP or FTPS
whenever your host supports it.
Quick start
Install FileVerse and click the FTP/SFTP icon in the Activity Bar.

Click + Add Connection and fill in:
- Protocol, Host, Port, Username
- Password or Private Key
- Remote Root Path: the folder on the server you want to work on, e.g.
/public_html
- Local Folder: where to keep your local copy (optional; you'll be asked on first
connect otherwise)
Or click Import from file… to load a FileZilla or JSON/XML export.

Click the plug icon to connect. FileVerse downloads the remote root into a folder named
after it (for example D:\Sites\my-site\themes) and offers to open it.
Edit freely, yourself, or by asking your AI assistant to make changes.
Upload: click the upload icon in the editor title bar for the current file, or the
upload icon on the connection (or the N pending status bar item) to upload everything.
Where do my files go?
The Remote Root Path is downloaded into a subfolder of your Local Folder, named after the last
part of the remote path:
| Remote Root Path |
Local Folder |
Files are downloaded to |
/public_html/wp-content/themes/ |
D:\Sites\client-a |
D:\Sites\client-a\themes |
/public_html |
D:\Sites\client-b |
D:\Sites\client-b\public_html |
/ |
D:\Sites\client-c |
D:\Sites\client-c\<connection name> |
The connection form shows the exact path before you save. Each local file maps to the same
relative path on the server, so …\themes\my-theme\404.php uploads to
/public_html/wp-content/themes/my-theme/404.php.
Working with AI coding assistants
FileVerse was built for AI-assisted editing of live sites:
- Connect and open the downloaded folder.
- Ask your assistant to make changes, across as many files as it needs.
- Every file it touches turns green in the Explorer.
- Review the changes, then click Upload all.
Because the files are real local files, the assistant never has to guess at server paths or
make its own copies. It edits the exact files FileVerse will upload.
Commands
Connection (right-click a connection in the FTP/SFTP sidebar)
| Command |
What it does |
| Connect and Download |
Connects, and downloads into the local folder (asks for one the first time) |
| Disconnect |
Closes the connection |
| Upload Pending Changes |
Lists changed files for this connection; upload all or open one |
| Open Local Folder |
Opens the downloaded folder in VS Code |
| Download All from Server |
Refreshes local files from the server (keeps your unuploaded changes) |
| Change Local Folder |
Picks a different local folder and downloads into it |
| Edit / Duplicate / Test / Delete Connection |
Manage the profile |
Files
| Command |
Where |
| Upload to Server |
Editor title bar (cloud icon), editor right-click, Explorer right-click, Command Palette |
| Upload Pending Changes |
Status bar N pending item, Command Palette |
Settings
| Setting |
Description |
Default |
ftpSftp.uploadOnSave |
Upload a file immediately when you save it in the editor. When off, saved files are marked ready to upload instead. |
false |
ftpSftp.ignorePatterns |
Names skipped when downloading and when tracking changes. Supports * wildcards. |
[".git", "node_modules", ".DS_Store"] |
ftpSftp.connectionTimeoutMs |
Connection timeout in milliseconds. |
15000 |
ftpSftp.keepAliveIntervalMs |
SFTP keep-alive interval in milliseconds. |
30000 |
Per connection, Re-download files from the server on every connect (in the connection form)
controls whether later connects refresh the local folder. The first connect always downloads.
FAQ
Does editing a file change the server immediately?
No. Changes stay local until you upload them. Turn on ftpSftp.uploadOnSave if you want
save-to-upload.
Will re-downloading overwrite my edits?
No. Files with changes you haven't uploaded are skipped. If a flagged file turns out to be
identical to the server copy, its flag is simply cleared.
Why did VS Code reload when I opened the site folder?
Opening a folder always reloads the window. FileVerse reconnects automatically afterwards, and
your pending changes are kept.
If I delete or rename a local file, is it deleted on the server?
No. FileVerse only uploads. Remove or rename server files with your hosting panel or another FTP
client for now.
Can I use one local folder for several connections?
Yes. Each connection downloads into its own subfolder, named after its remote root. Give two
connections with the same remote folder name different local folders.
Where are my passwords stored?
In VS Code Secret Storage, which uses your operating system's credential manager. They are never
written to settings.json.
My host uses FTPS / a non-standard port.
Choose FTPS (explicit TLS) and set the port in the connection form. SFTP defaults to port 22,
FTP and FTPS to 21.
Known limitations
- Desktop VS Code only (not vscode.dev or github.dev).
- Upload only: local deletes and renames are not mirrored to the server.
- Last write wins: there is no merge view if the server file changed since you downloaded it.
Use Download All from Server before starting work to get the latest copies.
- FTPS supports explicit TLS only (not implicit FTPS on port 990).
Feedback & support
Found a bug or have an idea? Open an issue.
Connection errors are logged in View > Output > FTP/SFTP; please include them when
reporting a connection problem.
License
MIT