Skip to main content
          ██████   ██████  ██       █████  ██████
         ██    ██ ██    ██ ██      ██   ██ ██   ██
         ██    ██ ██    ██ ██      ███████ ██████
         ██    ██ ██    ██ ██      ██   ██ ██   ██
          ██████   ██████  ███████ ██   ██ ██████

odoo-lab (oolab)

CLI para crear y gestionar workspaces de desarrollo Odoo multi-proyecto y multi-versión.

Python 3.10+ Odoo 15-19 License: LGPL-3

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.conf y docker-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.json con una entrada de debug por proyecto (F5 → arranca Odoo con su db-filter)
  • Gestión de módulos por CLI: module-install, module-update y open-shell con barra de progreso parseando logs de odoo-bin en vivo
  • 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, logs y status para gestionar los servicios del workspace
  • UX consistente: tema unificado, spinners con tiempo transcurrido, barras de progreso con ETA y logs coloreados por servicio
  • 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) coloreados por nivel
oolab logs -f Sigue los logs en tiempo real
oolab logs -n <N> Limita las últimas N líneas (default 50)

Módulos y base de datos

Comando Descripción
oolab module-install <db> <mods> Instala módulos en una DB. Acepta lista coma-separada (sale,purchase)
oolab module-update <db> <mods> Actualiza módulos en una DB. Acepta all para todos
oolab open-shell <db> Abre una shell ORM interactiva contra una DB
oolab reset-pwd <db> <password> Resetea la contraseña del usuario admin (base.user_admin)
oolab reset-pwd -d <db> -p <pwd> -l <login> Cambia también el login del admin

Atajos comunes: -d/--db, -m/--modules, -p/--password, -l/--login, -t/--timeout (default 1800s en module-install/module-update). Estos comandos resuelven automáticamente venv, addons-path y odoo.conf desde oolab.yaml, matchean el tenant por db_filter o name, y muestran progreso en vivo parseando los logs de odoo-bin.

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         # Una entrada de debug por tenant (F5)
│   ├── 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.

  1. Fork el repositorio
  2. Crea tu branch (git checkout -b feature/mi-feature)
  3. Commit tus cambios siguiendo Conventional Commits
  4. 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

Metadata

Release files for odoo-lab 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for odoo-lab 0.4.1
File Size Uploaded
odoo_lab-0.4.1.tar.gz 93.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for odoo-lab 0.4.1
File Interpreter ABI Platform
odoo_lab-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 150.1 kB

Release files / odoo_lab-0.4.1.tar.gz

Download URL odoo_lab-0.4.1.tar.gz
Size 93.5 kB
Tags Source
SHA-256 checksum
How to use checksums
b88fb1d7c64916f0dce2496e6e20ba62cb9f071be420e1622c8697fbfcff1113
BLAKE2b-256 checksum
How to use checksums
1da5f83d57c920f2458645e1565a2496ae025fb18f6eee0e4f420468040b9ba7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Release files / odoo_lab-0.4.1-py3-none-any.whl

Download URL odoo_lab-0.4.1-py3-none-any.whl
Size 56.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e98d5e231fb7eaa32738d49cd7a7de5681a6f896c5b2a2011f8e91d3c071d6e3
BLAKE2b-256 checksum
How to use checksums
0cb243a80c15965fd5e9fd945dc04034c539218304cf8e3cf07b5225c4a1f3e7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 2, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

0.4.2

2 release files

This release

0.4.1 This release

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page