You need to change one line in a config file on the server. The honest version of what most people do: download it to the Desktop, open it, edit it, save it, drag it back, hope you dragged the right one, and find wp-config.php still sitting on the Desktop three weeks later next to wp-config 2.php.
There is a better way, and it has been standard in good file clients for years.
Watch mode, and what it actually does
The pattern is usually called edit with auto-upload or watch mode. When you open a remote file:
- The client downloads it to a temporary location.
- It opens it in your chosen local editor — VS Code, BBEdit, Sublime, TextMate, Xcode, whatever is registered on your Mac.
- It watches that temporary file for changes.
- Every time you press ⌘S, the file is uploaded back to the server automatically.
You keep your editor, your syntax highlighting, your keybindings and your extensions. The round trip disappears. Save, refresh the browser, see the change.
Upstream detects installed GUI editors through Launch Services and lets you pick a default. Terminal editors like vim are deliberately excluded from that list, because launching one from a GUI app would just open a Terminal window and confuse everybody — if you want vim, you want an SSH session, not this feature.
Why this beats a mounted volume
The obvious alternative is to mount the server as a disk with sshfs and open files directly. It sounds cleaner. In practice watch mode is better for editing, for three reasons.
Saves are atomic-ish. Editors do not simply write bytes into an open file. Most write to a temporary file and rename it over the original, some write in several passes, and some create backup files alongside. Over a network filesystem with real latency, those multi-step saves are where you get truncated files if the connection stutters. With watch mode the editor saves to a local file — instantly, reliably — and the upload is a separate, retryable step.
Editors stay fast. A network-mounted project makes an editor’s file watcher, indexer and search crawl the tree over the network. VS Code with a large project on sshfs is a well-known way to make a fast machine feel broken.
No kernel extension. sshfs on macOS needs macFUSE, which on Apple Silicon means lowering the system security policy and re-approving a third-party kernel extension after major OS updates. Watch mode needs none of that — Upstream is sandboxed like any App Store app.
The failure mode to know about
Watch mode uploads your version on save. It does not check whether the file changed on the server in the meantime.
If a colleague edited the same file five minutes ago, or a deploy script rewrote it, your save silently overwrites their change. There is no merge and no warning, because at the moment of upload the client only knows what you have.
So: fine for a config tweak, a CSS fix, a quick correction to a template on a server only you touch. Not a substitute for version control on anything a team works on. If two people might edit the same file, the answer is git and a deploy step, not a faster upload.
Files you should not edit live
Anything that breaks the site while half-written. A PHP file is executed on every request, so the instant between your save and the upload completing is a window where visitors can hit a broken page. For a busy site, edit locally and deploy.
Very large files. Watch mode downloads the whole file, and re-uploads the whole file on every save. On a 200 MB log, that is not the tool you want — use tail over SSH.
Anything you have not backed up. Duplicate the file on the server first. cp wp-config.php wp-config.php.bak costs nothing and has saved a great many afternoons.
Quick edits without an editor
Sometimes you want to look at a file, not edit it. Pressing space on a remote file in Upstream gives you a Quick Look preview — the same one the Finder uses — which downloads and renders the file without opening anything. It is the fastest way to check whether a .htaccess is the one you think it is.
Step by step
- Pick your default editor in Upstream’s settings — any GUI editor installed on your Mac is detected automatically.
- Back up first for anything critical — duplicate the file on the server before you start.
- Open the remote file with Edit rather than downloading it. It opens in your editor from a temporary local copy.
- Edit and save normally — each ⌘S uploads the file back automatically.
- Verify in the browser, in a private window so you are not reading a cached copy.
- Close the file when you are done so the watcher stops and the temporary copy is released.
Questions people ask
Does the file upload on every save?
Yes. Each save triggers an upload, so there is no separate “publish” step. Close the file when you have finished to stop the watcher.
What happens if the upload fails?
The transfer is retried, and your local temporary copy still holds the edit — so nothing is lost. It is worth confirming the upload succeeded before closing, especially on a flaky connection.
Can I use VS Code, or only a built-in editor?
Any GUI editor installed on your Mac. Upstream discovers them through Launch Services, so VS Code, Sublime Text, BBEdit, TextMate, Nova and Xcode all appear. Terminal editors like vim are excluded by design.
Is this the same as mounting the server with sshfs?
No. sshfs makes the remote filesystem look local, which means every editor operation goes over the network and requires a kernel extension. Watch mode keeps the file local and syncs on save.
Will it overwrite someone else’s changes?
Yes, if someone edited the same file between your download and your save. There is no conflict detection. For files a team edits, use version control.
Does this work over plain FTP?
Yes, on FTP, FTPS and SFTP alike — it is a client-side workflow rather than a protocol feature. Over plain FTP, remember that the file contents cross the network unencrypted.