AI-first Odoo development and CI tool with reusable database templates, powered by MCP
Project description
Oduflow
An AI-first Odoo development and CI tool, powered by reusable database templates. Oduflow provisions isolated, ephemeral Odoo environments on Docker — one per git branch — and exposes them to AI coding agents via MCP, creating a closed feedback loop that enables fully autonomous Odoo development.
Beyond Vibe Coding: Spec-Driven Development
Vibe coding — chatting with an AI and eyeballing the output — was the first wave. It works for prototypes, but breaks down on real ERP systems where a module must install cleanly, pass tests, and work against production data.
Spec-Driven Development (SDD) is the next step: you write a precise specification of what the module should do, and the AI agent autonomously implements how — because it has a closed feedback loop with the running system:
┌─────────────────────────────────────────────────────┐
│ AI Agent │
│ (Cursor, Cline, Amp, Claude, …) │
└──────┬──────────────────────────────▲────────────────┘
│ 1. Read spec │ 5. Read errors,
│ 2. Write code │ fix code,
│ 3. Install module via MCP │ retry
│ 4. Click-test UI via │
│ Playwright MCP │
┌──────▼──────────────────────────────┴────────────────┐
│ Oduflow (MCP Server) │
│ • install_odoo_modules → traceback or success │
│ • run_odoo_tests → test pass/fail with details │
│ • get_environment_logs → runtime errors │
│ • upgrade_odoo_modules → upgrade output │
├──────────────────────────────────────────────────────┤
│ + Playwright MCP / other tools │
│ • Navigate Odoo UI, click buttons, fill forms │
│ • Verify business logic end-to-end │
│ • Validate acceptance criteria from the spec │
└──────────────────────────────────────────────────────┘
The agent writes code, installs the module, reads the traceback, fixes the error, retries — and when it installs cleanly, it can open the browser via Playwright MCP to click through the UI, verify business flows, and validate acceptance criteria — all without human intervention.
| Vibe Coding | Spec-Driven Development | |
|---|---|---|
| Input | Conversational prompts | Formal specification with acceptance criteria |
| Feedback | Human eyeballs the code | System returns errors, test results, and UI state automatically |
| Iteration | Human copy-pastes errors back | Agent retries autonomously via MCP |
| Scope | Single files, prototypes | Full modules against real databases |
| Verification | "Looks right" | Module installs, tests pass, UI works on production data |
Quick Start
1. Install
pip install oduflow
2. Start the MCP server
oduflow
That's it. On first launch, Oduflow automatically creates a default config and initializes shared infrastructure (Docker network, PostgreSQL, team directories).
By default, the server starts in stdio mode (for local MCP clients). For remote/multi-user deployments:
oduflow --transport http
3. Connect an MCP client
stdio (local) — add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"oduflow": {
"command": "oduflow"
}
}
}
HTTP (remote) — point your MCP client to http://<host>:8000/mcp.
Documentation
For full documentation, visit oduflow.dev or see the docs/ folder:
- Installation & Configuration
- Use Cases & Workflows
- Template Management
- Environment Management
- Auxiliary Services
- Extra Addons Repositories
- Web Dashboard & REST API
- MCP Tools Reference
- CLI Reference
- Traefik Routing (Auto-HTTPS)
- Multi-Instance Support
- Authentication & Security
- Running in Docker
- Internals
- Licensing
Telemetry
Oduflow collects anonymous usage telemetry (first startup and environment creation events) to understand adoption. Only the event name, version, and a random instance ID are sent — no personal data or environment details. To opt out, add disable_telemetry = true to the [server] section of your oduflow.toml. See the documentation for details.
Licensing
Oduflow is source-available under the Polyform Noncommercial License 1.0.0. Commercial use requires a license — visit oduflow.dev.
Project details
Release history Release notifications | RSS feed
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 oduflow-1.20.1.tar.gz.
File metadata
- Download URL: oduflow-1.20.1.tar.gz
- Upload date:
- Size: 1.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b64fb6ab569b4e50dcd26885a78a1157ee663cac8c163e7e60fe0daf9118b785
|
|
| MD5 |
f9a5b3c6d94e341810549b327dd4bad9
|
|
| BLAKE2b-256 |
ecb7a15df366e7f290c97fa9376002e8a497ce7b772cc317a234c43dd89b5636
|
Provenance
The following attestation bundles were made for oduflow-1.20.1.tar.gz:
Publisher:
publish.yml on oduist/oduflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oduflow-1.20.1.tar.gz -
Subject digest:
b64fb6ab569b4e50dcd26885a78a1157ee663cac8c163e7e60fe0daf9118b785 - Sigstore transparency entry: 1080095383
- Sigstore integration time:
-
Permalink:
oduist/oduflow@a834ec94dd1eb019243d13a12dd24b64b0def034 -
Branch / Tag:
refs/tags/v.1.15.1 - Owner: https://github.com/oduist
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a834ec94dd1eb019243d13a12dd24b64b0def034 -
Trigger Event:
release
-
Statement type:
File details
Details for the file oduflow-1.20.1-py3-none-any.whl.
File metadata
- Download URL: oduflow-1.20.1-py3-none-any.whl
- Upload date:
- Size: 167.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a97a789a277a6ce3f9fea030d827800c3b8f1fdf13e6fc8474de0bb3517a670c
|
|
| MD5 |
85bc3bfa2882a765721fbe573f84d0ab
|
|
| BLAKE2b-256 |
66dfd0b76f60d11cb1d0d9ea3d47b33b1cb93a93f413467c48dc92b37aa4daf8
|
Provenance
The following attestation bundles were made for oduflow-1.20.1-py3-none-any.whl:
Publisher:
publish.yml on oduist/oduflow
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
oduflow-1.20.1-py3-none-any.whl -
Subject digest:
a97a789a277a6ce3f9fea030d827800c3b8f1fdf13e6fc8474de0bb3517a670c - Sigstore transparency entry: 1080095453
- Sigstore integration time:
-
Permalink:
oduist/oduflow@a834ec94dd1eb019243d13a12dd24b64b0def034 -
Branch / Tag:
refs/tags/v.1.15.1 - Owner: https://github.com/oduist
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a834ec94dd1eb019243d13a12dd24b64b0def034 -
Trigger Event:
release
-
Statement type: