Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🌐 wpx

Native WordPress development environments for macOS β€” plus a desktop GUI that drives them and an MCP server that lets your AI assistant operate them too. Every service β€” nginx, PHP-FPM, MySQL / MariaDB / SQLite, Redis / Memcached, Mailpit, and Elasticsearch β€” runs natively on the host. No Docker required (a Docker runtime is on the roadmap, not currently supported).

Made with ❀️ by Akash Aman

Patreon Buy Me A Coffee Hire Me


Overview

wpx lets you spin up a fully-configured local WordPress site in about 12 seconds:

wpx create mysite                          # β†’ https://mysite.wpx
wpx create vipsite --vip                   # β†’ VIP Go w/ memcached + ES
wpx create shop --domain myshop.dev        # β†’ custom domain

Every site gets its own nginx + php-fpm + database + cache quartet, mkcert-issued HTTPS, a reverse proxy on :80/:443, and lifecycle commands that survive reboots. The desktop app puts the same surface behind a point-and-click GUI; the MCP server lets you drive all of it from any AI client that speaks Model Context Protocol.

✨ Key Features

Capability Description
Create site One command β†’ full WordPress install with HTTPS in ~12 s
Multi-stack PHP versions, MySQL / MariaDB / SQLite, Redis / Memcached, multisite + VIP support
HTTPS via mkcert Locally-trusted certificates per site, no browser warnings
Reverse proxy One nginx on :80/:443 routes every *.wpx hostname to its site
Pull from production 3-step wizard: import dump β†’ confirm domain mappings β†’ search-replace + reproxy
Site lifecycle start / stop / restart / reload (whole stack or per-service)
Doctor Preflight + auto-fix for ports, hosts, mkcert, binaries, disk, proxy
Orphans Detect & clean leftover processes / files from previous runs
Notifications drawer Replay every toast surfaced this session (πŸ”” in the topbar of the desktop app)
⌘K Command palette Fuzzy navigate + run actions across sites, pages, tabs
MCP integration 54+ tools for VS Code, Cursor, Claude Desktop
Self-update wpx self-update upgrades CLI and desktop app in one command

πŸ› οΈ MCP Tools

Every wpx capability is exposed as an MCP tool β€” 55 tools across 18 categories. Drop the JSON snippet from the in-app dialog (⌘K β†’ mcp) into your client's config and the tools below light up automatically.

Cache

ToolDescription
cache_flushFlush the object cache (Redis or Memcached) for a site.

Database

ToolDescription
db_exportExport a site's database to a SQL file. Returns the output file path.
db_importImport a SQL dump into a site's database. Supports .sql and .sql.gz files.
db_queryRun a SQL query directly against a site's MySQL/MariaDB database. Bypasses wp-cli and VIP restrictions. Returns tab-separated results.

Diagnostics

ToolDescription
doctorRun preflight/health checks.
logs_readRead recent log entries for a site.
orphans_checkDetect stale PIDs, orphan processes, port conflicts.
pullImport production database and rewire domains.
upgrade_configBackfill missing .wpx.json fields and regenerate configs.

Domains

ToolDescription
domain_addMap a domain to a multisite. Adds proxy config, /etc/hosts entry, and SSL certificate.
domain_removeRemove a domain mapping from a multisite.
domain_listList all domains mapped to a multisite.

Meta

ToolDescription
help_discoverDiscover wpx commands, subcommands, and flags by running --help. Use this when you need to find exact flag names or available subcommands. Examples: command='create', command='db import', command='domain'.

Site lifecycle

ToolDescription
site_createCreate a new WordPress site with the specified stack. Returns site details including URLs and ports.
site_destroyDestroy a WordPress site β€” stops services, removes files, cleans hosts and proxy.
site_startStart a site. By default starts every service; pass `service` to start just one (nginx, php-fpm, mysql, mariadb, redis, memcached, mailpit, elasticsearch, …). Use services_list to discover which services exist on the site.
site_stopStop a site. By default stops every service; pass `service` to stop just one.
site_restartRestart a site. By default restarts every service; pass `service` to restart just one.
site_reloadGraceful reload (SIGHUP/SIGUSR2) of a site. By default reloads every service that supports it; pass `service` to reload just one.
site_applyRegenerate all config files from .wpx.json and reload services.

Plugins (wp-cli)

ToolDescription
plugin_listList all installed plugins for a site with status, version, and update info.
plugin_installInstall a WordPress plugin from the plugin directory or a URL.
plugin_activateActivate an installed WordPress plugin.
plugin_deactivateDeactivate an active WordPress plugin.

Plugins (DB-direct)

ToolDescription
plugin_db_listList all plugins from filesystem + DB status. Works even when the site has a fatal PHP error. Shows active/network-active/inactive status by reading directly from the database.
plugin_db_toggleEnable or disable one or more plugins via direct DB manipulation. Accepts comma-separated plugin paths for batch operations. Single DB read + single DB write. Bypasses wp-cli and PHP.
plugin_db_disable_allEmergency: disable ALL plugins via DB. Use when a site is completely broken by a plugin fatal error.
plugin_db_enable_allEnable ALL plugins found on disk via DB. Scans wp-content/plugins/ and activates every discovered plugin.

