Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>EditSyncNew to Visual Studio Code? Get it now.
EditSync

EditSync

Drangon-Knight

|
6 installs
| (0) | Free
Safe, backup-first remote server sync. Never overwrites without backup.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

EditSync

Safe, backup-first remote server sync for VS Code and CLI.

The only remote sync tool that automatically backs up server files before every upload, detects conflicts in real-time, and uses a recoverable trash system instead of permanent deletion.


Why EditSync?

Other remote sync tools silently overwrite server files, delete without undo, and ignore conflicts. One wrong save can destroy hours of work on a production server.

EditSync was built on a single principle: the server file must never be lost.

Other sync tools EditSync
Upload overwrites server Silently, no backup Auto-backup before every upload
Someone else edited the file Overwrites their changes Conflict detection + diff comparison
Accidentally deleted a file Gone forever Trash system -- recoverable for 7 days
"Sync All" button Can nuke entire server No bulk overwrite -- file-by-file only
Upload interrupted Broken partial file on server Auto-retry 3 times with backoff
Connection drops mid-work Uploads lost silently Retry queue -- resend on reconnect
Server install required Yes (agent/daemon) Zero install -- pure SFTP/SSH
Offline work Impossible Full local copy -- work offline anytime
Connection methods SFTP only SFTP, Docker, K8s, AWS SSM
Team collaboration No protection File locking -- prevent simultaneous edits
Connection monitoring None 60s heartbeat -- auto-reconnect on drop

Feature Comparison: Free vs Pro vs Team

Feature Free Pro Team
Upload on save O O O
Remote file explorer O O O
Auto-reconnect + heartbeat O O O
File create/copy auto-upload O O O
Sync on open (auto-fetch latest) O O O
Parallel download (10 concurrent) O O O
Auto-retry (3 retries on failure) O O O
External file change detection O O O
Built-in ignore (node_modules, .git) O O O
Server connections 1 Unlimited Unlimited
Auto backup before upload -- O O
Backup on sync-on-open -- O O
Conflict detection + diff view -- O O
Trash recovery (7-day retention) -- O O
Server file deletion -- O O
File history viewer (timeline UI) -- O O
Server diff comparison -- O O
Change export (markdown/JSON/CSV) -- O O
SSH Config auto-import -- O O
Jump Host / Multi-hop SSH -- O O
Docker container access -- O O
Kubernetes Pod access -- O O
AWS SSM Session Manager -- O O
Multiple server profiles -- O O
Upload hooks (before/after) -- O O
tar fast initialize -- O O
CLI tool (editsync watch) -- O O
Team file locking -- -- O
Shared team config (server-based) -- -- O

Get Pro / Team

14-day free trial included. No credit card required.


Quick Start

1. Install

Search "EditSync" in VS Code Extensions, or:

ext install Drangon-Knight.editsync-vscode

2. Create Config

Ctrl+Shift+P / Cmd+Shift+P:

EditSync: Create Config File

If you have ~/.ssh/config, your saved hosts appear for one-click setup.

3. Edit Config

Password:

{
  "name": "my-server",
  "connection": {
    "type": "sftp",
    "host": "your-server-ip",
    "port": 22,
    "username": "root",
    "auth": {
      "method": "password",
      "password": "your-password"
    }
  },
  "remotePath": "/var/www/html",
  "uploadOnSave": true
}

Private key:

{
  "connection": {
    "type": "sftp",
    "host": "your-server-ip",
    "port": 22,
    "username": "root",
    "auth": {
      "method": "privateKey",
      "privateKeyPath": "~/.ssh/id_rsa"
    }
  },
  "remotePath": "/var/www/html",
  "uploadOnSave": true
}

4. Connect

Click the status bar at the bottom, or EditSync: Connect to Server.

5. Download Server Files

First connection prompts:

  • Download All -- download all files from server
  • Browse in Explorer -- download specific folders via right-click
  • Skip -- start with local files, sync on open handles the rest

On reconnect, if you have sync history, this dialog is skipped automatically.

