astra-theme.sandywp.dev
Let them try the theme , not the screenshot
One link gives every visitor a private WordPress with your theme active — front end and wp-admin. Nothing to host, nothing to reset.
WordPress.org theme Click to search or edit
Search WordPress.org by name or slug. Your guest gets a fresh sandbox with the theme active — no SandyWP account required.
Each launch is its own WordPress. It expires seven hours later.
SandyWP / the problem
Four minutes inside your theme beats four screenshots
Nobody is shopping for a picture. They want to know how many patterns ship with it, what the block styles do, how it feels to write a post in it.
- A screenshot cannot be clicked into the site editor.
- A gallery of screenshots cannot show a pattern library.
- A feature list cannot prove the customizer has the control they need.
- A walkthrough video shows your hands on the keyboard, never theirs.
So they ask in a support thread, or open somebody else’s demo. A link answers it for them.
screenshot-01.png
Nothing here responds to a click.
oceanline-demo.sandywp.dev/wp-admin
Their site. Their cursor.
From “looks nice” to “I’ll take it” in one click
Paste one URL into your listing
Your WordPress.org slug is already the link: app.sandywp.com/themes/<slug>.
The visitor gets a WordPress of their own
A private sandbox, your theme installed and activated. No account first.
They land in wp-admin, not a preview pane
A magic login opens the real dashboard. The front end is one click away.
It tidies up without you
Guest demos expire after seven hours and remove themselves.
What you stop having to worry about
real, not iframe
A whole WordPress, not a preview pane
Patterns, block styles, template parts, the customizer — inspected on a real install.
always pristine
Nobody inherits the last visitor’s edits
No shared demo to restore, and nothing anyone can spoil for the next person.
zero hosting
No demo server on your invoice
Nothing to patch, no certificate to renew, nothing to explain on launch day.
SandyWP / the build loop
The demo is the easy half. This is where the theme gets made.
The sandbox that shows the theme is the one you build it in.
git deploy
Every push lands in wp-content/themes
Point a GitHub repo at your theme folder. Every push to that branch syncs itself, no build step.
wp-content/themes/oceanline Git deployment mount
Edit live theme files from your own editor
Mounts the sandbox onto your machine. Open it in your editor; every save hits the running site.
sandywp mount oceanline Mount a sandbox push
Bring the install you already have
In LocalWP or MAMP already? One push mirrors the local database and wp-content up, then syncs in place.
sandywp push What the CLI does branch & tag deploys
Show a client the branch before you merge it
Deploy any branch or tag once, without moving the one your sandbox tracks. Main stays put.
deploy → redesign/hero Branch and tag deploys $ npx @sandywp/cli push
✓ Created “oceanline” · oceanline.sandywp.dev
$ sandywp mount oceanline
✓ Mounted at ~/SandyWP/oceanline
$ wp theme status oceanline
Status: Active · Version: 1.4.0
Git deploy, SSH, mounts and the CLI are paid plans. The launcher is not.
SandyWP / agents
Hand the fiddly template pass to an agent
Renaming template parts, threading one theme.json setting through every pattern — an agent is good at that, if it can work against a real install.
- Mount the theme folder for your editor’s agent
- Or connect the MCP server at app.sandywp.com/mcp over OAuth
- It can create sites, deploy branches and read debug.log back
mcp · app.sandywp.com/mcp
“Make the archive template wide, then tell me if anything errored.”
-
sandywp_write_filethemes/oceanline/templates/archive.html -
sandywp_read_debug_log0 new entries -
sandywp_site_statusoceanline · ready
Done. No new entries in debug.log.
oceanline · debug
WP_DEBUG WP_DEBUG_LOG WP_DEBUG_DISPLAY SCRIPT_DEBUG wp-content/debug.log
Noticewp_get_theme_file_uri called incorrectly in /themes/oceanline/functions.php on line 118
WarningUndefined array key "spacing" in /themes/oceanline/inc/block-styles.php on line 42
SandyWP / debug
A blank region is a terrible bug report to give yourself
Themes fail quietly: a mistyped template part renders nothing, a deprecated helper throws a notice nobody sees. Flip the constants per sandbox and read debug.log beside them.
- SCRIPT_DEBUG loads core unminified when the editor is the problem
- Log viewer in the dashboard, or tail -f over SSH
SandyWP / version coverage
A theme that breaks on the new WordPress breaks in public
Editor behaviour, template resolution and theme.json handling move between majors, and your buyers do not all update on the same day. Pick the release and the PHP version at create time instead of guessing which one did it.
Test against the next WordPress create sandbox · versions
WordPress
latest default · 7.0.37.1-RC1 pre-release7.0.3 7.0 6.9 6.8 6.7 6.6
PHP
8.3 default8.2 8.1
WordPress 7.1 is due 19 August 2026.
template · oceanline demo
Oceanline demo
Ask for an email before launch
Hide “Powered by SandyWP”
SandyWP / premium and custom themes
Your paid theme deserves the same link as a free one
The /themes/<slug> launcher only reaches the WordPress.org directory. For a
commercial theme, stage the site once and let the link copy it.
-
Stage it the way you want it seen
Theme, demo content, companion plugins, menus, homepage settings. Not a bare install.
-
Save the whole site as a template
One click freezes the WordPress and PHP version, plugins, theme, content, settings and database.
-
Switch on the public launch link
Every visitor gets a fresh copy of that exact site. No account, no queue.
-
Decide what it asks and what it says
Add an optional email gate for the lead, and white-label the page so it carries your brand.
SandyWP / placement
One link, and about six places it starts paying for itself
Anywhere you currently write “view demo” and point at a picture.
- 01Your WordPress.org listing
- 02The Try it button on your sales page
- 03A marketplace listing
- 04A theme review submission
- 05A support reply
- 06A conference booth QR code
SandyWP / what it costs
Priced per sandbox you keep, not per demo you hand out
Launcher demos are guest sandboxes: they belong to the visitor and expire after seven hours. A plan covers the sandboxes you keep.
Free
$0/ forever
No credit card
- 2 active sandboxes
- 256 MB storage
- 7-day expiration
Plus
$7/ mo
$70 / yr
- 10 active sandboxes
- 5 GB storage
- Permanent sandboxes
- Git deploy, PHP config & SSH
- CLI & Slack
Pro
$17/ mo
$170 / yr
- 25 active sandboxes
- 15 GB storage
- Permanent sandboxes
- Git deploy, PHP config & SSH
- CLI & Slack
Max
$27/ mo
$270 / yr
- 50 active sandboxes
- 30 GB storage
- Permanent sandboxes
- Git deploy, PHP config & SSH
- CLI & Slack
Yearly is ten months for twelve. Git deploy, SSH, mounts and the CLI start on Plus.
Two good tools with a different centre of gravity — the comparisons lay out every row, including where they win.
SandyWP / the rest of it
Everything else the account brings with it
The same sandbox is the demo, the build, the test matrix and the bug report.
templates
Freeze a staged demo; every visitor gets their own copy.
Templatesgit deployment
Push the branch; the sandbox is already showing it.
Git deploymentssh & sftp
Mount it as a folder, or open a shell with wp-cli.
SSH & SFTPwordpress beta
Meet the next WordPress months before your buyers do.
WordPress betadebug mode
Turn a blank region into an actual error message.
Debug modeai & mcp
Give a coding agent a real WordPress to work against.
AI & MCPcli
Create, push, mount and deploy without leaving the terminal.
The CLIcloner
Pull a client’s live site in and meet their real content. Production is only read.
The Cloner pluginslack
Spin a matching sandbox and deploy a branch from the thread.
SandyWP for Slackgithub previews
Give each pull request an exact-commit WordPress review site.
SandyWP for GitHubWhat theme developers ask
Do I have to host or maintain the demos?
No. SandyWP hosts each guest sandbox and expires it after seven hours. Nothing to patch, nothing to reset.
Does every visitor really get their own site?
Yes — an isolated sandbox with its own URL and database, not one shared demo collecting everyone’s edits.
Can visitors reach wp-admin, and do they need an account?
A magic-login redirect drops them in wp-admin, and the front end stays at its own URL. No account needed; guest limits and an abuse check still apply.
What if my theme is not on WordPress.org?
Stage it on a sandbox, save that site as a template, and enable the template’s public launch link. Optional email gate and white-labelling come with it.
Can I deploy my theme straight from GitHub?
Yes. One repo per sandbox, pointed at wp-content/themes/your-folder, deployed by hand, on every push, or one-off from any branch or tag. Shallow clone, no build step, and the destination folder is replaced each time.
Can I edit theme files live from my own editor?
Yes, on a paid plan. sandywp mount maps /var/www/html to a local folder and SSH gives you a shell with wp-cli. Opt-in per sandbox, key-based, off by default, not on Free.
How do I get my demo content into the demo?
Stage it once — theme, plugins, posts and settings — then save it as a template. Every launch copies that exact state.
Will a busy launch day blow through my plan limits?
No. Launcher demos are guest sandboxes belonging to the visitor’s session, not your account. Your plan covers the sandboxes you keep.
What stops someone abusing the launch link?
Rate limits: by default one guest sandbox and five creates per visitor per window, three sandboxes and fifteen creates per IP, plus an abuse-protection check.
What happens when a demo sandbox expires?
It stops serving and is deleted, after a six-hour retention window for guests. Your own sandboxes run one hour to one month, or permanent on a paid plan.
Can I test against the next WordPress release?
Yes. 7.1-RC1 sits beside latest and the pinned 6.6 to 7.0.3 releases, on PHP 7.4, 8.1, 8.2 or 8.3. WordPress 7.1 is due 19 August 2026.
Give them something to click, not something to squint at.
On WordPress.org? Your launcher URL already works. If not, a template gets you the same link.



