A CLI tool for managing WordPress sites over SSH built with Go. Run WP-CLI commands, manage plugins, themes, databases, and more across multiple WordPress sites from a single interface.
brew tap builtbyrobben/tap
brew install wpsshDownload the latest release from GitHub Releases.
git clone https://github.com/builtbyrobben/wpssh.git
cd wpssh
make buildwpgo discovers sites from your SSH config (~/.ssh/config) and enriches them with optional metadata overlays. Run the interactive setup to get started.
wpgo setup| Variable | Description |
|---|---|
WPGO_SITE |
Default target site alias |
Sites are auto-discovered from SSH config. You can add metadata overlays to enrich them:
# List all sites
wpgo sites list
# Show site details
wpgo sites show mysite
# Add metadata (WordPress path, host type, groups)
wpgo sites add mysite --wp-path /var/www/html --host-type wpengine --add-group production
# Remove metadata overlay
wpgo sites remove mysite
# List site groups
wpgo sites groups
# Test SSH connectivity
wpgo sites test mysite
wpgo sites test --allMost commands require a target site:
# Target a single site
wpgo -s mysite plugin list
# Target multiple sites (batch mode)
wpgo --sites mysite1,mysite2 plugin list
# Target a site group
wpgo -g production plugin list
# Use WPGO_SITE env var as default
export WPGO_SITE=mysite
wpgo plugin listwpgo sites list # List all registered sites
wpgo sites show <alias> # Show site details
wpgo sites groups # List configured groups
wpgo sites add <alias> [--wp-path ...] [--host-type ...] [--add-group ...]
wpgo sites remove <alias> # Remove metadata overlay
wpgo sites test <alias> # Test SSH connectivity
wpgo sites test --all # Test all siteswpgo -s mysite plugin list # List all plugins
wpgo -s mysite plugin list --status active # Filter by status
wpgo -s mysite plugin install woocommerce # Install a plugin
wpgo -s mysite plugin install woocommerce --activate # Install and activate
wpgo -s mysite plugin activate woocommerce # Activate a plugin
wpgo -s mysite plugin deactivate woocommerce # Deactivate a plugin
wpgo -s mysite plugin delete woocommerce # Delete a plugin
wpgo -s mysite plugin update woocommerce # Update a plugin
wpgo -s mysite plugin update --all # Update all plugins
wpgo -s mysite plugin search "seo" # Search WordPress.org
wpgo -s mysite plugin get woocommerce # Get plugin details
wpgo -s mysite plugin is-active woocommerce # Check if active
wpgo -s mysite plugin is-installed woocommerce # Check if installed
wpgo -s mysite plugin status # Show plugin status
wpgo -s mysite plugin verify-checksums # Verify all plugin checksums
wpgo -s mysite plugin auto-updates enable woocommerce # Enable auto-updates
wpgo -s mysite plugin auto-updates disable woocommerce # Disable auto-updates
wpgo -s mysite plugin auto-updates status # Show auto-update statuswpgo -s mysite theme list
wpgo -s mysite theme install flavor
wpgo -s mysite theme activate flavor
wpgo -s mysite theme delete flavor
wpgo -s mysite theme update --allwpgo -s mysite core version
wpgo -s mysite core update
wpgo -s mysite core verify-checksumswpgo -s mysite db export
wpgo -s mysite db import dump.sql
wpgo -s mysite db query "SELECT COUNT(*) FROM wp_posts"
wpgo -s mysite db size
wpgo -s mysite db tables
wpgo -s mysite db optimize
wpgo -s mysite db repairwpgo -s mysite user list
wpgo -s mysite user get admin
wpgo -s mysite user create --email new@example.com --role editorwpgo -s mysite post list
wpgo -s mysite post get 42
wpgo -s mysite post delete 42wpgo -s mysite option get siteurl
wpgo -s mysite option update blogdescription "My Site"wpgo -s mysite search-replace "http://old.example.com" "https://new.example.com"wpgo -s mysite cache flush
wpgo -s mysite cache typewpgo -s mysite transient delete --all
wpgo -s mysite transient get my_transientwpgo -s mysite cron event list
wpgo -s mysite cron event runwpgo -s mysite rewrite flush
wpgo -s mysite rewrite listwpgo -s mysite comment list
wpgo -s mysite comment approve 15
wpgo -s mysite comment delete 15wpgo -s mysite menu listwpgo -s mysite config get DB_NAME
wpgo -s mysite config set WP_DEBUG truewpgo -s mysite role listwpgo -s mysite maintenance enable
wpgo -s mysite maintenance disablewpgo -s mysite eval "echo get_option('siteurl');"wpgo -s mysite raw "wp option list"wpgo -s mysite health # Full site health check
wpgo -s mysite status # Quick site status overview
wpgo -s mysite backup # Database backup
wpgo -s mysite backup "Pre-update snapshot" # Backup with description
wpgo -s mysite update-all -y # Update core + plugins + themes
wpgo -s mysite clear-cache # Full cache clearwpgo setup # Interactive onboarding
wpgo help # Guided help by topic
wpgo version # Show version| Flag | Description |
|---|---|
-s, --site |
Target site alias |
--sites |
Multiple target sites (comma-separated, batch mode) |
-g, --group |
Target site group |
--json |
Output as JSON |
--plain |
Output as plain text |
-v, --verbose |
Verbose output |
--dry-run |
Show commands without executing |
--no-cache |
Bypass cache |
--fields |
Comma-separated fields to display |
-y, --yes |
Skip confirmation prompts |
--ack-destructive |
Acknowledge destructive batch operations |
--concurrency |
Max parallel executions in batch mode (default: 1) |
MIT