6. Start Working

Save files normally. EditSync automatically:

  1. Backs up the server version (Pro)
  2. Checks for conflicts (Pro)
  3. Uploads your saved file to the server

Images, fonts, and binary files are auto-uploaded when copied into the project.


Configuration

Full .vscode/editsync.json

{
  "name": "my-server",
  "connection": {
    "type": "sftp",
    "host": "192.168.0.100",
    "port": 22,
    "username": "user",
    "auth": {
      "method": "privateKey",
      "privateKeyPath": "~/.ssh/id_rsa",
      "passphrase": ""
    },
    "jumpHost": {
      "host": "bastion.example.com",
      "port": 22,
      "username": "jump-user"
    },
    "sshConfigPath": "~/.ssh/config"
  },
  "remotePath": "/var/www/html",
  "uploadOnSave": true,
  "backup": { "enabled": true, "maxCount": 10, "path": ".vscode/editsync-backup" },
  "trash": { "enabled": true, "retentionDays": 7 },
  "conflict": { "action": "warn", "showDiff": true },
  "ignore": ["dist/**", "*.log"],
  "watcher": { "enabled": true, "delay": 300 },
  "initialize": { "method": "sftp" },
  "hooks": {
    "beforeUpload": "npm run lint",
    "afterUpload": "pm2 restart app"
  }
}

Built-in Ignore (always excluded, no config needed)