Reverse proxy

ToolDescription
proxy_startStart the global reverse proxy (ports 80/443).
proxy_stopStop the global reverse proxy.
proxy_reloadReload the global reverse proxy configuration.
proxy_statusShow proxy status and ports.
proxy_cleanRemove orphaned proxy configs for destroyed sites.

Pull from production

ToolDescription
pull_detectDetect all production domains in a site's database and propose local domain mappings. Returns JSON with proposed from/to pairs for each blog in the multisite. Use before pull_execute to let the user review and adjust mappings.
pull_executeExecute domain migration: updates wp_blogs, runs search-replace per mapping, adds proxy entries, reports hosts to add. Pass the mappings JSON from pull_detect (modified if needed). Use quick=true for Go-based parallel search-replace (faster, bypasses WP-CLI).
hosts_addAdd /etc/hosts entries for a site. Auto-discovers all domains: primary for single sites, primary + subsite domains for subdomain multisites. Skips existing entries. Requires sudo.

Database β€” search / replace

ToolDescription
search_replaceRun a search-replace across all WordPress tables. Handles serialized data safely.

Services (status)

ToolDescription
services_listList every service for a site (nginx, php-fpm, mysql/mariadb, redis/memcached, mailpit, elasticsearch, …) with PID, port, version, uptime, memory, CPU, and config/log paths. Use this to see which services exist on a site before you target one with site_start / site_stop / site_restart / site_reload.

Site management

ToolDescription
site_listList all wpx-managed WordPress sites with their domains, ports, and status.
site_infoShow detailed configuration for a site: stack versions, ports, paths, features. Access the site via the domain URL (e.g. https://domain.test/) β€” do NOT use localhost:<port>. The ports object shows internal backend ports for direct DB/Redis connections only; the wpx proxy routes HTTP/HTTPS on standard ports 80/443.
site_openGet the URL for a site or one of its services (does not open a browser).
site_envGet environment variables for a site's shell (PHP path, socket paths, etc.).
versionPrint the wpx version.
wpx_initInitialize the wpx global directory (~/.wpx/) and local CA for HTTPS.

Themes (wp-cli)

ToolDescription
theme_listList all installed themes for a site.
theme_installInstall a WordPress theme from the theme directory or a URL.
theme_activateActivate an installed WordPress theme.

Themes (DB-direct)

ToolDescription
theme_db_listList all themes from filesystem + active status from DB. Works even when the site has a fatal PHP error.
theme_db_switchSwitch the active theme via direct DB update. Bypasses wp-cli and PHP β€” works even when the site is broken.

WordPress users

ToolDescription
user_createCreate a WordPress user.
user_listList all WordPress users for a site.

WP-CLI passthrough

ToolDescription
wp_runExecute any WP-CLI command against a site. Examples: 'plugin list', 'option get siteurl', 'cache flush', 'db query \

Xdebug

ToolDescription
xdebug_onEnable Xdebug for a site. Returns IDE configuration.
xdebug_offDisable Xdebug for a site.
xdebug_statusCheck Xdebug status for a site.

πŸ“– Documentation

Doc What's in it
docs/cli.md Full CLI command reference β€” every subcommand, every flag, real examples
docs/architecture.md Stack, on-disk layout, process model, port allocation strategy

Install

The umbrella installer drops both the CLI binary and (on macOS) the desktop app in one go:

curl -fsSL https://raw.githubusercontent.com/akash-aman/wpx/main/install.sh | bash

Flags:

Flag Effect
--version vX.Y.Z Pin a specific release
--cli-only Install only the CLI binary
--app-only Install only the desktop app (macOS only)

After install:

wpx --help                # full CLI surface
wpx self-update --check   # is a newer release available?
wpx self-update           # upgrade both CLI + app
open -a wpx               # launch the desktop app

Note

wpx currently targets macOS on Apple Silicon (arm64) only. Intel Macs, Linux, and Windows are on the roadmap.

🀝 Contributing

This repository is the public release distribution. Source code, issues, and pull requests live in the private codebase repo β€” please reach out at sir.akashaman@gmail.com if you'd like access.

πŸ”’ Security

By participating you agree to abide by the Code of Conduct. Found a security issue? Please follow the responsible-disclosure process in SECURITY.md β€” do not open a public issue.

πŸ“ License

This project is proprietary β€” see LICENSE for the full terms. The published binaries are licensed for personal, internal use only; redistribution, modification, and re-publishing of the source are not permitted. For commercial licensing or source-code access contact sir.akashaman@gmail.com.

Patreon Buy Me A Coffee Hire Me

Made with ❀️ by Akash Aman

About

Native WordPress dev environment for macOS πŸš€. Zero Docker. Zero VMs. Production-ready sites in ~30 seconds. Drivable by Claude, Cursor, VS Code via MCP.

Topics

Resources

Code of conduct

Security policy

Stars

5 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages