WP Manifestindependent plugin directory
manifest / updates / axle-config-sync

Axle Config Sync

Keep WordPress settings in git and move them between environments with a diff, a preview and undo.

★ 0stars

Install

Download source zip No release zip yet

This is the repository archive. It installs, but the folder name will carry the branch suffix and updates will not flow.

Install straight from GitHub with WP-CLI:

wp plugin install https://github.com/aryanjasala/axle-config-sync/archive/refs/heads/main.zip
No built-in updater. New versions won't appear under Dashboard → Updates. Install new releases yourself, or let Git Updater track the repository.

Axle Config Sync

Try in WordPress Playground Latest release WordPress 6.6+ PHP 7.4+ License: GPL-2.0-or-later
PHPCS PHPStan Unit tests E2E tests Plugin Check

Keep WordPress settings in git as JSON files, see what differs from the live site, and apply a chosen set with a preview and undo.

Two settings changed in git: the status, the preview with before and after, Apply, and Undo from History


Settings live in the database, not in files. Moving them from staging to production means clicking through every screen again, copying the whole database, or a per-feature export plugin with no diff and no undo. Axle Config Sync writes settings to one JSON file per item in a folder you commit to git, shows what differs on each site with a three-way status, and applies a chosen set with a preview, a change set and undo. IDs, URLs and secrets are made portable on the way.

[!NOTE] Free and open source under the GPL. No pro version, no upsells, no ads in wp-admin, no tracking. And it stays that way.

Part of Axle by AryanX, a family of plugins for running WordPress sites safely.

Features

  • Six providers: core settings screens and tracked plugin options, theme mods, widgets per sidebar, classic menus with locations, block navigation, and roles
  • Three-way status: in sync, changed in files, changed on site, conflict, only in files, only on site, or blocked, so you know which side moved
  • Portable references: pages, terms, media and menus travel as paths and slugs and resolve to the right IDs on the target. A missing page blocks the item with a plain message
  • URL placeholders: the site URL becomes {{home_url}} and expands to the target's URL. Never a find and replace on serialized data
  • Secrets stay out of git: keys and tokens are written as {"$secret":"NAME"} and resolve from AXLE_SECRET_NAME. secrets check fails CI when one is committed by hand
  • Per-environment values in env/<environment>.json, picked by AXLE_CONFIG_SYNC_ENV or wp_get_environment_type()
  • Preview and consent: before and after for every item; dangerous changes (default role, roles gaining admin capabilities, admin email, permalinks) need an explicit confirmation or --allow-dangerous
  • Change sets and undo: every apply is stored, rolled back on failure, and undoable. Undo checks nothing changed since, and is undoable too
  • Safe files: nothing from a file is ever unserialized, and the screen and Site Health check the folder is not served over HTTP
  • WP-CLI for deploys (git pull && wp axle-config-sync apply --all --yes), abilities for agents, REST routes, Site Health, privacy export and erase

Install

  1. Download axle-config-sync.zip from the latest release.
  2. In WordPress, go to Plugins > Add New Plugin > Upload Plugin, choose the zip and activate it.

Or with WP-CLI:

wp plugin install https://github.com/aryanjasala/axle-config-sync/releases/latest/download/axle-config-sync.zip --activate

Needs WordPress 6.6+ and PHP 7.4+. To try it first, the Try in WordPress Playground badge opens a throwaway WordPress in your browser with the plugin and some demo content.

Quick look

Export on staging and commit:

wp axle-config-sync track 'woocommerce_*' --owner=woocommerce
wp axle-config-sync export --all
git add wp-content/axle-config && git commit -m "Update site settings"

On production, see what differs and apply:

git pull
wp axle-config-sync status            # exit 1 when anything differs, 2 on conflicts
wp axle-config-sync apply --all --dry-run
wp axle-config-sync apply --all --yes
wp axle-config-sync undo 12           # if it was wrong

Screenshots

Status: the environment, the config directory and every tracked item with its three-way state
Status: the environment, the config directory and every tracked item with its three-way state
The preview before an apply: each change before and after, a dangerous change, and the confirmation it needs
The preview before an apply: each change before and after, a dangerous change, and the confirmation it needs
One item's difference between the file and the site
One item's difference between the file and the site
History: past applies with Undo
History: past applies with Undo
Track: which providers and plugin options are synced, and the option finder
Track: which providers and plugin options are synced, and the option finder

Documentation

Doc What it covers
Reference File format, three-way status, references, placeholders, secrets, environments, dangerous changes, hooks, abilities, WP-CLI, REST, data and privacy
Development Local setup, commands and tests
Contributing Pull requests, required checks and PR titles
Releasing How merged pull requests become releases
Security Reporting a vulnerability
readme.txt What WordPress.org shows, with the FAQ and changelog

Project structure

axle-config-sync.php      plugin header and PSR-4 autoloader
src/
├── Plugin.php            creates the services
├── Engine.php            status, export, preview, apply, undo
├── Codec.php             exact JSON encoding, no unserialize
├── Marker.php            references and secret placeholders
├── References.php        IDs to paths and slugs, and back
├── Placeholders.php      {{home_url}} and {{site_url}}
├── Secrets.php           detection, masking, resolving
├── Environment.php       the environment and env/<name>.json
├── Directory.php         the config directory and its HTTP check
├── Rules.php             tracking rules in config-sync.json
├── State.php             hashes for three-way status
├── Danger.php            dangerous changes
├── Manifest.php          manifest.json and version checks
├── Changesets.php        change sets for undo
├── Schema.php            the table and the daily purge
├── Registry.php          providers and apply order
├── Providers/            options, theme mods, widgets, menus, navigation, roles
├── Privacy.php           export, erase and policy text
├── Abilities.php         abilities for agents
├── Rest/Controller.php   status, chunked apply, undo
├── Admin/                Settings > Config Sync
├── Health/SiteHealth.php the Site Health tests
└── Cli/                  wp axle-config-sync
assets/                   admin.css, admin.js
tests/
├── Unit/                 PHPUnit
└── e2e/                  Playwright specs, fixture and the Docker site
.wordpress-org/           screenshots
docs/                     reference, development, contributing, releasing

More free plugins

Small plugins that each fill one gap in WordPress, all free with no pro version:

Plugin What it does
Page Template Usage See which template every page uses, and fix the pages on a missing template
Staging Guard Stops staging copies from emailing real people or getting indexed
Category & Tag Trash A trash for categories, tags and custom terms, with undo and full restore
Axle Read-Only Mode Read-only mode for WordPress during migrations and deploys
Restore Blocks from Revisions Restore a single block from an old revision, not the whole post
Activity Log with Undo An activity log where every change you can reverse has an Undo button
Agent Governance Hold risky AI agent calls for approval, preview what they change, and roll back a session
Block Doctor Scan the whole site for invalid and broken blocks and fix them in bulk, with undo
Block Theme Ops Find Site Editor changes that override your theme files, see the diff, reset them or send them to Git
Role Right-Sizer Recommends the smallest role each user needs, from what they actually do
Update Rehearsal Try plugin, theme, core and PHP updates on a disposable copy of your site in WordPress Playground first
User Session Manager See every device signed in, sign out one, and limit sessions per role

License

Copyright Aryan Jasala. Licensed under GPL-2.0-or-later.