Mount a sandbox as a local folder
sandywp mount <name> makes a sandbox's WordPress files show up as a normal folder
on your disk. Open it in your editor, browse it in Finder, or point an AI coding agent straight at
it every save writes through to the live sandbox. No key to generate, no rclone config, no SFTP client to wire up.
sandywp ssh, so it's
scoped to your own sandbox you're editing files inside your container, never the
host or anyone else's site.Before you start
- The SandyWP CLI installed and logged in (
npm install -g @sandywp/cli, thensandywp auth login). - A sandbox on a paid plan that you own, in the
readystate the same requirement as SSH access. - A FUSE provider on your machine (macOS or Linux). One-time setup see Requirements. If you'd rather install nothing, SSH is the zero-dependency alternative.
Quick start
Install the CLI and authenticate once:
# Install the CLI once (needs Node.js 18+)
npm install -g @sandywp/cli
sandywp auth login Then mount any sandbox by name:
$ sandywp mount my-site
✓ "my-site" mounted at /Users/you/SandyWP/my-site
edit: code /Users/you/SandyWP/my-site
unmount: sandywp unmount my-site That single command does all the plumbing invisibly: it turns SSH on for the sandbox, mints a
short-lived key that's returned once and never stored on SandyWP, and runs the mount with the right
arguments. The files land at ~/SandyWP/<name> override the location with --path <dir>.
Edit live from your editor or an AI agent
Once it's mounted, the sandbox is just a folder, so anything that works on local files works on your live site no plugin, no upload step, no copy-paste:
- Your editor. Open the folder in VS Code, or any editor, and edit
wp-contentthemes, plugins,mu-pluginswith full language support. Save, then refresh the site to see the change. - An AI coding agent. This is the headline use case: start Claude Code, Cursor, or any agent that has a local shell with the mount as its working directory, and it reads and edits the running WordPress install with its own native tools. Ask it to reproduce a bug, trace it through the plugin code, and fix it in place.
- Native tooling.
grep,rg,git, a bundler's watch mode all point at the mount like any other directory.
# Open the sandbox in your editor…
code ~/SandyWP/my-site
# …or point an AI coding agent at it start it with the mount as its
# working directory and let it read and edit files with its own tools
cd ~/SandyWP/my-site && claude sandywp_mount_command tool that turns SSH on and hands back the exact sandywp mount command to run in your terminal.Requirements
mount needs rclone and a FUSE provider. The CLI
handles rclone for you and only asks you to install FUSE once.
rclone managed for you
You don't install rclone yourself. On Linux the CLI uses your system rclone if you
have one. On macOS it downloads and manages its own official rclone binary in ~/.sandywp/bin (with your confirmation on first mount) a Homebrew-built rclone
refuses rclone mount on macOS, so the CLI deliberately sidesteps it.
macOS install FUSE-T once
macOS needs a userspace FUSE provider. FUSE-T is recommended (no kernel extension):
# macOS one-time per machine, needs your password
brew install --cask fuse-t macFUSE from macfuse.io works too. You only do this once per machine.
Linux fuse3
Most distributions already ship it; if not:
# Debian / Ubuntu
sudo apt install fuse3
# Fedora
sudo dnf install fuse3 Windows
Mounting isn't supported directly on Windows yet. Mount from inside WSL (which the
CLI treats as Linux), or use sandywp ssh, which
needs nothing extra.
How long a mount lasts
A mount is held open by a short-lived key. The key lasts up to 24 hours, or the sandbox's remaining lifetime if that's shorter, and it is not renewed automatically. That's plenty for a working session on a disposable sandbox.
- Temporary sandboxes the key tracks the sandbox's remaining life (capped at 24h). When the sandbox expires, the mount goes away with it.
- Permanent sandboxes these never expire, so the key always gets the full 24-hour ceiling. After a day, the mount's key lapses; remount to renew it.
sandywp mounts lists your mounts and flags a lapsed one as KEY EXPIRED —
it's still mounted, but will drop on rclone's next reconnect:
$ sandywp mounts
SLUG STATE MOUNTPOINT
my-site mounted /Users/you/SandyWP/my-site
blog KEY EXPIRED /Users/you/SandyWP/blog
old DEAD /Users/you/SandyWP/old Renew it by remounting unmount, then mount again for a fresh key:
# Renew an expired key by remounting
sandywp unmount my-site && sandywp mount my-site Unmount
sandywp unmount <name> unmounts the sandbox, deletes its key, and removes the empty
mountpoint. It still cleans up cleanly if the sandbox has since expired or been deleted.
# Unmount one sandbox (deletes its key, removes the empty folder)
sandywp unmount my-site
# …or unmount everything at once
sandywp unmount --all Troubleshooting
“This sandbox was created before SFTP support and can't be mounted”
Mounting rides on an SFTP subsystem that older sandbox images don't have. Sandboxes created before
the feature rolled out can't be mounted. Recreate the sandbox to get a current
image (a fresh sandbox always works), or fall back to sandywp ssh <name>, which works on every
sandbox.
A mount shows up as DEAD
sandywp mounts marks a mount DEAD when it's recorded but no longer live —
rclone exited on laptop sleep or a network change. Clear it and remount:
sandywp unmount my-site && sandywp mount my-site A mount shows up as KEY EXPIRED
The key passed its 24-hour ceiling. It's still mounted for now but will fail on the next reconnect. Remount to get a fresh key (see How long a mount lasts).
FUSE isn't installed
The CLI tells you exactly what to install brew install --cask fuse-t on macOS, or fuse3 on Linux (see Requirements). If installing FUSE
isn't an option, sandywp ssh is the zero-dependency way to get into the same sandbox.
Mount without the CLI
You don't have to use the CLI. If you'd rather drive rclone or sshfs yourself, add your own SSH key in the sandbox's SSH Access panel and read the connection details from there
(host, port 2222, and your site_… username). The sandbox's WordPress
files live at /var/www/html.
# A connection-string remote nothing is written to your rclone config.
# Use a key you added in the SSH Access panel, and the details it shows.
rclone mount \
':sftp,host=ssh.sandywp.dev,port=2222,user=site_3fde97313bd284103bea,key_file=~/.ssh/sandywp:/var/www/html' \
~/SandyWP/my-site --vfs-cache-mode writes --daemon # Prefer sshfs? Same connection details, port 2222.
sshfs -p 2222 \
[email protected]:/var/www/html \
~/SandyWP/my-site The CLI simply automates this flow turning SSH on, minting a key, and picking the right rclone arguments so you don't have to.
Next steps
- SSH access open a shell in the same sandbox with
sandywp ssh. - File Manager browse and edit files in the browser, no mount needed.
- CLI every command, flag, and the
mounts/unmountreference.