Skip to content

Creating

Create from the host

Shell
wp rudel create --name=alpha --theme=twentytwentyfour

Rudel generates an ID from the name plus four hex characters (for example alpha-3be7), clones the host WordPress tables into a generated table prefix, copies the selected theme into the sandbox directory, and records the sandbox in the host WordPress database. The sandbox's siteurl and home keep the host URL.

If --theme is omitted, Rudel uses the host site's active theme. The theme must be installed on the host. A child theme brings its parent theme along.

Every table with the host table prefix is copied, including users and usermeta, except Rudel's own tables. In the current release that also includes the tables of sandboxes that already exist, so each new sandbox is larger than the last. See issue #3.

Create from another sandbox

Shell
wp rudel create --name=feature-b --clone-from=alpha-3be7

The new sandbox receives a copy of every table with the source sandbox's prefix, including the source's snapshot tables, and its theme. Snapshot directories are not copied, so those tables are unused in the new sandbox (issue #12). When the source theme directory is a Git repository, Rudel creates a linked worktree on the branch rudel/{new-id} instead of a plain copy. The source ID is recorded in the new record.

Lifecycle metadata

Sandboxes can carry metadata for cleanup and ownership:

Shell
wp rudel create \
  --name=feature-a \
  --owner=dennis \
  --labels=agent,qa \
  --purpose="Test checkout changes" \
  --ttl-days=7

Use --protected when automated cleanup must not remove the sandbox. See Policy.

Limits

Creation fails when the max_sandboxes or max_disk_mb settings are reached. Both default to 0, which means no limit. See Configuration.

Git checkouts

Shell
wp rudel create --name=feature-a --git=https://example.test/my-theme.git

Rudel creates the sandbox, clones the remote into themes/my-theme inside the sandbox directory and switches the checkout to the branch rudel/{id}. Add --type=plugin to clone into plugins/my-theme instead. A failed clone leaves the sandbox in place and prints a warning. See Git for what the sandbox serves from that checkout.

Directory layout

Text
wp-content/rudel-environments/{id}/
  themes/       copied theme, plus any Git checkout
  snapshots/    snapshot metadata and theme copies
  logs/ metadata/ tmp/
  wp-cli.yml
  debug.log     when debug logging is active