.vscode/**, .git/**, node_modules/**, .trash/**, .DS_Store, Thumbs.db

Initialize Method

Method Use case
sftp (default) Standard file-by-file download
tar Fast bulk download via tar archive (large projects, requires tar on server)

Upload Hooks

Hook Runs on Example
beforeUpload Local (before upload) "npm run lint"
afterUpload Server via SSH (after upload) "pm2 restart app"

Env vars: EDITSYNC_FILE (local path), EDITSYNC_REMOTE (remote path).

If beforeUpload fails (exit code != 0), upload is cancelled. If afterUpload fails, upload still succeeds (logged only).

Auth Methods

Method Use case
password Simple password
privateKey SSH key (.pem, .ppk, with optional passphrase)
agent SSH agent forwarding
interactive 2FA, OTP

Connection Types

SFTP (Standard)

{ "type": "sftp", "host": "192.168.0.100", "port": 22, "username": "root",
  "auth": { "method": "password", "password": "your-password" } }

SFTP + Jump Host

{ "type": "sftp", "host": "10.0.0.5", "port": 22, "username": "deploy",
  "auth": { "method": "privateKey", "privateKeyPath": "~/.ssh/id_rsa" },
  "jumpHost": { "host": "bastion.company.com", "port": 22, "username": "jump-user" } }

Docker Container

{ "type": "docker", "host": "my-container-name", "username": "root" }

Kubernetes Pod

{ "type": "k8s", "host": "my-pod-name", "username": "default" }

host = pod name, username = namespace

AWS SSM Session Manager

{ "type": "aws-ssm", "host": "i-0123456789abcdef0", "username": "ec2-user" }

No SSH keys needed. Requires AWS CLI + SSM plugin.


Commands

Command Tier Description
EditSync: Connect Free Connect to server
EditSync: Disconnect Free Disconnect
EditSync: Upload Current File Free Upload active file
EditSync: Download Current File Free Download from server
EditSync: Download Folder Free Right-click in Remote Explorer
EditSync: Initialize Free Download all server files
EditSync: Create Config Free Generate config (SSH config import)
EditSync: Refresh Explorer Free Refresh remote file tree
EditSync: Compare with Server Pro Diff local vs server
EditSync: Show File History Pro Timeline UI with restore
EditSync: Show File Backups Pro List backup versions
EditSync: Export Changes Pro Export changed files list
EditSync: Switch Server Profile Pro Switch between profiles
EditSync: Save Current as Profile Pro Save config as profile
EditSync: Activate Pro License -- Enter license key

How It Works

Save -> Upload

Save file -> [hooks] beforeUpload -> mtime check -> conflict?
  No  -> backup server file (Pro) -> upload -> [hooks] afterUpload
  Yes -> Show diff (Pro) / auto-overwrite (Free)
       -> Backup All / Skip All for batch handling

Open File -> Sync

Open file -> check server mtime (30s cooldown)
  Same    -> no action
  Changed -> backup local (Pro) -> download server version -> reload editor

Delete

Delete locally -> Pro: auto-move to server .trash/ (7-day recovery)
               -> Free: server file untouched

Initialize

Connect -> first time? "Download All / Browse / Skip"
  Download All -> clear state -> scan server -> skip unchanged files
              -> backup changed files (Pro) -> parallel download (10x)
  Reconnect (has history) -> skip dialog, ready to work

Status Bar

State Click action
Disconnected Connect
Connected Disconnect
Syncing ↓ 35% (7/20) src/index.js --
Conflict Disconnect
Error Connect

CLI

npm install -g editsync
editsync init              # Create config
editsync connect           # Test connection
editsync pull              # Download all (server -> local)
editsync pull src/app.js   # Download specific file
editsync push src/app.js   # Upload specific file
editsync watch             # Watch + auto-upload
editsync status            # Sync status
editsync diff src/app.js   # Compare local vs server (Pro)
editsync backups src/app.js # List backups (Pro)
editsync export today      # Export changes (Pro)
editsync activate SEP-XXXX # Activate license

Activating Pro

  1. Click "Get Pro" on any Pro feature prompt
  2. Complete purchase -- license key input box appears in VS Code
  3. Paste key -- Pro activates immediately, connection auto-refreshes

Or: Ctrl+Shift+P -> EditSync: Activate Pro License

Key prefix Plan
SEP- Pro
SET- Team

Pricing

Plan Monthly Yearly Features
Free $0 $0 Basic sync, 1 server, no safety net
Pro $2.90 $19 Backup, conflict, trash, unlimited servers, hooks, profiles
Team $4.90/user $39/user Pro + file locking + shared team config

14-day free trial. 14-day money-back guarantee.

Purchase


Team Features

File Locking

When a Team user uploads a file, it's automatically locked. Other team members see "Locked by {user}" and can't overwrite. Locks are released on disconnect.

Shared Config

Place .editsync-team.json on your server (in remotePath). Team members' ignore patterns and hooks are automatically merged on connect.

{
  "ignore": ["*.log", "tmp/**"],
  "hooks": { "afterUpload": "systemctl reload nginx" }
}

FAQ

Is my data sent to EditSync servers? No. Files travel directly between your machine and your server via SSH/SFTP. Only license validation calls go to Polar.sh. See PRIVACY.md.

What happens when the trial expires? Pro features lock. Basic sync continues on 1 server. Existing backups remain on disk.

Where are backups stored? Locally in .vscode/editsync-backup/. Not cloud-backed. Auto-cleaned: init backups keep last 3, per-file backups keep last 10, trash cleaned after 7 days.

Why Pro for production? Free uploads without backup. One accidental overwrite = permanent loss. Pro backs up every upload and warns on conflicts.

Can I run commands after upload? Yes. Use hooks.afterUpload -- runs on server via SSH.

Docker/Kubernetes? Yes. Set connection.type to "docker" or "k8s". No SSH needed.

Connection drops? 60-second heartbeat detects drops. Auto-reconnect attempts. Failed uploads queued and retried on reconnect.

Large project slow to initialize? Set "initialize": { "method": "tar" } for bulk download via tar archive. Requires tar on server.


Important

  • Backups are local only. Always maintain independent backups.
  • Free tier has no safety net. Use Pro for production.
  • Server is Source of Truth. Initialize downloads from server.
  • See LICENSE.txt for full terms.
  • See PRIVACY.md for privacy policy.

License

Proprietary. See LICENSE.txt.

Copyright (c) 2025-2026 DkLib. All rights reserved.

Contact: eorud0713@gmail.com

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft