CLI for multi-project, multi-version Odoo development workspaces
Project description
██████ ██████ ██ █████ ██████
██ ██ ██ ██ ██ ██ ██ ██ ██
██ ██ ██ ██ ██ ███████ ██████
██ ██ ██ ██ ██ ██ ██ ██ ██
██████ ██████ ███████ ██ ██ ██████
odoo-lab (oolab)
CLI para crear y gestionar workspaces de desarrollo Odoo multi-proyecto y multi-versión.
Desarrollado por IKU Solutions SAS | Autor: Yan Chirino <yan.chirino@iku.solutions>
¿Qué es oolab?
oolab automatiza la creación y gestión de entornos de desarrollo Odoo. Permite trabajar con múltiples proyectos de clientes en un solo workspace, compartiendo el framework Odoo (Community + Enterprise opcional), con configuraciones de debug individuales por proyecto en VSCode.
Resuelve problemas reales del día a día:
- Múltiples clientes con distintas versiones de Odoo (15, 16, 17, 18, 19)
- Proyectos con estructuras de addons no estándar (
vendor/OCA/,vendor/Cybrosys/,src/, etc.) - Incompatibilidades de paquetes Python en macOS arm64 (psycopg2, cryptography, lxml, gevent)
- Configuración manual repetitiva de
launch.json,odoo.confydocker-compose
Características principales
- Multi-proyecto: gestiona múltiples clientes/tenants en un solo workspace
- Multi-versión: soporte para Odoo 15, 16, 17, 18 y 19 con venvs separados por versión
- Enterprise ready: integra Odoo Enterprise via git o copia local (requiere licencia propia)
- VSCode integrado: genera
launch.jsoncon configs de debug por proyecto (run, shell, install, update) - Auto-detección de addons: escanea la estructura del proyecto y detecta todos los directorios con módulos Odoo automáticamente, sin importar si están en
src/,vendor/OCA/,vendor/Cybrosys/u otra estructura - Entornos aislados: venvs por versión de Odoo (
.venv-v15,.venv-v19) - Dependencias robustas: instalación con
uv+ compatibilidad automática con macOS arm64 + fallback paquete por paquete - Comando repair: repara workspaces con paquetes Python rotos sin tener que reinicializar
- Docker integrado: comandos
start,stop,logsystatuspara gestionar los servicios del workspace - Interactivo: wizard paso a paso con spinners y feedback visual en tiempo real
- Multi-plataforma: compatible con macOS, Linux y Windows
Sobre Odoo Enterprise
oolab permite configurar proyectos que usan Odoo Enterprise, pero no incluye ni distribuye los módulos Enterprise. Para usarlos necesitas:
- Tener una suscripción activa de Odoo Enterprise o ser partner autorizado de Odoo.
- Acceso al repositorio privado
github.com/odoo/enterprise(Odoo otorga acceso con la suscripción), o bien tener una copia local de los módulos Enterprise en tu máquina.
Importante: Los módulos Enterprise están protegidos por la licencia Odoo Enterprise Edition. Consulta los términos de licencia de Odoo antes de usarlos.
Instalación
Requisitos previos
- Python >= 3.10
- git
- Docker + Docker Compose v2
- uv (se instala automáticamente si no existe)
Instalar uv (si no lo tienes)
macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Instalar oolab
uv tool install odoo-lab --python 3.11
O con pipx:
pipx install odoo-lab
Instalar desde el código fuente
git clone https://github.com/ikusolutions/odoo-lab.git
cd odoo-lab
uv tool install -e . --python 3.11
Verificar
oolab --version
Quick Start
# 1. Navega a donde quieres crear el workspace
cd ~/Projects
# 2. Crea el workspace (wizard interactivo)
oolab init
# 3. Entra al workspace creado
cd odoo-launchpad
# 4. Agrega proyectos de clientes
oolab add
# 5. Levanta los servicios y abre en VSCode
oolab start
code .
# Presiona F5 para debuguear
Comandos
Workspace
| Comando | Descripción |
|---|---|
oolab init |
Crea un workspace odoo-launchpad/ con wizard interactivo: clona Odoo, Enterprise (opcional) y configura el entorno |
oolab add [nombre] |
Agrega un proyecto de cliente: clona un repo existente o crea uno nuevo con scaffold OCA |
oolab remove <nombre> |
Elimina un proyecto del workspace y lo quita de oolab.yaml |
oolab list |
Lista los proyectos con su versión de Odoo, branch y estado |
oolab generate |
Regenera odoo.conf, docker-compose, launch.json y demás configs desde oolab.yaml |
oolab repair |
Repara el workspace reinstalando paquetes core (psycopg2, lxml, Pillow) |
oolab repair --full |
Repara reinstalando también todos los requirements.txt |
Servicios Docker
| Comando | Descripción |
|---|---|
oolab start |
Levanta PostgreSQL y Nginx vía Docker Compose |
oolab start --build |
Levanta reconstruyendo imágenes Docker |
oolab stop |
Detiene los servicios Docker |
oolab status |
Muestra el estado: servicios activos, branches y tenants |
oolab logs [servicio] |
Muestra logs de los servicios (db, nginx) |
oolab logs -f |
Sigue los logs en tiempo real |
Base de datos
| Comando | Descripción |
|---|---|
oolab reset-pwd <db> <password> |
Resetea la contraseña del usuario admin en una base de datos local |
oolab reset-pwd <db> <password> --login <login> |
Resetea la contraseña del usuario especificado |
Diagnóstico
| Comando | Descripción |
|---|---|
oolab doctor |
Verifica dependencias del sistema (git, Docker, uv, Python) |
oolab --version |
Muestra la versión del CLI |
oolab --help |
Muestra la ayuda general |
oolab <comando> --help |
Muestra la ayuda de un comando específico |
Estructura del workspace
odoo-launchpad/
├── odoo/ # Odoo Community (compartido entre proyectos)
├── enterprise/ # Enterprise addons (opcional, compartido)
├── tenants/
│ ├── cliente-a/ # Proyecto estándar
│ │ └── addons/
│ └── cliente-b/ # Proyecto con estructura vendor
│ ├── src/
│ └── vendor/
│ ├── OCA/
│ └── Cybrosys/
├── config/
│ └── odoo/odoo.conf # Configuración central de Odoo
├── docker/
│ └── docker-compose.yaml
├── .vscode/
│ ├── launch.json # Configs de debug: por tenant + Shell + Update + Install
│ ├── settings.json
│ └── tasks.json
├── .venv-v15/ # Venv para Odoo 15 (Python 3.10)
├── .venv-v19/ # Venv para Odoo 19 (Python 3.11)
├── .env
└── oolab.yaml # Fuente de verdad del workspace
Auto-detección de addons
oolab escanea automáticamente la estructura del proyecto para encontrar todos los directorios con módulos Odoo (identificados por __manifest__.py o __openerp__.py), hasta 3 niveles de profundidad. Esto cubre estructuras como:
tenants/proyecto/src/ → detectado
tenants/proyecto/vendor/OCA/ → detectado
tenants/proyecto/vendor/Cybrosys/ → detectado
tenants/proyecto/addons/ → detectado
El launch.json generado incluye todos los paths detectados automáticamente. Sin configuración manual.
oolab.yaml
Archivo central de configuración del workspace. Se genera en oolab init y se actualiza con oolab add / oolab remove.
name: odoo-launchpad
python_version: "3.11"
postgres_version: "16"
postgres_port: 5432
postgres_user: odoo
postgres_password: odoo
enterprise_enabled: false
nginx_enabled: true
nginx_http_port: 80
tenants:
- name: cliente-a
display_name: "Cliente A"
url: git@github.com:org/cliente-a.git
branch: "19.0"
db_filter: cliente-a
- name: assenza
display_name: "Assenza"
url: git@github.com:org/assenza.git
branch: "15.0"
db_filter: assenza
enterprise: false
Versiones soportadas
| Versión Odoo | Python | PostgreSQL mínimo |
|---|---|---|
| 15 | 3.10 | 14 |
| 16 | 3.10 | 16 |
| 17 | 3.10 | 16 |
| 18 | 3.11 | 16 |
| 19 | 3.11 | 16 |
Cada versión usa un venv separado (.venv-v15, .venv-v16, etc.). Los proyectos con la misma versión comparten el venv.
Contribuir
Las contribuciones son bienvenidas. Este es un proyecto open source mantenido por IKU Solutions SAS.
- Fork el repositorio
- Crea tu branch (
git checkout -b feature/mi-feature) - Commit tus cambios siguiendo Conventional Commits
- Abre un Pull Request
Reporta bugs en issues.
Licencia
Este proyecto está licenciado bajo LGPL-3.0-or-later.
Copyright (c) 2026 IKU Solutions SAS
Autor: Yan Chirino <yan.chirino@iku.solutions>
Website: https://www.iku.solutions
Hecho con Python + Typer + Rich por IKU Solutions
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file odoo_lab-0.3.4.tar.gz.
File metadata
- Download URL: odoo_lab-0.3.4.tar.gz
- Upload date:
- Size: 83.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e907e2dcf2e31b2ecd560e0d84807f2b6def0488f70b572a8f03c38bedc6750
|
|
| MD5 |
9216a10a5943567dc78a694ee6032bb5
|
|
| BLAKE2b-256 |
b59555b2423b720ec9d0d31e47ff0aca1e8eba2e6ecd07b9b3783e24a283434d
|
Provenance
The following attestation bundles were made for odoo_lab-0.3.4.tar.gz:
Publisher:
publish.yml on ikusolutions/odoo-lab
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_lab-0.3.4.tar.gz -
Subject digest:
6e907e2dcf2e31b2ecd560e0d84807f2b6def0488f70b572a8f03c38bedc6750 - Sigstore transparency entry: 1257468522
- Sigstore integration time:
-
Permalink:
ikusolutions/odoo-lab@4df1a85aba783a71b72310128d5f75d8d3aeb5c5 -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/ikusolutions
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4df1a85aba783a71b72310128d5f75d8d3aeb5c5 -
Trigger Event:
release
-
Statement type:
File details
Details for the file odoo_lab-0.3.4-py3-none-any.whl.
File metadata
- Download URL: odoo_lab-0.3.4-py3-none-any.whl
- Upload date:
- Size: 43.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b9521fc851548d7d7fbc352365d07acf76a37be70da1421688922f2522806276
|
|
| MD5 |
ed95a27b1461c5a6725a67233949fb80
|
|
| BLAKE2b-256 |
9f15d548ce9186c047cc4a6a7f0397ba5dff66777ea74c94543692eab4ca490e
|
Provenance
The following attestation bundles were made for odoo_lab-0.3.4-py3-none-any.whl:
Publisher:
publish.yml on ikusolutions/odoo-lab
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
odoo_lab-0.3.4-py3-none-any.whl -
Subject digest:
b9521fc851548d7d7fbc352365d07acf76a37be70da1421688922f2522806276 - Sigstore transparency entry: 1257468653
- Sigstore integration time:
-
Permalink:
ikusolutions/odoo-lab@4df1a85aba783a71b72310128d5f75d8d3aeb5c5 -
Branch / Tag:
refs/tags/v0.3.4 - Owner: https://github.com/ikusolutions
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4df1a85aba783a71b72310128d5f75d8d3aeb5c5 -
Trigger Event:
release
-
Statement type: