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. connect_as_user closes the last gap: it mints a passwordless Odoo session and hands back the cookie, so Playwright lands past /web/login as any role (admin, sales manager, portal) — no credentials to type, no login form.
| 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).
The generated config is written to /etc/oduflow/oduflow.toml when writable,
otherwise to ~/.oduflow/conf/oduflow.toml. Fresh configs include generated
secrets for HTTP access: [team.1].auth_token for MCP clients and
[team.1].ui_password for the Web Dashboard. The file is created with mode
0600; the secrets are never printed to the log, so read them from the config
itself: sudo grep -E 'auth_token|ui_password' /etc/oduflow/oduflow.toml
(or the same grep on ~/.oduflow/conf/oduflow.toml for a non-root install).
By default, the server starts in stdio mode (for local MCP clients). For remote/multi-user deployments:
oduflow --transport http
oduflow -t 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 and send
Authorization: Bearer <auth_token> using the token from oduflow.toml.
The bundled CLI can call that remote MCP server without a separate agent or MCP client configuration:
export ODUFLOW_MCP_URL="http://<host>:8000/mcp"
export ODUFLOW_MCP_TOKEN="<auth_token>"
oduflow client list_environments
The Web Dashboard is available at http://<host>:8000/. Sign in as admin
with the ui_password from oduflow.toml; this is separate from the MCP Bearer
token.
Documentation
For full documentation, visit oduflow.dev or see the docs/ folder:
- Installation & Configuration
- Use Cases & Workflows
- Template Management
- Environment Management
- Coding Agent
- 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. To skip it for a single run (e.g. a test run), start Oduflow with --no-telemetry. See the documentation for details.
Licensing
Oduflow is source-available under PolyForm Noncommercial License 1.0.0. Noncommercial purposes and the organizations covered by that license may use it for free. A separate internal evaluation permission allows companies to assess Oduflow before buying.
Use outside those permissions requires an alternative commercial license: Solo, Business, Integrator, or Enterprise. Read the Oduflow Commercial License Agreement and compare plans. All plans include the same code, features and public updates. Earlier releases retain their original licenses.
Metadata
Release files for oduflow 1.88.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| oduflow-1.88.0.tar.gz | 6.5 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| oduflow-1.88.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 7.6 MB
Release files / oduflow-1.88.0.tar.gz
| Download URL | oduflow-1.88.0.tar.gz |
|---|---|
| Size | 6.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2f459e351c1aa65cc27b373d0812312c70ec041eaa227b1aab5c60d7189cddae
|
|
BLAKE2b-256 checksum How to use checksums |
c64496cdc274aac8c4792e0a90a791d657176ce4f51b09bc8eb1a9b19ccf0349
|
| 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 Oct 14, 2026.
Transparency logRelease files / oduflow-1.88.0-py3-none-any.whl
| Download URL | oduflow-1.88.0-py3-none-any.whl |
|---|---|
| Size | 1.1 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2ff010289134c5fd69bc4626a65c1f8e5a7fce9e94ef0d155875c41755b8d46d
|
|
BLAKE2b-256 checksum How to use checksums |
ad418d4ae91cf4cba2a51892b85b1bfd2ec5acd3f2b6d2d1af8d914629439732
|
| 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 Oct 14, 2026.
Transparency logSecurity for oduflow 1.88.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for oduflow-1.88.0.tar.gz
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 Oct 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.