Odoo developer tooling for repeatable development, testing, CI, and coding-agent workflows.
oduit is an open-source toolset for working with Odoo projects more safely and more consistently. The ecosystem focuses on practical Odoo workflows: addon discovery, manifest and dependency inspection, module installation and updates, test execution, runtime introspection, and reproducible tool packaging.
| Project | Purpose |
|---|---|
oduit |
CLI and Python library for Odoo development, addon intelligence, environment diagnostics, structured automation, and coding-agent workflows. |
pytest-oduit |
pytest plugin for running Odoo tests with automatic Odoo setup and .oduit.toml integration. |
oduit.nix |
Nix flake packaging oduit, pytest-oduit, and related Odoo development tools for reproducible installations. |
oduit is the main CLI and Python utility layer.
It helps with common Odoo operations such as:
oduit doctor
oduit version
oduit list-addons
oduit list-installed-addons
oduit print-manifest sale
oduit list-depends sale
oduit install-order sale,purchase
oduit impact-of-update sale
oduit install sale
oduit update sale
oduit test --test-tags /saleIt also provides structured JSON-oriented commands for coding agents:
oduit agent context
oduit agent inspect-addon sale
oduit agent inspect-model res.partner
oduit agent inspect-field res.partner email --with-db
oduit agent validate-addon-change my_module --allow-mutation --update --discover-tests
oduit agent test-summary --module my_module --test-tags /my_moduleInstall it with:
pip install oduitOr run it without installing:
uvx oduitpytest-oduit connects pytest-based test execution with Odoo and oduit.
It can load .oduit.toml, resolve addon paths, detect the addon under test from the pytest path, initialize required modules, and work with pytest-xdist for distributed test execution.
Basic usage:
pip install pytest-oduit
pytest addons/sale
pytest addons/sale/tests/test_sale.py
pytest -n autoTypical use cases:
- run Odoo addon tests through pytest
- avoid manually passing the module name for every test path
- keep pytest configuration aligned with local
oduitproject configuration - run isolated test databases for parallel workers
oduit.nix provides reproducible Nix packaging for Odoo development tools.
Try the interactive launcher:
nix run github:oduit/oduit.nixRun a specific tool:
nix run github:oduit/oduit.nix#oduit -- --help
nix run github:oduit/oduit.nix#pytest-oduit -- --help
nix run github:oduit/oduit.nix#odoo-ls -- --helpThe flake includes packages such as oduit, pytest-oduit, pytest-odoo, pylint-odoo, odoo-ls, odoo-lsp, manifestoo, click-odoo, whool, and other Odoo-related utilities.
- Add a local
.oduit.tomlto your Odoo project. - Use
oduit doctorto validate the environment. - Use
oduit list-addons,print-manifest,list-depends, andinstall-orderto inspect the addon graph. - Use
oduit install,update, andtestfor day-to-day module work. - Use
pytest-oduitwhen pytest is the preferred test runner. - Use
oduit.nixwhen you want reproducible tool versions across machines or CI.
Example .oduit.toml:
[binaries]
python_bin = "./venv/bin/python"
odoo_bin = "./odoo/odoo-bin"
[odoo_params]
addons_path = "./addons,./custom_addons"
db_name = "project_dev"oduit is designed to expose Odoo context in a structured, low-noise way.
Prefer read-only inspection first:
oduit agent context
oduit agent resolve-config
oduit agent inspect-addon my_module
oduit agent get-model-fields res.partner --attributes string,type,required
oduit agent locate-model res.partner --module my_module
oduit agent list-addon-tests my_moduleThen run controlled validation:
oduit agent validate-addon-change my_module --allow-mutation --update --discover-tests
oduit agent test-summary --module my_module --test-tags /my_moduleThis makes Odoo projects easier to understand for both humans and automation without relying on large, ad hoc shell output.