BSoft Laravel SyncDeploy Laravel projects directly from VS Code or Cursor using Git-aware file detection, SSH and rsync. The extension is designed for developers deploying Laravel applications to Linux servers. It uses your existing OpenSSH configuration and never stores SSH passwords, private keys, Features
RequirementsmacOS
macOS normally includes OpenSSH and rsync. Confirm they are available:
Linux
Example install (Debian/Ubuntu):
Windows 11Requirements:
Example:
Then inside WSL:
Test:
BSoft Laravel Sync automatically uses WSL rsync on Windows. SSH authentication still uses the Windows OpenSSH client and your Windows SSH keys / ssh-agent. You do not need to copy private keys into WSL. SSH SetupCreate a host alias in macOS / Linux example
Confirm outside the editor:
Windows example
Confirm:
Project ConfigurationYou do not need to create
The wizard asks for deployment name, environment, SSH Host, Remote Path, automation toggles, and optional Excluded Files. Nothing is written until you choose Save Configuration. That creates or updates Example
|
| Property | Description |
|---|---|
name |
Friendly deployment label shown in Preview and history |
environment |
Informal label such as production, staging, or development |
sshHost |
SSH Host alias from OpenSSH config |
remotePath |
Absolute Remote Path to the Laravel app on the server |
autoClearCache |
Run php artisan optimize:clear after relevant Deploys |
autoComposerInstall |
Run production composer install when Composer files change |
autoBuildAssets |
Run frontend build when frontend/Vite files change |
restartQueueAfterDeploy |
Run php artisan queue:restart after PHP/config Deploys (default off) |
confirmDeletes |
Require confirmation before remote deletions |
exclude |
Additional Excluded Files globs (cannot override Protected Files) |
Project-file values override matching VS Code settings. Forbidden keys (password, APP_KEY, private key fields, and similar) are ignored.
Do not put secrets in this file. Production .env stays on the Remote Server.
Commands
| Command | What it does |
|---|---|
| BSoft Laravel Sync: Configure Project | Guided wizard to create/update .bsoft-laravel-sync.json |
| BSoft Laravel Sync: Test Connection | SSH handshake plus remote path, artisan, and PHP checks |
| BSoft Laravel Sync: Preview Changes | Shows deployable Git changes, Protected/Excluded Files, and post-deploy actions |
| BSoft Laravel Sync: Deploy Changed Files | Uploads working-tree Changed Files |
| BSoft Laravel Sync: Deploy Last Commit | Uploads the files from HEAD |
| BSoft Laravel Sync: Full Deploy | Synchronizes project source; preserves remote-only production data |
| BSoft Laravel Sync: Show Deployment History | Shows recent deployment history |
| BSoft Laravel Sync: Show Actions | Compact action picker (also opened from the status bar) |
| BSoft Laravel Sync: Open Output | Opens the BSoft Laravel Sync output channel |
| BSoft Laravel Sync: Open Settings | Opens extension settings |
Deployment Flow
- Detect Laravel project
- Read configuration
- Detect Git changes
- Apply Protected Files and Excluded Files rules
- Preview
- Verify SSH
- Transfer with rsync
- Run configured Laravel post-deployment actions
Safety
.envis protected and never uploaded- private keys and certificate material (
*.pem,*.key,*.p12,*.pfx) are protected .bsoft-laravel-sync.jsonis local only and never uploaded.git/,.github/,node_modules/, andvendor/are protected- remote deletions require confirmation when configured
- production migration commands never run silently
- Full Deploy never uses rsync
--delete - Output Channel logs redact values that look like secrets
Windows / WSL Notes
Windows path conversion is handled internally by the extension.
C:\Projects\my-laravel-app
becomes:
/mnt/c/Projects/my-laravel-app
SSH continues to use Windows OpenSSH and your Windows ssh-agent. WSL is used only for rsync.
Troubleshooting
SSH connection fails
Confirm ssh example-vps works in a terminal without a password prompt. Unlock passphrase-protected keys with ssh-add. Check HostName, User, Port, and host key trust.
rsync not found
- macOS / Linux: Install rsync and ensure it is on PATH.
- Windows: Install rsync inside WSL (
sudo apt install rsync) and verify withwsl rsync --version.
WSL missing
Install WSL (wsl --install -d Ubuntu), reboot if prompted, then install rsync inside the distro.
remote path missing
The configured Remote Path does not exist or is not accessible for the SSH user. Create the directory or fix permissions / path spelling.
permission denied
SSH authentication failed in batch mode. Unlock your key with the system agent, or run ssh <host> once in a terminal.
artisan not found
The Remote Path may not be a Laravel application root, or artisan is missing there.
composer failure
Composer may be missing on the Remote Server, or composer.json / lockfile may be inconsistent. Check the Output Channel for details.
npm build failure
Node/npm may be missing on the Remote Server, or the frontend build script failed. Check the Output Channel for details.
License
MIT
Author
BSoft
Website: https://www.bsoft.mk