Installation
Installing a trust tool raises a fair question right away: am I about to add yet another moving part to my Odoo, one I'll have to take on faith just like everything else? With MIT Network Audit the answer is no. This module is open source and never obfuscated — you can read every line before you install it, and after it is running you can open the Trust Report and watch it account for your instance's traffic in real time.
Installing a trust tool raises a fair question right away: am I about to add yet another moving part to my Odoo, one I'll have to take on faith just like everything else? With MIT Network Audit the answer is no. This module is open source and never obfuscated — you can read every line before you install it, and after it is running you can open the Trust Report and watch it account for your instance's traffic in real time.
Installing it is ordinary Odoo. The only thing worth getting right is how the module is loaded, because that determines whether it sees all of your network traffic or only some of it. There are two paths below — pick the one that matches where your Odoo runs. Both end the same way: you open Network Audit → Trust Report and confirm capture is live.
Before you start
- You need administrator access to Odoo — enough to open the Apps list, install a module, and edit a server configuration (for self-hosted deployments).
- You need to know where your Odoo runs: on a server or container you control (self-hosted, Docker, Kubernetes), or on a managed platform such as Odoo.sh. This decides which of the two install paths below applies to you.
- MIT Network Audit runs on Odoo 17, 18, and 19. The steps are the same on each.
Open source by design — verify before you trust
MIT ships its commercial modules (MailDesk, the license locker) obfuscated, so you cannot read their bytecode. This module is the deliberate exception: it is shipped in the clear and is never obfuscated, precisely so you can audit it yourself. Reading the source before installing is not just allowed — it is the point.
What installation does
When you install mit_network_audit, Odoo loads the module's models, views, the
Trust Report dashboard, the two security groups, and the seeded catalogue of
known destinations. The part that does the actual work is a small interceptor
that wraps your instance's network calls so that every inbound and outbound
operation is attributed to the Odoo module that made it and recorded — as
metadata only — in an append-only, hash-chained log.
That interceptor has to be in place inside each Odoo worker process before any traffic flows. How it gets there is the one thing that differs between the two deployment styles below.
Load it server-wide on self-hosted and Kubernetes
On a server you control, the interceptor installs from the module's
post_load step, which runs once per worker process at startup. For every
worker to be patched before it serves a single request, the module must be in
the server-wide load list. Add it with --load or
server_wide_modules (see below). If you install it only as an ordinary app on
a self-hosted server, some workers may start un-patched and traffic in those
workers will not be captured. On managed platforms like Odoo.sh you cannot set
the load list — and there you do not need to; see Managed platforms
(Odoo.sh).
Self-hosted, Docker and Kubernetes (server-wide load)
This is the path for any deployment where you control how the Odoo server is started — a bare server, a Docker container, or a Kubernetes pod. Here you install the module and add it to the server-wide load list, so the interceptor is present in every worker.
1. Install the module
- Make sure the
mit_network_auditmodule is on your Odoo addons path (drop it in alongside your other addons and restart so Odoo can see it). - In Odoo, go to Apps, update the apps list if you just added the files, search for MIT Network Audit, and click Activate (Install).
2. Add it to the server-wide load list
Tell Odoo to load the module server-wide, before any database, so its
post_load patches every worker at startup. Use either the command-line flag or
the configuration file — not both is required, pick one.
On the command line:
--load=base,web,mit_network_audit
Or in your odoo.conf:
[options]
server_wide_modules = base,web,mit_network_audit
Keep base and web in the list — they are Odoo's own default server-wide modules,
and mit_network_audit is simply added after them. Then restart Odoo so the new
load list takes effect.
Docker / Kubernetes
If you start Odoo from a container, set the load list the same way you set any
other Odoo argument — for example through your ODOO_EXTRA_ARGS environment
variable or the command: in your compose / pod spec — so that
mit_network_audit is in --load (or server_wide_modules) every time the
container starts. The repository's own docker-compose.yaml wires this up as a
reference.
3. Restart and confirm
Restart the Odoo service. Then jump to Confirm it is running below.
Managed platforms (Odoo.sh)
On a managed platform such as Odoo.sh, you do not control the Odoo start-up command, so you cannot set a server-wide load list — and you do not need to. The module is built to install cleanly here too.
- Add
mit_network_auditto your Odoo.sh repository (your custom addons), let the platform build, and then install it from the Apps list exactly like any other module. - That is all. On an ordinary Apps install the interceptor attaches itself through
Odoo's own
ir.http._register_hook, so it comes online without any server-wide configuration.
Both deployment styles funnel through a single, idempotent install step internally, so the end result is the same — a patched instance that records its own traffic.
One module, two install routes
Server-wide post_load (self-hosted / Kubernetes) and the
ir.http._register_hook route (managed PaaS) are two doors into the same
install logic. You do not choose between them in the UI; you simply install the
way your hosting allows, and the module picks the right path.
Confirm it is running
Installation is only finished when capture is actually live. The dashboard tells you in one glance.
- Open the top menu Network Audit → Trust Report.
- Look at the forensic-capture status banner at the top of the dashboard — it reports whether capture is active.
- Within a short while of normal use you should see the summary cards — Total events, MIT-bound events, Third-party events — begin to fill, and destinations appear in the MIT-bound destinations and Third-party destinations panels.
The Trust Report after install: the capture banner is active and the verdict card reads all-clear.
If the dashboard shows the capture banner as active and events start to accumulate, the interceptor is in place. If it does not, re-check that on a self-hosted server the module is in the server-wide load list and that you restarted Odoo after adding it.
Network auditing must be switched on
Capture is governed by the Network auditing enabled master switch in Configuration → Settings (Network Audit section). If the banner reports that auditing is off, turn this switch on — with it off, nothing is captured. See Configuration for every setting.
What to do next
- Read the verdict. Learn what the hero verdict, the trust chips, and the destination panels are telling you on the Trust Report.
- Understand the mechanism. See exactly which network channels are wrapped and how each call is attributed in How it works.
- Tune capture. Adjust strict redaction, retention, and disabled channels in Configuration.
- Prove it to a third party. Export a signed, independently verifiable record from Verification & signed export.