Troubleshooting
This page lists common WPMoo failure states and the safest next action.
Run commands from the generated environment root unless the example starts with npx @wpmoo/toolkit.
Docker Is Missing Or Stopped
Symptoms:
- The create wizard stops before writing files.
./moo start,./moo status, or./moo doctorreports Docker unavailable.- The cockpit disables runtime actions.
Check:
docker version
docker compose versionNext steps:
- Install or start Docker.
- Open a new terminal if Docker was added to
PATH. - Run the WPMoo command again.
The create flow intentionally stops before writing files when required runtime tools are missing.
No Modules Found
Symptoms:
- Module actions are disabled.
statusreports zero module candidates.
Check:
$ ./moo status
$ npx @wpmoo/toolkit source list$ ./moo status
$ pnpm dlx @wpmoo/toolkit source list$ ./moo status
$ yarn dlx @wpmoo/toolkit source list$ ./moo status
$ bunx @wpmoo/toolkit source listFix:
$ npx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ npx @wpmoo/toolkit source sync$ pnpm dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ pnpm dlx @wpmoo/toolkit source sync$ yarn dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ yarn dlx @wpmoo/toolkit source sync$ bunx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ bunx @wpmoo/toolkit source syncOr create a starter module in an existing source repository:
$ npx @wpmoo/toolkit add-module \
--repo odoo-addons \
--module my_module \
--source-type private$ pnpm dlx @wpmoo/toolkit add-module \
--repo odoo-addons \
--module my_module \
--source-type private$ yarn dlx @wpmoo/toolkit add-module \
--repo odoo-addons \
--module my_module \
--source-type private$ bunx @wpmoo/toolkit add-module \
--repo odoo-addons \
--module my_module \
--source-type privateNo Source Repositories
Symptoms:
source listis empty.- The generated environment exists but
odoo/custom/srchas no source checkout.
Fix:
$ npx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ npx @wpmoo/toolkit source sync$ pnpm dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ pnpm dlx @wpmoo/toolkit source sync$ yarn dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ yarn dlx @wpmoo/toolkit source sync$ bunx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private
$ bunx @wpmoo/toolkit source syncUse --source-type oca or --source-type external when appropriate.
Dirty Module Deletion Is Refused
Symptoms:
remove-module --delete-filesrefuses to delete files.- The source repository has local changes.
Check:
git -C odoo/custom/src/private/<repo> status --shortFix:
- Commit, stash, or deliberately discard the source changes inside the source repository.
- Run removal again.
WPMoo refuses dirty deletion because module files are product source code.
Source Manifest Drift
Symptoms:
doctorreports source manifest, metadata, or.gitmodulesinconsistencies.source listdoes not match the actual submodules.
Preview:
$ npx @wpmoo/toolkit source sync --dry-run$ pnpm dlx @wpmoo/toolkit source sync --dry-run$ yarn dlx @wpmoo/toolkit source sync --dry-run$ bunx @wpmoo/toolkit source sync --dry-runFix:
$ npx @wpmoo/toolkit source sync
$ ./moo doctor$ pnpm dlx @wpmoo/toolkit source sync
$ ./moo doctor$ yarn dlx @wpmoo/toolkit source sync
$ ./moo doctor$ bunx @wpmoo/toolkit source sync
$ ./moo doctorPostgreSQL Diagnostics Are Unavailable
Symptoms:
doctor --postgresprints an advisory warning.doctor --json --postgresreports PostgreSQL diagnostics unavailable.
Check services:
./moo status
./moo start
./moo doctor --postgresPostgreSQL diagnostics are read-only and advisory. If the database is not reachable, core doctor checks still run.
Stage Or Production Guard Failure
Symptoms:
install,update,test,resetdb, orrestore-snapshotis refused inWPMOO_ENV=stageorWPMOO_ENV=prod.- The message names a required
WPMOO_ALLOW_*flag.
Start with previews:
./moo restore-snapshot --dry-run <snapshot-name> devel
./moo doctor
./moo doctor --postgresIntentional stage lifecycle command:
WPMOO_ENV=stage WPMOO_ALLOW_STAGE_LIFECYCLE=1 ./moo update my_module develIntentional production lifecycle command:
WPMOO_ENV=prod WPMOO_ALLOW_PROD_LIFECYCLE=1 ./moo test my_module --db develIntentional destructive command:
WPMOO_ENV=stage WPMOO_ALLOW_DESTRUCTIVE=1 ./moo resetdb develUse guard flags only when the command is intentional, reviewed, and has a rollback path.
Optional wpmoo Alias Fails
Use the supported scoped package in automation:
$ npx @wpmoo/toolkit --version$ pnpm dlx @wpmoo/toolkit --version$ yarn dlx @wpmoo/toolkit --version$ bunx @wpmoo/toolkit --versionThe compatibility packages @wpmoo/odoo and @wpmoo/odoo-dev redirect to the Toolkit package. The unscoped wpmoo alias is best-effort and should not be the only path in scripts.
