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.

Mounting is a feature of the SandyWP CLI. It rides on the same per-sandbox SSH gateway as 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, then sandywp auth login).
  • A sandbox on a paid plan that you own, in the ready state 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-content themes, plugins, mu-plugins with 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
Using an AI client without a local shell (like the web app)? The SandyWP MCP server exposes a 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/unmount reference.