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.3.tar.gz (157.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.3-py3-none-any.whl (107.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: assista_cli-0.1.3.tar.gz
  • Upload date:
  • Size: 157.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.3.tar.gz
Algorithm Hash digest
SHA256 8ca204cddba17799100d73e2cb1532648234ac1cfe697b4718fd9962223834ea
MD5 0512b2eabcf9fe766da0e77534e10ca9
BLAKE2b-256 62f1ed447864610a24ba189ee5fa2e7b60801d0249ad8161a739025867cc2127

See more details on using hashes here.

File details

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

File metadata

  • Download URL: assista_cli-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 107.6 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 300c71de15171aa55ff3a3fc6c6f90c384af0fd12c7cf281db5fe944fac1d5d2
MD5 16ce5824248e687d108f2fa40c9acf2c
BLAKE2b-256 8e4b19c886f787fb2a8dc75a86266ebdeb4391f29c2528d420606dc38a7ba453

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

This release

0.1.3 This release

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