Skip to main content

Assista CLI

Developer tooling for Odoo: environment diagnostics, project scaffolding, and module generation.

curl -LsSf https://assista.dev/install.sh | sh

One command. No prerequisites — not even Python; it provisions its own runtime and never touches your system packages, so no sudo and no externally-managed-environment errors.

cd ~/my-odoo-project
assista init
assista doctor
Other ways to install
uv tool install assista-cli      # if you already have uv
pipx install assista-cli         # if you already have pipx

Plain pip install is blocked on Debian/Ubuntu 24.04+ and other distros that implement PEP 668. The installer above sidesteps that by using its own virtual environment.

Supports Odoo 12.0 – 19.0. Default target: 19.0.


Why

Odoo tells you it crashed. It does not tell you that your psycopg2 was built for python 3.11 while your venv is 3.12, that your PostgreSQL role lacks CREATEDB, or that your wkhtmltopdf is the unpatched build that silently drops report footers.

assista doctor answers "will my project run, and if not, exactly why" — and every failure it reports ends in a command you can run.

Commands

assista doctor                      # diagnose everything, 38 checks across 4 tiers
assista doctor --db mydb            # include per-database checks
assista doctor --format json        # versioned contract, for CI and editors
assista doctor --explain <check-id> # what a check means

assista init                        # adopt an existing checkout
assista create myproject            # new project: source + venv + odoo.conf

assista env resolve -V 19.0 -p 3.12 # exact dependencies Odoo declares
assista env create -V 13.0          # per-version venv, correct python
assista env sync                    # reconcile against Odoo's pins
assista env list / remove

assista source pull -V 19.0         # shallow clone, shared between projects
assista source list / update

assista module create sale_ext      # models, views, security, tests, i18n, README
assista module create --owl         # with an OWL component
assista module install / upgrade

assista run                         # start the server
assista run --watch --db mydb       # restart on .py, upgrade one module on .xml
assista shell                       # interactive ORM shell

assista db list                     # databases with size and Odoo version
assista db dump / duplicate / drop / neutralize

assista test sale_ext --db mydb     # run module tests
assista doctor --compare prod.json  # diff two environments
assista --install-completion        # shell completion

Note: odoo-bin db only exists from Odoo 16.0. On 12.0-15.0 the db commands refuse with the version that added them and what to use instead, rather than passing through a raw odoo-bin usage error.

What makes it useful

Dependency expectations are derived, never hand-maintained. Odoo's own requirements.txt encodes python-conditional pins as PEP 508 markers. assista evaluates them against your interpreter, so it knows Odoo 19 wants werkzeug==2.0.2 on python 3.10 and 3.0.1 on 3.12 — and stays correct through future Odoo releases with no updates from us.

Checks nothing else performs:

Check Why it matters
wkhtmltopdf patched-qt build Unpatched silently drops headers, footers and logos. No error is raised.
Wheel ABI tags A cp311 wheel in a 3.12 venv at the right version passes a version comparison silently.
Import smoke tests python-ldap installs fine and fails at import when libldap.so is missing.
Duplicate module names Odoo loads whichever addons path comes first; editing the other copy does nothing.
Multiple PostgreSQL clusters Connecting to the wrong one reports a database as missing when it exists.
Schema vs source version The direct cause of "column does not exist" after adding a field.

Version-correct scaffolding. Generated modules use <list> from 17.0, and group_ids / privilege_id from 19.0 — using the old names raises at install. Every generated module is validated in CI: python compiles, XML parses, the manifest is a valid literal, and every declared file exists.

Safe by default. db drop requires typing the database name; --yes is not accepted. Generated odoo.conf gets a random master password at mode 600 and binds to localhost. --dev warns when combined with a non-local bind, because a traceback then exposes an interactive python console.

Version support

Tier Versions Meaning
First-class 17.0, 18.0, 19.0 Odoo-supported. Exercised in CI.
Supported 12.0 – 16.0 Environment, source, run and db work.
Out of scope ≤ 11.0 Needs python 3.7 or 2.7, which cannot be provisioned.

Requirements

  • Python 3.10+ (the CLI runs in its own isolated environment)
  • uv for environment provisioning
  • PostgreSQL client (psql, pg_dump) for database work

Development

uv venv --python 3.12 && uv pip install -e ".[dev]"
uv run pytest -q

Licence

LGPL-3.0-or-later

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

assista_cli-0.1.4.tar.gz (158.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

assista_cli-0.1.4-py3-none-any.whl (108.4 kB view details)

Uploaded Python 3

File details

Details for the file assista_cli-0.1.4.tar.gz.

File metadata

  • Download URL: assista_cli-0.1.4.tar.gz
  • Upload date:
  • Size: 158.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for assista_cli-0.1.4.tar.gz
Algorithm Hash digest
SHA256 6fada1f229f4541b3a50764406a5519afa96158e4b71cf7a6e1dc8e1124adb00
MD5 1c4ca2548c4f50c952baed044328a077
BLAKE2b-256 b3d2e4a8639d03f9a6d8fd96946a2e6e03fffe4750fb0de60f96b2c73dedc817

See more details on using hashes here.

File details

Details for the file assista_cli-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: assista_cli-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 108.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.13

File hashes

Hashes for assista_cli-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 833fc3994344dd70849830a7fa7a6a727fc67347dffa4ca57cb56183221d22e5
MD5 cb17f879737f74d75e649bb211c8004e
BLAKE2b-256 185de2ea5de760472c0dd6d5a52680f6f5e06acf6ee71ca8731fd2a7d683be52

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.6

2 files

0.1.5

2 files

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 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