Requirements
shipped 1.0.0cwp shells out to these; it does not bundle them.
cwp doctor checks them all at once, and every failure
prints the command that fixes it.
| Tool | Why | Install |
|---|---|---|
| Node.js ≥ 22 | cwp’s own runtime | brew install node |
| A Docker runtime | DDEV needs one | brew install --cask orbstack, then start it |
| DDEV | the local WordPress container | brew install ddev/ddev/ddev |
| mkcert | local HTTPS | mkcert -install |
Then whatever your host needs:
| Provider | Also needs |
|---|---|
cloudron | the Cloudron CLI — npm i -g cloudron — and a login: cloudron login my.example.com |
ssh | an ssh key that reaches the host, and wp on its PATH |
local | nothing further |
cwp holds no ssh settings of its own. The ssh: value in .cwp.yml is
passed to ssh and rsync exactly as written, so a port, an identity file or a
jump host belong in ~/.ssh/config — where every other tool on your machine
already looks, and where the two cannot disagree.
WordPress core is never committed, so a freshly cloned project has none.
cwp doctor flags that before cwp pull runs into it;
the fix is ddev wp core download.