Local-first WordPress migration CLI with provider presets, backup tooling, and migration bookkeeping.
Built as a practical prototype for local and self-managed WordPress migration workflows.
- Plan-driven migrations for local or self-managed workflows
- Incremental file sync mode for repeated local sync passes
- Automated rollback from local backup artifacts
- Pre-flight compatibility checks based on local inspection and plugin heuristics
- Step-based progress tracking with persisted logs and status files
- Pressable - Provider preset and compatibility heuristics
- Kinsta - Provider preset and compatibility heuristics
- GoDaddy - Provider preset and compatibility heuristics
- InMotion - Provider preset and compatibility heuristics
- Custom - Extensible provider preset framework
- Local DNS manifest updates for planned cutovers
- Local certificate issuance helpers using
certbotor self-signed certs - Database optimization during migration process
- Plugin compatibility analysis using provider-specific warning rules
- Media file optimization for local uploads directories
Prototype migration flow with step-based progress tracking
- PHP 8.0+
- Composer
- MySQL 8.0+
- WordPress 5.0+
- Local filesystem access to the source and destination sites you want to migrate
- Optional:
rsync,mysql,certbot, andwkhtmltopdf
# Clone and install
git clone https://www.github.com/daryllundy/wp-migration-assistant
cd wp-migration-assistant
composer install
# Configure environment
cp .env.example .env
# Edit .env with your configuration
# Run initial setup
php wp-migrate setup# Analyze a local site or a remote URL
php wp-migrate analyze --source ./site
php wp-migrate analyze --source-url https://example.com
# Create a local migration plan
php wp-migrate plan --source ./site --destination ./site-copy
# Execute a migration from a saved plan
php wp-migrate migrate --plan migration-plan.json
# Monitor migration progress
php wp-migrate status --migration-id 12345Provider docs describe preset configuration, compatibility heuristics, and suggested flags. They do not provide direct hosted-provider API integration:
| Provider | Description | Documentation |
|---|---|---|
| Pressable | Preset for managed WordPress targets | View Docs |
| Kinsta | Preset for managed WordPress targets | View Docs |
| GoDaddy | Preset for shared or managed WordPress targets | View Docs |
| InMotion | Preset for VPS or dedicated WordPress targets | View Docs |
| Custom | Custom preset implementations | View Docs |
- The CLI is strongest for local-to-local migrations and migration bookkeeping.
- DNS and CDN commands write local manifests rather than calling provider APIs.
- SSL helpers can invoke local
certbotwhen available, otherwise they generate self-signed certificates. - Incremental and staging workflows are guided CLI flows, not managed zero-downtime orchestration.
# Install development dependencies
composer install --dev
# Run tests
php vendor/bin/phpunit
# Run code analysis
php vendor/bin/phpstan analyze
# Run code formatting
composer run cs-fix