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
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 assista_cli-0.1.5.tar.gz.
File metadata
- Download URL: assista_cli-0.1.5.tar.gz
- Upload date:
- Size: 185.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a9a79553b22752ae3384526d227f982fbd87ccc0ee65db8f4a7fe7e297ba12fb
|
|
| MD5 |
d351bc32afffcb2945843f1a08e5a537
|
|
| BLAKE2b-256 |
9ef2f080fef9bc1614c16f65e9dce82167b06245da34d91a4b5cccd597e67b63
|
Provenance
The following attestation bundles were made for assista_cli-0.1.5.tar.gz:
Publisher:
release.yml on fadilameen/assista-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
assista_cli-0.1.5.tar.gz -
Subject digest:
a9a79553b22752ae3384526d227f982fbd87ccc0ee65db8f4a7fe7e297ba12fb - Sigstore transparency entry: 2583096141
- Sigstore integration time:
-
Permalink:
fadilameen/assista-cli@eef99998230642b80c4ed64a09e2b9057e4ecc64 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fadilameen
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eef99998230642b80c4ed64a09e2b9057e4ecc64 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file assista_cli-0.1.5-py3-none-any.whl.
File metadata
- Download URL: assista_cli-0.1.5-py3-none-any.whl
- Upload date:
- Size: 109.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b6a9a5894bd42f45aed8ee731222e391e6770574d82a1f23b8869f297ceb4a8
|
|
| MD5 |
02eb741e16ba4737b7108a2b24c16393
|
|
| BLAKE2b-256 |
c164897afd235821d005eb9f12be560965d9029bba98122f5e4daae9795602e3
|
Provenance
The following attestation bundles were made for assista_cli-0.1.5-py3-none-any.whl:
Publisher:
release.yml on fadilameen/assista-cli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
assista_cli-0.1.5-py3-none-any.whl -
Subject digest:
8b6a9a5894bd42f45aed8ee731222e391e6770574d82a1f23b8869f297ceb4a8 - Sigstore transparency entry: 2583096147
- Sigstore integration time:
-
Permalink:
fadilameen/assista-cli@eef99998230642b80c4ed64a09e2b9057e4ecc64 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fadilameen
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@eef99998230642b80c4ed64a09e2b9057e4ecc64 -
Trigger Event:
workflow_dispatch
-
Statement type: