The Problem — Copy-Paste Coding
Every Odoo developer using AI tools today runs the same loop: open ChatGPT or Claude in a browser tab, paste a chunk of Python, describe what the model should be looking at, wait for a response, copy the output back into your editor, run it, hit an error because the AI did not know about your _inherit chain or your custom field names, then start over.
The AI never sees your project structure. It does not know that your sale_order_extension module overrides _compute_amount in three places. It cannot read your __manifest__.py to understand dependencies. It has no access to the running container or the ORM. You are the bottleneck, manually shuttling context between two disconnected worlds.
What We Built
A project-level dev sidecar container. It runs alongside your Odoo environments on the same server, managed by OEC.sh. Inside it:
- Claude Code (Anthropic)
Agentic coding assistant. Reads your entire project, proposes multi-file edits, runs shell commands, and iterates on errors autonomously.
- Gemini CLI (Google)
Code understanding and generation from Google’s Gemini models. Strong at explaining complex ORM logic and generating test scaffolding.
- OpenAI Codex
Code completion and generation from OpenAI. Handles quick fixes, boilerplate generation, and targeted refactors.
Your addon code is already mounted at /workspace/{env-name}/. The AI tools can read every file in your project, follow import chains, inspect __manifest__.py dependencies, and write changes that Odoo picks up immediately. No upload step. No copy-paste.
How to Enable It
Three clicks and about 30 seconds:
Open Project Settings
Navigate to your project in the OEC.sh dashboard. Click Settings, then Developer Tools.
Toggle "AI Dev Mode"
Flip the switch. OEC.sh provisions the dev sidecar container on your server. Takes about 30 seconds.
Click "Open Dev Terminal"
A browser-based terminal opens with all three AI tools ready. Your code is already at /workspace/.
When the terminal opens, you will see this welcome banner:
OEC.sh Dev Terminal — Project: my-erp
─────────────────────────────────────
Available tools:
claude Claude Code (Anthropic)
gemini Gemini CLI (Google)
codex OpenAI Codex
Quick start:
claude "Explain the sale.order flow in this project"
gemini "Generate unit tests for models/stock_move.py"
codex "Add a discount field to purchase.order.line"
Workspace: /workspace/
Docs: https://doc.oec.sh/product/developer-toolsYour Code Is Already There
The dev sidecar mounts every environment's addon source code into a unified workspace. You do not need to clone, download, or configure anything:
/workspace/
├── production/
│ └── my-custom-addon/
│ ├── __manifest__.py
│ ├── models/
│ ├── views/
│ └── security/
├── staging/
│ └── my-custom-addon/
│ ├── __manifest__.py
│ ├── models/
│ ├── views/
│ └── security/
└── dev/
└── my-custom-addon/
├── __manifest__.py
├── models/
├── views/
└── security/Changes you make inside the terminal are written directly to the mounted volume. Odoo picks them up on the next request (or immediately if you are running in --dev=reload mode). No upload step, no deploy step, no waiting.
What You Can Do
Each tool runs as a CLI command inside the terminal. Here are real workflows Odoo developers are using:
Code review and test generation
$ claude "Review my sale.order extension and suggest test cases" Analyzing /workspace/staging/my-custom-addon/models/sale_order.py... Found 3 overrides of _compute_amount with conditional logic. Suggested test cases: 1. Test discount computation when qty > 100 2. Test tax recalculation after manual price override 3. Test multi-currency rounding in _compute_amount ...
Understand unfamiliar code
$ gemini "What does the _compute_margin method actually do?
Walk me through it step by step."
Reading /workspace/staging/my-custom-addon/models/sale_order.py...
The _compute_margin method:
1. Iterates over order lines with product_id set
2. Pulls standard_price from the product (cost)
3. Computes margin = price_unit - standard_price
4. Applies the company currency conversion...Fix errors directly
$ codex "Fix the TypeError in stock_picking.py line 47"
Reading /workspace/dev/my-custom-addon/models/stock_picking.py...
Line 47: partner_id.name.upper()
Issue: partner_id can be empty recordset when picking
is created from inventory adjustment.
Fix applied:
- partner_id.name.upper() if partner_id else "N/A"Git operations from inside the terminal
$ cd /workspace/staging/my-custom-addon $ git add models/sale_order.py $ git commit -m "fix: handle empty partner in margin compute" $ git push origin staging
Git is pre-installed. Your SSH keys are available. Push changes to trigger deployments through OEC.sh as usual.
Environment Lifecycle Stays Clean
The dev sidecar is decoupled from your Odoo environments. This is a deliberate architectural choice:
- Destroy a staging environment — the sidecar keeps running. Your AI conversation history is intact.
- Recreate an environment — the new addon volume is automatically mounted into the existing sidecar.
- API keys persist in a project-scoped volume. Configure them once, use them across all environments.
- Dev context does not live inside ephemeral environment containers. It outlives them.
This means you can maintain long-running AI sessions that build up context about your codebase — even as environments come and go underneath.
Architecture
The dev sidecar is a separate Docker container (oecsh/dev-sidecar) running alongside your Odoo containers on the same server. It is intentionally minimal and isolated:
| Specification | Value |
|---|---|
| Image | oecsh/dev-sidecar |
| Resources | 1 GB RAM, 1 CPU core |
| User | Non-root (uid 1000) |
| Capabilities | --cap-drop ALL (no Linux capabilities) |
| Network | Isolated from Odoo containers. Internet access for AI API calls only. |
| Storage | Project-scoped persistent volume for AI config, history, and keys |
| Addon access | Read-write bind mount of /workspace/{env}/ |
The sidecar cannot reach your Odoo database, PostgreSQL, or other service containers. It only has access to the addon source code on disk and outbound internet for AI API calls.
Available on Pro Plan
AI Dev Mode is included in the Pro and Agency plans at no extra cost. You bring your own API keys for the AI services you want to use.
| Plan | Price | AI Dev Mode |
|---|---|---|
| Free | $0/mo | — |
| Starter | $19/mo | — |
| Pro | $39/mo | Included |
| Agency | $199/mo | Included |
See full plan details at oec.sh/pricing. API key costs are billed directly by each AI provider (Anthropic, Google, OpenAI) based on your token usage.
Start Building with AI
Get Claude Code, Gemini CLI, and OpenAI Codex inside your Odoo project. Your code is already mounted. No setup required.
Related reading
Pricing
Compare Free, Starter, Pro, and Agency plans side by side.
Vibe Coding Odoo with AI
A practical guide to using AI coding assistants for Odoo addon development.
Features
Full list of OEC.sh platform features for Odoo deployment and management.
What’s New — Jan/Feb 2026
Recent platform updates including new features, improvements, and fixes.
Frequently Asked Questions
What AI tools are included in OEC.sh Dev Mode?
OEC.sh Dev Mode includes three AI coding tools pre-installed: Claude Code (Anthropic), Gemini CLI (Google), and OpenAI Codex. All three are available from a single terminal session. You bring your own API keys — OEC.sh does not charge separately for AI usage.
Do I need to pay for Claude Code separately?
Yes. OEC.sh provides the runtime environment with the tools pre-installed, but you need your own API keys for each AI service you want to use. Claude Code requires an Anthropic API key, Gemini CLI requires a Google AI API key, and Codex requires an OpenAI API key. You pay the AI providers directly based on your usage.
Can I use AI Dev Mode on Odoo Community Edition?
Yes. AI Dev Mode works with both Odoo Community and Odoo Enterprise editions. The dev sidecar mounts your addon source code regardless of which Odoo edition you are running. It works with Odoo 16, 17, 18, and 19.
Is my code shared with OEC.sh when using AI tools?
No. When you use Claude Code, Gemini CLI, or Codex inside the dev sidecar, your code is sent directly from the sidecar container to the respective AI provider using your own API key. OEC.sh does not intercept, log, or store the content of your AI conversations or the code snippets you send to these services.
What happens to my AI sessions when I destroy an environment?
Your AI conversation history, API keys, and tool configuration persist in a project-scoped volume that is separate from your Odoo environment containers. Destroying a staging or dev environment does not affect the dev sidecar. Your sessions, history, and configuration remain intact until you explicitly delete the project.