Getting Started
WPMoo Toolkit creates a repeatable Odoo development environment for a product. It gives you a generated runtime repository, keeps addon source repositories separate, and gives daily work one command hub: ./moo.
Use this guide when you want to create your first environment and understand what happens next.
Before You Start
You need:
- Node.js 20.17 or newer.
- Docker and Docker Compose.
- Git.
- GitHub CLI only if you want WPMoo to create or check GitHub repositories for you.
The create flow checks the required local tools before writing files. If Docker or Git is not ready, WPMoo stops early and tells you what to fix.
Start In Three Commands
Run the setup wizard:
$ npx @wpmoo/toolkit$ pnpm dlx @wpmoo/toolkit$ yarn dlx @wpmoo/toolkit$ bunx @wpmoo/toolkitEnter the generated environment:
cd <product>_devOpen the cockpit:
./mooOutside a generated environment, npx @wpmoo/toolkit opens the create flow. Inside a generated environment, it opens the cockpit.
Interactive Setup
The wizard asks for:
- product slug
- Odoo version
- target environment folder
- local-only or GitHub-backed repository setup
- optional source repositories
The default target folder is:
./<product>_devChoose local-only setup when you want to get an environment running first and connect repositories later.
Scripted Setup
Use create when you want repeatable setup in a script or team onboarding guide:
$ npx @wpmoo/toolkit create \
--product my_product \
--odoo-version 19.0 \
--target ./my_product_dev \
--source-repo-url https://github.com/example-org/my_product.git$ pnpm dlx @wpmoo/toolkit create \
--product my_product \
--odoo-version 19.0 \
--target ./my_product_dev \
--source-repo-url https://github.com/example-org/my_product.git$ yarn dlx @wpmoo/toolkit create \
--product my_product \
--odoo-version 19.0 \
--target ./my_product_dev \
--source-repo-url https://github.com/example-org/my_product.git$ bunx @wpmoo/toolkit create \
--product my_product \
--odoo-version 19.0 \
--target ./my_product_dev \
--source-repo-url https://github.com/example-org/my_product.gitPreview the generated files without writing them:
$ npx @wpmoo/toolkit create \
--product my_product \
--source-repo-url https://github.com/example-org/my_product.git \
--dry-run$ pnpm dlx @wpmoo/toolkit create \
--product my_product \
--source-repo-url https://github.com/example-org/my_product.git \
--dry-run$ yarn dlx @wpmoo/toolkit create \
--product my_product \
--source-repo-url https://github.com/example-org/my_product.git \
--dry-run$ bunx @wpmoo/toolkit create \
--product my_product \
--source-repo-url https://github.com/example-org/my_product.git \
--dry-runAdd Sources Later
Generated environments can start empty. Add source repositories later from the cockpit or with a direct command:
$ npx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private$ pnpm dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private$ yarn dlx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type private$ bunx @wpmoo/toolkit add-repo \
--repo-url https://github.com/example-org/odoo-addons.git \
--source-type privateThen refresh the manifest:
$ npx @wpmoo/toolkit source sync$ pnpm dlx @wpmoo/toolkit source sync$ yarn dlx @wpmoo/toolkit source sync$ bunx @wpmoo/toolkit source syncSource repositories are grouped under:
odoo/custom/src/
|-- private/
|-- oca/
`-- external/Open the Source Layout guide for details.
First Daily Loop
After setup, start services and run the basic checks:
./moo start
./moo status
./moo doctorWhen a module exists:
./moo update my_module
./moo test my_moduleFor the interactive workflow, continue with the Cockpit Guide.
