v0.2.0Early release

Ship WordPress
from your terminal.

An 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.

Terminal / deploy
rivet push --content-only --dry-run
rivet push --content-only

Preview first. Confirm the target. A snapshot is taken before live changes.

A direct connection to your WordPress site.

The CLI runs on your computer. The connector runs on your server. No Rivet account, no hosted control plane, and no required SSH access.

  1. Local site

    Files and database

  2. Authorize

    Approve in wp-admin

  3. Snapshot

    Verify and back up first

  4. Deploy

    Apply on your server

Direct over HTTPS. Snapshots stay on your hosting.

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.

Install the CLI and connector.

You’ll need Node.js 22.18 or newer. Install the CLI from the GitHub release:

Install Rivet
npm install -g https://github.com/pixelvise/Rivet/releases/download/v0.2.0/rivet-wp-cli-0.2.0.tgz

Then 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

Your deployment workflow.

The everyday workflow, from your first connection to a full recovery. Commands that change live data require destination confirmation.

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.

Terminal / setup
cd /path/to/public_html
rivet init
rivet doctor

Connect a destination.

Open wp-admin, match the verification code, and approve the device. Your WordPress password stays in the browser.

Terminal / connect
rivet login https://example.com --name production
rivet sites

Preview changes. Then deploy files.

--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.

Terminal / files
rivet push --content-only --dry-run
rivet push --content-only

Move the database, too.

Explicitly replace source database tables alongside your files. Rivet rewrites local URLs and serialized values, while preserving the destination’s installation URL.

Terminal / database
rivet push --content-only --database --dry-run
rivet push --content-only --database

This replaces tables; it does not merge live orders, posts, or accounts. Pause writes and test on a disposable installation first.

Choose tables or export separately.

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.

Terminal / selective
rivet push --content-only --tables my_plugin_settings

rivet db export /private/path/site.ndjson
rivet push --content-only --database-export /private/path/site.ndjson

An export contains sensitive site data. Keep it outside public directories and source control. The export file must not already exist.

Work across multiple sites.

Give each destination a name. Switch the active site, override it for one command, or revoke a saved connection when you are done.

Terminal / sites
rivet login https://staging.example.com --name staging
rivet use staging
rivet push --site production --content-only --dry-run
rivet logout --site staging

Keep a checkpoint. Go back when needed.

Create 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.

Terminal / snapshots
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.

Continue after an interrupted server job.

The CLI prints a job ID after committing a deployment or starting a backup. Inspect its state and resume it without starting over.

Terminal / jobs
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.

Use explicit targets in scripts.

Pin the destination and confirm its full URL for non-interactive runs. Nothing depends on whichever site happened to be selected last.

Terminal / automation
rivet push --site production --content-only \
  --confirm https://example.com

Custom runtimes and other useful options

Use an explicit WordPress path, PHP runtime, or MySQL socket when automatic detection isn’t enough.

Terminal / advanced
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 --help
Complete documentation

Before using this on a live site

Rivet 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.

Latest changes

v0.2.0

Readable progress instead of step counters. Smaller request counts for uploads and backups. A clearer explanation of what happens before anything goes live.

Example progress output
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
Craig Gomes

Made by Craig Gomes.

craiggomes.com

Craig is a systems design engineer, entrepreneur, author, and founder of Pixelvise. His work spans digital systems, interfaces, and architecture, with an emphasis on long-term maintainability.

Rivet is a small contribution to that work: making WordPress deployment more direct, inspectable, and at home in a terminal.

Free to use, study, and improve. MIT licensed.
Issues and contributions are welcome on GitHub .