The control plane behind Anchor Hosting
A WordPress plugin that holds the fleet's state: custom database tables, a 300-route REST API, a single page dashboard at /account and a set of WP-CLI commands for scheduled fleet operations. It is the actual production code that runs the business.
Everything a host does for a site, in one place
Sites and environments
Every site tracks production and staging with plugins, themes, users, core version, usage and screenshots synced nightly by the CLI. Filter the fleet by anything and act on the result.
anchor.host/account/sites
Quicksaves
A git commit of themes, plugins and core every day, per site. See exactly which files changed and when, diff any two points, roll a plugin back with one click.
anchor.host/account/sites/…/versions
Backups
Restic snapshots to Backblaze B2 with point-in-time restore. Browse a snapshot, download a full site zip, or restore straight from the dashboard.
anchor.host/account/sites/…/backups
DNS and domains
A full DNS editor backed by Constellix, zone file import and export, and domain registration, renewal and transfer through Hover.com and Spaceship.
anchor.host/account/domains/…
Security operations
Vulnerability tracking against WP Registry, nightly checksums, security patches, scan and update queues, session anomaly detection and Google Web Risk checks.
anchor.host/account/security
The console
Pick targets, pick a cookbook recipe or type a command, and watch output stream back from every site at once. The same dock the CLI logs into.
anchor.host/account
Billing
Hosting plans, invoices and renewals powered by WooCommerce with usage-based pricing. Customers pay an invoice on the invoice, with saved cards.
anchor.host/account/accounts
Customer portals
Accounts get a scoped view of their own sites with magic login, stats and backups. Portals can be white-labelled on a custom domain with their own branding.
anchor.host/account/sites/…/users
Stats
Fathom Analytics per site, in the site. Pageviews, top pages and referrers, without leaving the dashboard.
anchor.host/account/sites/…/stats
Provider integrations
API wrappers for Kinsta, GridPane, Rocket.net, Cloudflare, Constellix, Mailgun, Missive, Fathom, Envato, Hover.com, Spaceship and ForwardEmail.
anchor.host/account/sites/…
Hand-maintained, no bundler, ships with the plugin
The dashboard at /account is a plain JavaScript single page app. Each section is one file. It includes a command palette, a terminal dock for streaming command output, right-click menus on every row, and a customer role that sees only its own accounts.
Everything the dashboard does, you can curl
Every action goes through /wp-json/captaincore/v1/. Authentication is standard WordPress application passwords over Basic Auth, so the whole platform is scriptable. Non-admin users are automatically scoped to the accounts they belong to.
curl -u user:app-password \
https://anchor.host/wp-json/captaincore/v1/sites/ | jq '.[] | .name'
Scheduled fleet work runs from cron
The Manager registers wp captaincore commands for the operational jobs that run on a schedule from the fleet server.
wp captaincore dns
wp captaincore mailgun
wp captaincore remote
wp captaincore provider-sync
wp captaincore site-label
wp captaincore session-alerts
wp captaincore scheduled-reports
wp captaincore scan-queue
wp captaincore component-queue
wp captaincore update-queue
wp captaincore top-plugins
wp captaincore restic-cache
wp captaincore security-log-sizes
wp captaincore error-log-sizes
wp captaincore mu-manifest-generate
wp captaincore web-risk-check
Its own tables, not post types
CaptainCore skips custom post types in favor of its own tables (wp_captaincore_sites, wp_captaincore_environments, wp_captaincore_quicksaves and friends), created and migrated through DB::upgrade() with dbDelta. Models are thin classes over those tables with a shared query layer, and every user action is written to an activity log with the user, IP, entity and a JSON context of what changed.
Three steps to your own control plane
- Install and activate the Manager on any WordPress site. Tables are created on activation and updates arrive through the built-in self-updater, verified against the sha256 in the manifest.
- Install the CLI on a server with rclone, restic and git. The Manager generates its CLI token automatically.
- Connect the two, add a site with its SSH details, and run your first sync.
This is opinionated software built to run one specific hosting business. You are welcome to run it, and the code is a good map of what running a WordPress maintenance business actually requires, but expect to read source rather than follow a setup wizard.
wp plugin install https://github.com/CaptainCore/captaincore-manager/releases/latest/download/captaincore-manager.zip --activate
curl -fsSL https://raw.githubusercontent.com/CaptainCore/captaincore/master/install.sh | bash
cp ~/.captaincore/config-sample.json ~/.captaincore/config.json
captaincore connect https://your-manager.example.com