Start in your local WordPress directory.
Rivet detects the installation, identifies LocalWP or Studio where possible, and reports the local runtime. Keep your database running.
cd /path/to/public_html
rivet init
rivet doctorAn open-source command-line tool for moving a local WordPress site to your own server.
Connect once through wp-admin. Deploy files and database tables, switch between sites, and restore a snapshot when you need to.
LocalWP, WordPress Studio, or your own setup. Requirements.
rivet push --content-only --dry-run
rivet push --content-onlyPreview first. Confirm the target. A snapshot is taken before live changes.
The CLI runs on your computer. The connector runs on your server. No Rivet account, no hosted control plane, and no required SSH access.
Files and database
Approve in wp-admin
Verify and back up first
Apply on your server
Uploads are staged and checked before changes go live. Every deployment takes a private snapshot first. The connector applies changes during temporary maintenance mode; committed server-side jobs can be resumed by ID.
You’ll need Node.js 22.18 or newer. Install the CLI from the GitHub release:
npm install -g https://github.com/pixelvise/Rivet/releases/download/v0.2.0/rivet-wp-cli-0.2.0.tgzThen download the connector ZIP and activate it on the destination site through Plugins → Add New → Upload Plugin. The connector requires WordPress 6.5+, PHP 8.1+, and MySQL or MariaDB.
The CLI is distributed through GitHub Releases, not the npm registry. Full installation guide
The everyday workflow, from your first connection to a full recovery. Commands that change live data require destination confirmation.
Rivet detects the installation, identifies LocalWP or Studio where possible, and reports the local runtime. Keep your database running.
cd /path/to/public_html
rivet init
rivet doctorOpen wp-admin, match the verification code, and approve the device. Your WordPress password stays in the browser.
rivet login https://example.com --name production
rivet sites--dry-run means preview only: show what would change, without uploading files or replacing live content. Remove that flag when you are ready to deploy themes, plugins, uploads, and other managed content.
rivet push --content-only --dry-run
rivet push --content-onlyExplicitly replace source database tables alongside your files. Rivet rewrites local URLs and serialized values, while preserving the destination’s installation URL.
rivet push --content-only --database --dry-run
rivet push --content-only --databaseThis replaces tables; it does not merge live orders, posts, or accounts. Pause writes and test on a disposable installation first.
Use table suffixes without the WordPress prefix, or generate a private Rivet export for a later push. Known core dependencies are checked; arbitrary plugin relationships are not inferred.
rivet push --content-only --tables my_plugin_settings
rivet db export /private/path/site.ndjson
rivet push --content-only --database-export /private/path/site.ndjsonAn export contains sensitive site data. Keep it outside public directories and source control. The export file must not already exist.
Give each destination a name. Switch the active site, override it for one command, or revoke a saved connection when you are done.
rivet login https://staging.example.com --name staging
rivet use staging
rivet push --site production --content-only --dry-run
rivet logout --site stagingCreate a private server-side snapshot, browse timestamps, and restore by ID. A restore takes a fresh safety snapshot before reverting the managed files and database.
rivet backup create
rivet backup list
rivet backup restore <snapshot-id>Restore removes managed files and tables absent from the chosen snapshot. Same-server snapshots are not off-site disaster recovery.
The CLI prints a job ID after committing a deployment or starting a backup. Inspect its state and resume it without starting over.
rivet jobs status <job-id>
rivet jobs resume <job-id>
rivet jobs cancel <job-id>Cancellation is allowed only before live changes begin. An interrupted job can leave maintenance mode enabled until resumed or safely cancelled.
Pin the destination and confirm its full URL for non-interactive runs. Nothing depends on whichever site happened to be selected last.
rivet push --site production --content-only \
--confirm https://example.comUse an explicit WordPress path, PHP runtime, or MySQL socket when automatic detection isn’t enough.
rivet doctor --path /path/to/public_html
rivet push --content-only --database \
--php /path/to/php \
--socket /path/to/mysql.sock
rivet login https://example.com --no-browser
rivet --helpRivet is an early release. File installation is not an atomic whole-site release; broken deployed PHP can require hosting-level recovery. Multisite and certain advanced database schemas are unsupported. Keep an independent backup and read the release boundaries.
Readable progress instead of step counters. Smaller request counts for uploads and backups. A clearer explanation of what happens before anything goes live.
Backing up site files: 2,500 of 4,325 files (57%)Detailed counts and batched uploads require the updated connector. Percentages describe the current phase, not the entire deployment.
Read the changelog