gOdoo
Odoo source workspaces, runtime lifecycle, and developer tooling.
From shared Git worktrees to database restores, native migrations, and a running Odoo instance.
gOdoo is a Python CLI for teams developing and operating Odoo projects. It manages manifest-selected sources, prepares databases with their matching filestores, and runs Odoo against that prepared state.
Git, workspace commands, and editor configuration run on the host. Runtime commands run in the selected Python environment. Your downstream project owns Docker, system packages, runtime users, service ordering, and debugger startup.
What you can do
| Area | Capabilities |
|---|---|
| Source workspaces | Select Odoo and addon repositories through a manifest; share managed Git worktrees and generate VS Code configuration. |
| Runtime lifecycle | Initialize, reconcile, inspect, and launch Odoo with explicit commands and dependency preflight. |
| Database & filestore | Back up and restore matching pairs, load fixed datasets, overlay upgraded archives, and reuse development reset baselines. |
| Migrations & hooks | Use native Odoo migrations for versioned repairs and phase-based hooks for module requests and environment setup. |
| Dependencies & builds | Plan addon Python requirements from source manifests and install them into an explicit interpreter. |
| Daily development | Run Odoo tests, open shells, execute scripts, and manage a running instance through RPC. |
Runtime commands require Odoo 16 or newer. CI checks gOdoo on Python 3.11 and 3.12; the example Odoo 19 stack uses PostgreSQL 18 with pgvector.
Quick start
Run the example development stack
Install Git, uv, Python 3.11 or newer, Make, Docker, and Docker Compose. Then clone the development branch and install the host tools:
git clone https://github.com/OpenJKSoftware/gOdoo.git
cd gOdoo
make setup
cp .env.sample .env
Edit .env before continuing:
- Set
GODOO_SOURCES_ROOTto an absolute directory outside this checkout, accessible to Docker. - Set the database credentials and target values for your environment.
Review odoo_manifest.yml to select Odoo and any third-party sources, then run:
make sync # Synchronize managed source worktrees.
make workspace # Generate the host editor workspace.
make dev # Build and start the example Compose stack.
make sync changes managed worktrees and may reset verified worktrees. make workspace generates editor configuration;
make dev validates source paths on the host before starting Compose.
The example stack uses Nginx for HTTP and file delivery. See downstream runtime setup for image, networking, restore dataset mounts, and production build configuration.
Use gOdoo in your own project
Install the CLI from the development branch:
uv tool install "git+https://github.com/OpenJKSoftware/gOdoo.git@main"
On Linux, the PostgreSQL Python driver also requires PostgreSQL development headers and a C compiler. Your runtime environment needs the Odoo sources, Python dependencies, PostgreSQL tools, and system packages described in the downstream guide.
Run workspace commands from your project's directory, with its own .env and odoo_manifest.yml. Run runtime commands
in the Python environment that contains Odoo; gOdoo uses VIRTUAL_ENV, otherwise the project's .venv. Follow the
source workspace guide to configure sources and the editor.
Commands
| Command | Purpose |
|---|---|
godoo workspace |
Synchronize, validate, inspect storage, and materialize selected sources; generate editor files. |
godoo runtime |
Initialize and launch Odoo, report runtime status, plan dependencies, and open shells. |
godoo db |
Back up, restore, reset, and inspect databases and their filestores. |
godoo test |
Run Odoo tests, load test data, and find changed modules. |
godoo rpc |
Manage modules, configuration parameters, imports, and translations over RPC. |
godoo upgrade |
Forward arguments to Odoo's official upgrade client. |
godoo run |
Run odoo-bin with explicit arguments in the selected runtime environment. |
Commands read the project .env. Explicit CLI values → exported environment → project .env is the configuration
precedence. Use godoo --help or godoo <command> --help for the full reference.
Prepare once, then launch
Initialization prepares the database and matching filestore, checks dependencies, and runs selected module updates and hooks. Launch starts the prepared runtime. In Compose, the app should depend on the init service completing successfully.
# Run in a configured runtime environment with other Odoo writers stopped.
godoo runtime init && godoo runtime launch
Use godoo runtime init --if-needed for startup that skips reconciliation when the runtime is already ready. For
deployments applying module updates or hooks, use explicit initialization. Inspect state without changing it:
godoo runtime status --json
See the lifecycle guide for dataset selection, demo mode, restore progress, reset baselines, and recovery. Use native migrations and hooks for versioned repairs and recurring environment policy.
Documentation
| Guide | Start here when you need to… |
|---|---|
| Source workspaces | Select shared sources, generate editor configuration, or configure host development. |
| Runtime lifecycle | Initialize, restore, upgrade, reset, or recover a database and filestore. |
| Lifecycle hooks | Request modules, write reconciliation hooks, or integrate native Odoo migrations. |
| Downstream runtime setup | Configure Docker images, Compose services, PostgreSQL, Nginx, and dataset storage. |
| Repository architecture | Find the code and tests responsible for a behavior. |
Migrating from earlier versions
The host workspace and explicit runtime commands replace the former Dev Container workflow. Downstream projects now own their Dockerfile and Compose configuration.
Legacy command reference
| Previous command or surface | Current equivalent |
|---|---|
| Repository Dev Container startup | Downstream-owned Dockerfile and Compose |
godoo source get |
godoo workspace sync, then godoo runtime init |
godoo source sync-conf |
godoo runtime init |
godoo deployment-init, ensure-runtime, bootstrap |
godoo runtime init |
godoo reconcile-runtime |
godoo runtime init --update or --install |
godoo launch, shell, shell-script |
Corresponding godoo runtime command |
godoo reset |
godoo db reset |
| Generated source Compose or provenance files | godoo workspace configure and live inspection |
Other godoo source inspection and dependency helpers are retired. Inspect checked-out worktrees directly; runtime
preflight checks Python dependencies. Use native Odoo migrations and lifecycle hooks for upgrade work.
Contributing
Bug reports and focused pull requests are welcome. Open an issue with the gOdoo revision, Odoo version, command, and relevant diagnostics so the behavior can be reproduced.
For development, follow the source checkout steps above. Install the pinned text formatter with npm ci, then open
godoo.code-workspace so the repository's editor settings apply. See repository architecture
for code ownership and test layout.
Run the host quality checks and repository tests:
make lint
make test
Real Odoo/PostgreSQL integration tests use a prepared runtime environment and the separate make test-odoo-integration
target. See runtime lifecycle and downstream setup before running them.
License & acknowledgements
gOdoo is licensed under the GNU Lesser General Public License v3.0.
Made possible by WEMPE Elektronic GmbH.
Metadata
Release files for gOdoo-cli 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| godoo_cli-1.0.2.tar.gz | 349.3 kB | Without provenance | Details for godoo_cli-1.0.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| godoo_cli-1.0.2-py3-none-any.whl | Python 3 | none | any | Details for godoo_cli-1.0.2-py3-none-any.whl |
Total release size: 491.0 kB
Release files / godoo_cli-1.0.2.tar.gz
| Download URL | godoo_cli-1.0.2.tar.gz |
|---|---|
| Size | 349.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5eaead602ff06243970e7d7b9fbe98cebe6fc38d9d68195e005f72f612c0f26c
|
|
BLAKE2b-256 checksum How to use checksums |
971a425c6d36861ad5fd8f7026b9ce1c52957d9cc9a83a038d4989db03826f54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":true,"cpu":"x86_64","distro":{"id":"resolute","libc":{"lib":"glibc","version":"2.43"},"name":"Ubuntu","version":"26.04"},"implementation":{"name":"CPython","version":"3.12.3"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.12.3","system":{"name":"Linux","release":"7.0.0-1017-azure"}} HTTPX2/2.13.0
|
Release files / godoo_cli-1.0.2-py3-none-any.whl
| Download URL | godoo_cli-1.0.2-py3-none-any.whl |
|---|---|
| Size | 141.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
160ed5b99021d935e51893ba1c6b0df45aefa42443071d951e339f7d2a77cb50
|
|
BLAKE2b-256 checksum How to use checksums |
31fb1e3b155a2a142121ea86c74b6c2da7b9791a860c9345fbb05e834261bcee
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
Hatch/1.18.1 {"ci":true,"cpu":"x86_64","distro":{"id":"resolute","libc":{"lib":"glibc","version":"2.43"},"name":"Ubuntu","version":"26.04"},"implementation":{"name":"CPython","version":"3.12.3"},"installer":{"name":"hatch","version":"1.18.1"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.12.3","system":{"name":"Linux","release":"7.0.0-1017-azure"}} HTTPX2/2.13.0
|
Security for gOdoo-cli 1.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.