One declaration, a generated stack
A project declares its sites, services, database and PHP version in .dq/config.yml, and dqx generates the docker stack from it. Disposable, and identical for everyone.
How docker is generated
Declare a project once. dqx builds its stack, serves it beside every other project on trusted https, shows the whole machine in a dashboard, gives each task - or each agent - its own copy, and has Claude review its pull requests.

What the dashboard shows · Using it · Changing a project from it · Reviewing pull requests in it
dqx adopts and runs projects on DDEV, Lerd and Herd as well, and dqx switch moves a project between them without touching its repository. The dashboard, dqx clone and agent environments are docker only, so a project pinned elsewhere gets the CLI and not those.
| DDEV | when page speed hurts | Fastest page render of the four, and the slowest to start and stop - 8.4× docker's, felt hardest on projects with several sites |
| Lerd | on Linux | By far the lightest - 1.9 GB where DDEV takes 9.6 for the same projects - and the slowest to start them |
| Herd | fastest, least isolated | PHP on the host: nothing to beat it for one application, and no answer when two need different extensions |
Compare them side by side · How to switch
Written at Dolphiq for our own fleet and for partner teams using dqx. The examples are our own container images and domains, and both are public. Start here · If you are not at Dolphiq