exjsx deploy and the MCP server. No Docker, no PHP, no MySQL, no git
clone: it runs on WordPress Playground (PHP-WASM, pure Node) and hydrates from a
pre-baked site snapshot, skipping the minutes a cold WordPress + Elementor
install costs. First run downloads a ~50 MB snapshot once (cached under your
home directory); later boots take a few seconds.
What is inside the snapshot
WordPress (Playground build), Elementor 4.2.1 (free), the elementor-ultra companion plugin, pretty permalinks,WP_ENVIRONMENT_TYPE=local baked into
wp-config.php, the V4 atomic / classes / variables experiments active, and a
minted local-dev application password.
Flags and environment
Environment:
ELEMENTOR_ULTRA_HOME overrides the cache location; ULTRA_PORT
sets the port.
Crash supervision
PHP-WASM workers can crash (a bad CSS request was a reliable trigger in the field). The playground runs supervised: a crashed worker respawns automatically. If a request suddenly fails, wait about 15 seconds and retry before diagnosing; right after a respawn the worker answers health checks while still warming for tens of seconds.The single-worker reality
The site is served by a single PHP-WASM worker: requests queue, and one heavy request blocks the rest. Treat a playground site as one-user-at-a-time. Two consequences worth knowing:- Right after boot or a bounce, allow generous timeouts; the provisioning tooling retries with growing timeouts for exactly this reason.
- Missing static files 301-redirect to the homepage on Playground-style hosts, which makes a dead stylesheet look alive to naive checks. The companion plugin’s static-404 guard fixes this (see Plugin), and the doctor checks content-type, not just status.
Resetting and multiple sites
eu-studio newsite, which
wraps the boot and verifies the result.