CaptainCore Manager

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.

WordPress plugin REST API over application passwords No build step, no bundler Light and dark, ⌘K palette, terminal dock
anchor.host/account/sites
The Sites list with environment, provider, core version and weekly visits per site The Sites list with environment, provider, core version and weekly visits per site
What it manages

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
The Sites list with environment, provider, core version and weekly visits per site The Sites list with environment, provider, core version and weekly visits per site

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
Site versions tab showing git-style quicksave history with rollback links Site versions tab showing git-style quicksave history with rollback links

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
Site backups tab listing restic snapshots with browse, download and restore Site backups tab listing restic snapshots with browse, download and restore

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/…
A domain DNS editor with A, CNAME, MX and TXT records A domain DNS editor with A, CNAME, MX and TXT records

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
Security page listing vulnerabilities by severity with affected site counts Security page listing vulnerabilities by severity with affected site counts

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
The activity dock streaming an update-wp run across several sites The activity dock streaming an update-wp run across several sites

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
Accounts list with users, sites, domains, plan and billing status Accounts list with users, sites, domains, plan and billing status

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
Site users tab with WordPress users and magic login links Site users tab with WordPress users and magic login links

Stats

Fathom Analytics per site, in the site. Pageviews, top pages and referrers, without leaving the dashboard.

anchor.host/account/sites/…/stats
Site stats tab with a pageviews chart, top pages and referrers Site stats tab with a pageviews chart, top pages and referrers

Provider integrations

API wrappers for Kinsta, GridPane, Rocket.net, Cloudflare, Constellix, Mailgun, Missive, Fathom, Envato, Hover.com, Spaceship and ForwardEmail.

anchor.host/account/sites/…
A site overview: credentials, environment details, domains and accounts A site overview: credentials, environment details, domains and accounts
The interface

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.

anchor.host/account
The command palette searching sites by name The command palette searching sites by name
The REST API

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.

Read the API documentation →

List your sites
curl -u user:app-password \
  https://anchor.host/wp-json/captaincore/v1/sites/ | jq '.[] | .name'
WP-CLI commands

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
Data model

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.

anchor.host/account/sites/…/timeline
Site timeline with human notes on what happened and why Site timeline with human notes on what happened and why
Install

Three steps to your own control plane

  1. 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.
  2. Install the CLI on a server with rclone, restic and git. The Manager generates its CLI token automatically.
  3. 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.

Install the Manager with WP-CLI
wp plugin install https://github.com/CaptainCore/captaincore-manager/releases/latest/download/captaincore-manager.zip --activate
Install the CLI (Linux and macOS)
curl -fsSL https://raw.githubusercontent.com/CaptainCore/captaincore/master/install.sh | bash
Connect it to your Manager
cp ~/.captaincore/config-sample.json ~/.captaincore/config.json
captaincore connect https://your-manager.example.com