Skip to content

Commands ​

Every command works from anywhere inside a project: dqx walks up to find .dq/config.yml, and the directory you are standing in picks the site.

dqx <command> --help prints the flags for any of them.

Every command ​

dqx has 55 commands. dqx <command> --help prints the flags for any of them.

commandwhat it does
dqx adoptBring any project — v1, v2, v3, or no config at all — into the v4 shape
dqx artisanRun php artisan in a site
dqx authReport, import or set the credentials the install pipeline needs
dqx changesRecord a change for the next release, or list what is pending
dqx cleanStop this project and delete the data the backend can recreate
dqx composerRun composer in a site
dqx configRead the project configuration
dqx dbOpen this project's database in your client, or print the connection URL
dqx db:exportExport the database
dqx db:importImport a database dump
dqx devRun the dev server a proxied site needs (proxyCommand in .dq/config.yml)
dqx docsOpen the documentation in your browser
dqx doctorReport what is and is not working here
dqx domainsShow this project's domains, and what they become under another TLD
dqx downStop the environment
dqx execRun a command in a site
dqx generatePrint the backend config this project would get
dqx healthchecksFind compose healthchecks that can never pass, and fix them
dqx imagesFind data-owning services on a floating image tag, and pin them
dqx infoEvery URL, port and connection this project has — or every running project
dqx initSet up a new project: .dq/config.yml v4, docker-compose.yml and docker confs
dqx installSet the project up from nothing
dqx killStop every backend and container on this machine, and free ports 80 and 443
dqx layoutWhere the code sits: single (the app repository is the project) or multi
dqx linkRegister this project with the backend, without installing it
dqx listEvery project registered here, grouped by project
dqx logsTail logs
dqx mcpServe dqx over the Model Context Protocol, for coding agents
dqx memoryWhat each project is using, and what the VM holds beyond that
dqx migrateRewrite .dq/config.yml in the v4 shape, after showing what changes
dqx npmRun npm in a site
dqx openOpen a site in the browser
dqx phpRun php in a site
dqx releaseRoll the pending changes into a version, a changelog entry and package.json
dqx repairCheck the whole installation, and fix what dqx can
dqx resolverHow local domains resolve on this machine
dqx restorePut a snapshot back
dqx router:downStop the shared reverse proxy and give 80/443 back
dqx router:statusWhether the router runs, and who holds 80/443 if it does not
dqx router:upStart the shared reverse proxy, so every project serves at once on 80/443
dqx runRun a command this project declares in commands:
dqx scanRead what each site needs: packages, and the node version its image ships
dqx self-updateUpdate this binary, or say how it should be updated
dqx shellOpen a shell in a site
dqx sitesList the project's sites
dqx snapshotSave the database and storage this project holds
dqx switchMove this project to another backend, database and URLs included
dqx syncWrite the backend config for this project from .dq/config.yml
dqx testRun php artisan test in a site
dqx upStart the environment
dqx updatePull the container images this project uses
dqx update-imagesRefresh the house container images this machine already has
dqx verifyRequest every domain this project declares, and say what answered
dqx versionPrint the version, or check it against a minimum
dqx xdebugToggle Xdebug for yourself — off by default, never committed

Generated

This table is read from the CLI itself on every docs build, so it lists what actually ships. The sections below cover the ones worth more than a line.

Running a project ​

up ​

Start every site of the project. Brings up the shared proxy if it is not running, reissues the certificate when it does not cover a domain yet, and frees a port another project is holding — naming what it stopped.

down ​

Stop this project.

kill ​

Stop every project on every backend and free ports 80 and 443. Needs no project — the reason to run it is almost never the project you are standing in, it is that another backend is holding the ports.

The runtimes themselves keep running unless you say otherwise:

dqx killevery project's containers, on every backend; ports freed
dqx kill --allthat, and the runtimes, giving their memory back
dqx kill --mineleave containers that belong to no project of ours

dqx kill --dry-run lists what it would stop and stops nothing — worth it before the one command that takes away work somebody else may be doing.

dqx down is the project-scoped one.

update ​

Pull the images this project declares, rather than a hardcoded list.

clean ​

Remove the environment and the data directories a bind-mounted database leaves behind, which down does not touch. Asks first.

Working inside a project ​

shell ​

A shell in the site, in the directory you are standing in. Aliased as bash.

exec ​

dqx exec -- <command> — one command in the site.

php · artisan · composer · npm · test ​

The tool, in the right container and directory, with the project's credentials available.

run ​

dqx run <name> — a command the project declared under commands: in its config.

open ​

The site, in your browser.

logs ​

dqx logs [service] — tail logs.

xdebug ​

dqx xdebug on|off, per developer and gitignored. dqx up re-applies your choice.

The database ​

db ​

Open a client. dqx db --url prints today's URL for a GUI tool — the published port changes on every up, so this is the only reliable source.

db:import · db:export ​

dqx db:import <file>, dqx db:export [file].

snapshot · restore ​

The database and the storage directories, which is what a project needs to actually be restorable.

Seeing what is going on ​

info ​

Every URL, port and connection this project has. --json for a script or an agent.

list ​

Every project on the machine, on every backend, one row per checkout with all of its domains. --json supported.

doctor ​

What is broken here, with a severity and a remedy for each finding. --json supported.

verify ​

Ask every declared domain what it actually answers. --json supported.

sites ​

The domains this project serves.

memory ​

What each project is costing, and what the VM holds beyond that.

scan ​

What the project's own files say about it — declared versus detected versions, and what disagrees.

Setting a project up ​

init ​

Create a project. Flags for the simple case, --from <file> for the whole surface, --scaffold to create the application too. See creating projects.

adopt ​

Read a project that already exists and write the declaration for it. Prints what it would write and changes nothing; --write applies it.

install ​

Set the project up from nothing: clone, generate, start, install, run the project's own steps. --only <steps> re-runs one part.

sync ​

Regenerate the environment from the declaration, keeping anything hand-edited. Reports what it would remove and what disagrees; it never rewrites the declaration itself.

switch ​

Change backend. Refuses, with the reason, when the project needs something the target cannot give.

layout ​

dqx layout [single|multi] — where the code sits. --dry-run first; see layouts.

Register with the backend, repair a backend's own state, migrate an older config, and rename domains across a project's files.

The tool itself ​

docs ​

dqx docs [topic] — this documentation, served locally. dqx docs ssl jumps to the page.

mcp ​

Run the MCP server for an AI agent. See AI tooling.

config ​

dqx config get <key> reads the project's configuration; dqx config machine reads and writes this machine's settings.

auth ​

Report, import or set the credentials composer needs. Credentials are discovered, never stored by dqx.

version · self-update ​

What this is, and replacing it with the current release.

changes · release ​

Record a change for the next release, and roll the pending changes into a version.

dqx v1.1.0