Skip to content

Requirements ​

dqx checks all of this itself before it installs anything, and offers to install what is missing. This page is what it checks, so you can know in advance.

bash
dqx doctor      # in a project: the machine and the project

The machine ​

macOSpublished for both architectures — Apple Silicon and Intel
Memory16 GB or more. Four projects at once cost 4.4 GB on docker and 9.6 GB on DDEV, and the engine wants its own on top. Under 8 GB dqx says so plainly
Disk25 GB free or more. Images on a working machine come to about 59 GB
gitevery project is a clone — xcode-select --install
Homebrewnot required, but it is how dqx offers to install the rest

Linux and Windows builds exist and are tested; they are not published yet.

dqx never installs Homebrew for you

Its installer is a script fetched from the network and run with sudo — the one thing a tool should not do on your behalf before you have read it. Everything brew can install is offered as a command dqx runs after an explicit yes; everything else is printed for you to run.

Per backend ​

They share almost nothing, which is why this is checked per backend rather than once.

Docker Compose ​

why
gitevery project is a clone
dockerthe container engine
mkcertthis backend issues its own TLS certificates
bash
xcode-select --install
brew install --cask docker-desktop
brew install mkcert && mkcert -install

OrbStack instead of Docker Desktop is worth knowing about: same engine, 4–5× faster on raw file access, which is the thing a bind mount costs you on macOS. Measured on a real project that is worth 1.8× on a cold request and on composer; starting, stopping and a warm page are the same on both. Install it instead and there is nothing to configure — dqx reads which one provides docker from the docker context and starts and stops the right one. What moves and what does not.

mkcert -install is the step that is easy to miss: the binary without a root certificate has no CA, so every local site is a browser warning. dqx runs it for you if you let it.

DDEV ​

why
gitevery project is a clone
dockerDDEV drives the same engine
ddevthe backend itself
bash
xcode-select --install
brew install --cask docker-desktop
brew install ddev/ddev/ddev

No mkcert: DDEV issues its own certificates.

Lerd ​

why
gitevery project is a clone
podmanlerd runs its services on podman, not docker
lerdthe backend itself
bash
xcode-select --install
brew install podman
brew install lerd-env/lerd/lerd

The tap is spelled out on purpose: brew install lerd on a clean machine answers "No available formula", because lerd-env/lerd has not been tapped yet.

Podman and Docker Desktop are two virtual machines

Running both means two engines holding memory. dqx memory shows what each is costing.

Herd ​

why
gitevery project is a clone
herdthe backend itself
bash
xcode-select --install
brew install --cask herd

No container engine: Herd serves from the host. A database needs a Herd Pro seat, which is paid — without it, a project that needs one needs something else to provide it.

What they cannot share ​

Two backends cannot both own ports 80 and 443. dqx kill frees them machine-wide, and dqx kill --dry-run says what that would stop first.

When something is missing ​

✗ mkcert is not installed — the docker backend issues its own TLS certificates
  brew install mkcert
  Install it now? [y/N]

Every command is named before it runs. Nothing is installed behind your back, and a machine that cannot run the project fails in the first second rather than the tenth minute.

dqx v1.1.0