Install the Cloudways add-on using the installation guide, then follow the setup below.
Requirements
- Local 6 or newer. Built and tested against Local 10.1.2 on macOS.
- A Cloudways WordPress application. Cloudways servers ship with WP-CLI and rsync.
- For API mode: a Cloudways access token (starts with
cw_) from Account → API Integration (https://platform.cloudways.com/api).- Pick Full Access, or Limited Access that covers servers and applications, application credentials and SSH access, SSH keys, backups, cache and operations.
- Use a current Cloudways access token; legacy API-key availability depends on the provider.
- For SFTP/SSH mode: the application's Application Credentials (Applications → your app → Access Details), with SSH access enabled.
Use
- Open a site in Local and go to Tools → Cloudways.
- Connect in one of two ways:
- Cloudways API (recommended): paste your access token, pick the application (grouped by server) and click Link. The add-on then:
- turns on SSH access for the app if it is off;
- uses the app's credential, or creates one if none exists;
- registers its SSH key on that credential;
- waits for the key to work and finds the WordPress webroot.
- SFTP/SSH credentials: enter the server IP, the app credential's username and either its password or the add-on's public key. If you use the key, add it under Application Credentials → SSH Keys in Cloudways first.
- Cloudways API (recommended): paste your access token, pick the application (grouped by server) and click Link. The add-on then:
- Push or pull from the panel's Push to Cloudways / Pull from Cloudways tabs. Once the site is linked, you can also use the Cloudways: Pull / Push buttons in the site header.
- Push options:
- Files and/or Database
- Take a Cloudways application backup first (API mode)
- Delete files on Cloudways that aren't in Local (on by default, like WP Engine)
- Purge Cloudways caches afterwards
- Pull options:
- Files and/or Database
- Back up the Local database first
- Delete Local files that aren't on Cloudways (on by default, like WP Engine)
- Push options:
Progress appears in Local's site overlay. When the transfer finishes, a banner reports success or the error.
Pull a Cloudways site into a new Local site
- Click + (Create a site) in Local and choose Pull from Cloudways.
- Pick the Cloudways app (API) or enter SFTP/SSH credentials. Name the Local site; it defaults to the app's name. The page previews the
.localdomain and folder, which follow your Local new-site defaults and avoid existing sites. - Click Create site & pull.
- The connection is checked first, so a wrong password or key never leaves an empty site behind.
- Local then creates a normal site (its default PHP, MySQL and web server), the add-on links it, and pulls the files and database.
Compare & sync files (selective sync)
Go to Tools → Cloudways → Compare & sync files and click Compare with Cloudways. Nothing changes until you choose files. The result lists every differing file in three groups:
- Different on each side: shows Local's and Cloudways' size and modification time, and which copy is newer.
- Only in Local
- Only on Cloudways
Filter by path, tick individual files or whole groups, then click Push selected or Pull selected. The confirmation tells you what will be uploaded, downloaded or deleted.
- What moves: only the ticked files. The database is never touched, and Cloudways caches are purged after a selective push.
- Deletions: a ticked file that exists only on the receiving side is deleted there, so both sides end up matching. For example, pushing a file that is only on Cloudways removes it from Cloudways.
- How differences are found: by default, rsync compares size + modification time, which is fast. Tick Compare file contents (slower) to compare checksums. That catches edits that kept the same size and date, but it reads every file on both sides.
- Exclusions: the push/pull exclusions below apply here too, so
wp-config.php,.htaccessand cache drop-ins never show up as differences.
What a database push does
- Exports the Local database and rewrites MySQL 8
utf8mb4_0900_*collations to MariaDB-compatible ones. - On Cloudways, saves the current database to
local-backup-before-push.sqlin the app'stmp/folder (orprivate_html/), outsidepublic_htmland readable only by the app user. It also reads the currenthomeURL andtable_prefix. - Uploads the dump outside the webroot, then runs
wp db resetandwp db import. If the import fails, it restores the backup automatically. The uploaded dump is always deleted afterwards. - Sets
table_prefixto match Local if the two differ. - Runs
wp search-replaceacross all tables (--precise,guidskipped) for://site.local→ the URL WordPress had on Cloudways;- the JSON-escaped form
\/\/site.local, which block editors and page builders store; http://→https://when the Cloudways site was on HTTPS.
What a database pull does
- On Cloudways, exports the database with
--single-transaction, so the live site isn't locked. It also readshomeandtable_prefix. - Downloads the export and deletes it from the server. Then it makes the dump importable by Local's MySQL:
- removes the
/*M!999999\- enable the sandbox mode */line that newer MariaDB writes; - rewrites MariaDB 11
uca1400collations.
- removes the
- Saves the Local database to
app/sql/local-backup-before-pull.sql(optional). - Runs
wp db resetandwp db importthrough Local's own WP-CLI service, which uses the site's PHP and MySQL. If the import fails, it restores the backup. - Sets the local
table_prefixto Cloudways' if the two differ. - Runs
search-replace(--precise,guidskipped) from the Cloudways URL to the Local URL. It also covers:- the app's temporary
*.cloudwaysapps.comaddress (API mode); - the JSON-escaped forms;
- fixing
https://site.localback tohttp://when the Local site doesn't use HTTPS.
- the app's temporary
What is never transferred
These are excluded in both directions. Excluded paths are also protected from --delete, so each side keeps its own copy. Cloudways keeps its wp-config.php and .htaccess, and Local keeps its own. Cloudways' Redis/Breeze drop-ins never reach Local, where they'd break the site.
- Environment config:
wp-config.php,.htaccess,.user.ini - Cache drop-ins and output:
object-cache.php,advanced-cache.php,wp-content/cache/, Breeze config - VCS and tool binaries:
.git/,node_modules/.bin,vendor/bin - Root-level
*.sqldumps - Local's helper files
To skip more, add rsync patterns (one per line) to app/public/.cloudways-push-ignore or .cloudways-pull-ignore. These work like .wpe-push-ignore and .wpe-pull-ignore.
Themes and plugins symlinked from elsewhere
A theme or plugin that you develop in another folder and symlink into the Local site (for example wp-content/themes/mytheme → ~/code/mytheme) is pushed as real files, because the server has no such folder to point to. It is never pulled into: a pull leaves the symlink and the folder it points to untouched, so server copies can't overwrite or delete your working files. Symlinks within the site stay symlinks, and broken symlinks are skipped (and logged).