Glossary
One-line definitions for the nouns CaptainCore uses across the dashboard, the API and the CLI.
Site
A managed website. A row in wp_captaincore_sites with a name (the domain), a site slug, a provider, a status and a JSON details blob. The slug must be all letters and digits and at least three characters, because the CLI splits a target like mysite-staging on the first hyphen.
Environment
One deployable copy of a site, named Production or Staging. A row in wp_captaincore_environments holding the SSH or SFTP address, username, password, protocol, port and home_directory, database credentials, media offload settings, and the monitor_enabled and updates_enabled flags. Almost every CLI command targets an environment, not a site.
Quicksave
A point-in-time record of a site’s themes, plugins and core, committed to a per-site git repository by the CLI. The Manager does not store them; it reads them on demand with quicksave list <site_id>-<environment>. Quicksaves back the file-level diff and rollback features.
Capture
A visual record of a site’s pages. A row in wp_captaincore_captures tying a git_commit to a pages blob. Generated by captaincore capture generate, which captures pages over time based on quicksaves and HTML changes. captaincore capture scan and captaincore capture check look through captured HTML for injected scripts and stylesheets.
Snapshot
A named, expiring copy of a site that someone can download. A row in wp_captaincore_snapshots with snapshot_name, storage, email, notes, expires_at and a token that authorizes the download link. Created with captaincore snapshot.
Backup
An incremental restic snapshot in a per-site repository, synced to Backblaze B2 through rclone. Managed by the captaincore backup command group: generate, list, download, get, show, check, verify, prune, repair, unlock, forget, repo-info and more. Backups live on the CLI server and its storage remote, not in the Manager’s database.
Archive
Files in the rclone archive remote configured as remotes.rclone_archive. captaincore archive list fetches the file list. captaincore archive share <file> creates a public shareable link that expires in 7 days.
Account
A customer record. A row in wp_captaincore_accounts with name, a plan, metrics, defaults and a status. Accounts connect to sites, domains and users through the account_site, account_domain and account_user junction tables. Non-admin API users are scoped to the accounts they belong to.
Provider
A stored connection to a third-party API. A row in wp_captaincore_providers with a name, a provider type and a set of credentials. The Settings screen offers kinsta, wpengine, rocketdotnet, gridpane, constellix, hoverdotcom, spaceship, mailgun, forwardemail, fathom, intercom and envato. GET /providers/{id}/verify tests one.
Label
A display-only badge on a site, stored in the site’s details.labels JSON. Labels do not change the site’s lifecycle status. The types with built-in colors and icons are moved, dns-elsewhere, not-wordpress, down, domain-expiring, domain-expired and note. Written with wp captaincore site-label.
Recipe
A saved snippet of code you can run against sites from the terminal dock. A row in wp_captaincore_recipes with a title, content and a public flag. Private recipes belong to the user who made them. Only administrators can publish a public one; the create and update routes force public=0 for everyone else. The Settings screen calls the collection the Cookbook.
Script
A one-off or scheduled piece of code targeted at a single environment. A row in wp_captaincore_scripts with code, an environment_id, a JSON details blob carrying run_at, and a status. Scripts::run_scheduled() runs from cron, finds scheduled scripts whose run_at has passed, dispatches run <slug>-<environment> --code=<base64> to the CLI in the background, and marks them done.
Process
A documented procedure in the operator handbook. A row in wp_captaincore_processes with a name, a time estimate and a repeat interval (as-needed, 1-daily, 2-weekly, 3-monthly, 4-yearly). Not to be confused with a running job.
Process log
An entry on a site’s timeline, in wp_captaincore_process_logs, optionally referencing a process and linked to sites through process_log_site. This is the customer-visible record of work done.
Job
An asynchronous command and its result. Run::task() queues the command on the CLI server and returns a token, tracked in wp_captaincore_job_tokens (token, task_id, user_id, site_id, command). Poll it with GET /my-jobs/{token}, which returns queued, started or completed with the output. Users can only see tokens they created.
Token
Several distinct things share the word.
- CLI token. The shared secret between the Manager and the CLI. Returned by
captaincore_get_cli_token(), sent as thetokenheader on dispatches and in the JSON body on callbacks, and stored on the CLI side askeys.tokeninconfig.json. - Job token. The handle for one async command, described above.
- Snapshot token. Authorizes a snapshot download link.
- Invite token. Authorizes an account invitation in
wp_captaincore_invites.
The sites and environments tables also carry token columns that the CLI writes during a sync. Their meaning is not documented here.
Fleet mode
Multi-tenant operation. Turned on by system.captaincore_fleet set to "true" in config.json, and requested per command with the --fleet flag. In fleet mode the CLI loads every captain id and runs the command once per tenant, with CAPTAIN_ID set. captaincore config fetch also appends the captain id to path, rclone_backup, rclone_logs and rclone_snapshot so tenants do not share storage paths.
captaincore backup generate @all --fleet
Captain ID
The tenant identifier. Each entry in config.json after the system block carries a captain_id with its own keys, remotes and vars. The CLI’s --captain-id flag defaults to "1". captaincore config fetch-captain-ids lists them all. On the CLI server, data/config.json maps each captain id to the API token that identifies it.