Execution Layer for Odoo
Installation.
How to install the Execution Layer on your Odoo 19: requirements, the module layout, the safe defaults it installs with, and the first 15 minutes. One module, installed like any Odoo addon.
The Execution Layer is one installable Odoo module, nanti_mcp_enterprise. You run it inside
your own Odoo, so your records never leave your server, and there is nothing to pip install:
its only third-party Python dependencies (requests, cryptography) are part of Odoo’s own
requirements and are present on every standard host, the official Docker image, and Odoo.sh.
Getting the module
Two ways, same module, same price: buy direct from nanti.ai (write to hello@nanti.ai and we deliver the module archive and the invoice) or on the Odoo Apps Store. Pricing is one-time, USD 499 per Odoo major, everything included.
Requirements
- Odoo 19, Community or Enterprise.
- Self-hosted or Odoo.sh. Not Odoo Online, which does not allow custom server modules.
- One Odoo database per host (
dbfilter/ monodb) is the supported deployment. - HTTPS with a reverse proxy (and
proxy_mode = True) if a cloud AI client, such as ChatGPT, needs to reach the server: those connect from the provider’s servers. Local clients on a LAN or VPN (Claude Desktop, Cursor) do not need public reachability. See connecting an AI client.
Installing
- Put the
nanti_mcp_enterprisefolder on your addons path, or add it to your Odoo.sh repository. - Restart Odoo and update the Apps list.
- Install Execution Layer for Odoo — Enterprise MCP Server.
- Open the Execution Layer app. You land on the dashboard, and the built-in Setup guide takes it from there: about 15 minutes to a first governed read.
What is inside the one module
Six modules ship physically merged into the one installable:
| Part | License | What it adds |
|---|---|---|
nanti_mcp_core | LGPL-3 | The MCP server, per-user OAuth identity, scoped API keys, fail-closed tools, base action logging |
nanti_mcp_verify | OPL-1 | Verified writes, idempotency, atomic batches, stored Action Receipts |
nanti_mcp_governance | OPL-1 | Bundles, tool policies, hidden and required fields, preconditions, export controls |
nanti_mcp_approvals | OPL-1 | Risk classes, payload-bound approvals, separate approvers |
nanti_mcp_audit | OPL-1 | Before and after snapshots, record history, immutable mode, alerts, the dashboard |
nanti_mcp_semantics | OPL-1 | The semantic registry, meaning injection, disambiguation, the Context Layer client |
The OPL-1 parts are source-available in your installation, and nanti_mcp_core is the
open-source (LGPL-3) foundation inside it: the source you run is the source you can read.
Safe defaults
The module installs conservatively, so the first thing that happens is nothing dangerous:
- Read-only to start. Writes are off until an administrator turns on Configuration → Settings → Allow writes for AI clients.
- Recording from the first minute. Every call leaves evidence, before you configure anything.
- Fail closed. The
execute_actionallow-list is empty by default: no business buttons are callable until you add them, one method on one model at a time. - Read-only default bundle. Every internal user starts on Odoo permissions · read only, as a removable default.
Staging first, always
Install on a staging copy of your database, connect a client, and run the adversarial test suite before you point anything at production. Watching the layer refuse, roll back, and receipt correctly on your own data is the point. This is also your side of the product terms.
Next: connecting an AI client.
