Files
derez.ai/odoo-hermes.html

703 lines
34 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- ── SEO ───────────────────────────────────────────────── -->
<title>Odoo Hermes — Connect Odoo ERP to Hermes AI Agent | derez.ai</title>
<meta
name="description"
content="Odoo Hermes connects your Odoo ERP to Hermes AI Agent. XML-RPC, MCP, or n8n — three ways to integrate. Read, write, and automate Odoo data through natural language."
/>
<meta name="robots" content="index, follow" />
<link rel="canonical" href="https://derez.ai/odoo-hermes" />
<!-- ── OG ─────────────────────────────────────────────────── -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://derez.ai/odoo-hermes" />
<meta property="og:title" content="Odoo Hermes — Connect Odoo ERP to AI Agent" />
<meta
property="og:description"
content="Three ways to connect Odoo to Hermes Agent. XML-RPC direct, MCP protocol, or n8n deterministic workflows. Full step-by-step guide."
/>
<meta property="og:image" content="https://derez.ai/og-image.png" />
<meta property="og:site_name" content="derez.ai" />
<!-- ── Twitter ────────────────────────────────────────────── -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Odoo Hermes — Connect Odoo ERP to AI Agent" />
<meta
name="twitter:description"
content="Three ways to connect Odoo to Hermes Agent. XML-RPC direct, MCP protocol, or n8n deterministic workflows."
/>
<!-- ── Structured Data (FAQ) ──────────────────────────────── -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Odoo Hermes?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Odoo Hermes is the integration between Odoo ERP and Hermes AI Agent. It allows your AI agent to read, write, and automate data across Odoo modules — CRM, Sales, Inventory, Accounting — through natural language prompts."
}
},
{
"@type": "Question",
"name": "How do I connect Odoo to Hermes Agent?",
"acceptedAnswer": {
"@type": "Answer",
"text": "There are three ways: 1) Direct XML-RPC API — configure Odoo credentials in Hermes config.yaml and the agent calls the API directly. 2) Odoo MCP CLI client — run mcp-server-odoo and register with Hermes. 3) Hermes to n8n to Odoo — delegate Odoo operations to deterministic n8n workflows."
}
},
{
"@type": "Question",
"name": "Is Odoo Hermes free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Hermes Agent is open-source and free. Odoo Community Edition is also free. You only pay for hosting — derez.ai offers managed agents starting at $9.50/month with coupon code blog950."
}
},
{
"@type": "Question",
"name": "Which integration method should I use?",
"acceptedAnswer": {
"@type": "Answer",
"text": "For quick queries and demos use XML-RPC direct. For multi-tool agents on MCP use the Odoo MCP CLI. For production business processes like invoicing and order management use Hermes to n8n to Odoo for deterministic step-by-step workflows."
}
},
{
"@type": "Question",
"name": "Can Odoo Hermes write to my database?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, but you control it. Set readonly: true in the config for read-only access, or remove it to allow create/update operations. Always use a dedicated Odoo user with restricted permissions for agent access."
}
}
]
}
</script>
<!-- ── Plausible ──────────────────────────────────────────── -->
<script
defer
data-domain="derez.ai"
src="https://plausible.odoo4projects.com/js/script.file-downloads.outbound-links.tagged-events.js"
></script>
<script>
window.plausible =
window.plausible ||
function () {
(window.plausible.q = window.plausible.q || []).push(arguments)
}
</script>
<!-- ── Fonts ──────────────────────────────────────────────── -->
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,400;14..32,500;14..32,600;14..32,700&display=swap"
rel="stylesheet"
/>
<!-- ── Styles ─────────────────────────────────────────────── -->
<style>
:root {
--bg: #000810;
--bg-card: #010f20;
--bg-code: #001220;
--border: #001a2e;
--accent: #00f5ff;
--accent-dim: rgba(0,245,255,0.08);
--text: #e8e8f0;
--text-muted: #888;
--text-dim: #666;
--radius: 8px;
--radius-card: 14px;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
background: var(--bg);
color: var(--text);
font-family: 'Inter', system-ui, -apple-system, sans-serif;
line-height: 1.7;
font-size: 15px;
}
a { color: var(--accent); text-decoration: none; }
a:hover { text-decoration: underline; }
.container { max-width: 800px; margin: 0 auto; padding: 0 24px; }
/* ── Header ─────────────────────────────────────────── */
.site-header {
border-bottom: 1px solid var(--border);
padding: 14px 0;
position: sticky;
top: 0;
background: var(--bg);
z-index: 100;
}
.site-header .container {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1100px;
}
.site-logo { display: flex; align-items: center; gap: 8px; }
.site-logo-img { display: block; height: 34px; width: auto; }
.nav-links {
display: flex;
list-style: none;
gap: 24px;
font-size: 0.88rem;
}
.nav-links a { color: #999; transition: color .15s; }
.nav-links a:hover { color: var(--text); text-decoration: none; }
.header-actions { display: flex; align-items: center; gap: 12px; }
.btn-login {
display: flex;
align-items: center;
gap: 5px;
font-size: 0.85rem;
color: #999;
padding: 6px 14px;
border-radius: var(--radius);
border: 1px solid var(--border);
transition: all .15s;
}
.btn-login:hover { border-color: #333; color: var(--text); text-decoration: none; }
.btn {
display: inline-block;
padding: 8px 22px;
border-radius: var(--radius);
font-weight: 600;
font-size: 0.88rem;
transition: all .2s;
}
.btn-primary {
background: var(--accent);
color: #000;
border: 1px solid var(--accent);
}
.btn-primary:hover { background: #33f7ff; text-decoration: none; }
.btn-outline {
background: transparent;
color: var(--accent);
border: 1px solid var(--accent);
}
.btn-outline:hover { background: var(--accent-dim); text-decoration: none; }
.hamburger {
display: none;
flex-direction: column;
gap: 4px;
background: none;
border: none;
cursor: pointer;
padding: 4px;
}
.hamburger span {
display: block;
width: 22px;
height: 2px;
background: #999;
border-radius: 2px;
}
/* ── Hero ────────────────────────────────────────────── */
.hero {
padding: 60px 0 40px;
text-align: center;
}
.hero .badge {
display: inline-block;
background: var(--accent-dim);
color: var(--accent);
border: 1px solid rgba(0,245,255,0.25);
font-size: 0.75rem;
font-weight: 600;
padding: 4px 12px;
border-radius: 20px;
text-transform: uppercase;
letter-spacing: 0.5px;
margin-bottom: 16px;
}
.hero h1 { font-size: 2.6rem; font-weight: 700; line-height: 1.15; margin-bottom: 16px; }
.hero p {
font-size: 1.1rem;
color: var(--text-muted);
max-width: 600px;
margin: 0 auto 24px;
}
.hero-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
/* ── Video ───────────────────────────────────────────── */
.video-wrap {
max-width: 360px;
margin: 40px auto;
aspect-ratio: 9/16;
border-radius: var(--radius-card);
overflow: hidden;
background: #000;
box-shadow: 0 8px 40px rgba(0,0,0,0.5);
}
.video-wrap iframe {
width: 100%;
height: 100%;
border: 0;
}
/* ── Content ─────────────────────────────────────────── */
.content { padding-bottom: 60px; }
.content h2 {
font-size: 1.5rem;
font-weight: 700;
margin: 48px 0 16px;
color: #f0f0ff;
}
.content h3 {
font-size: 1.15rem;
font-weight: 600;
margin: 28px 0 10px;
color: #e0e0f0;
}
.content p { margin-bottom: 16px; color: #c8c8d8; }
.content ul, .content ol { margin: 0 0 20px 24px; color: #c8c8d8; }
.content li { margin-bottom: 8px; }
.content strong { color: #f0f0ff; }
.content code {
background: var(--bg-code);
padding: 2px 7px;
border-radius: 4px;
font-size: 0.88em;
color: var(--accent);
}
.content pre {
background: var(--bg-code);
border: 1px solid var(--border);
border-radius: 10px;
padding: 16px 20px;
margin: 0 0 20px;
overflow-x: auto;
font-size: 0.85rem;
color: #c8f0ff;
font-family: 'Courier New', monospace;
line-height: 1.6;
}
.content pre code { background: none; padding: 0; color: inherit; }
.content .divider {
border: none;
border-top: 1px solid var(--border);
margin: 36px 0;
}
.content .faq-item {
border-bottom: 1px solid var(--border);
padding: 18px 0;
}
.content .faq-item:last-child { border-bottom: none; }
.content .faq-item h3 {
font-size: 1rem;
margin: 0 0 6px;
cursor: pointer;
color: var(--accent);
}
.content .faq-item p { margin: 0; font-size: 0.95rem; color: #aaa; }
/* ── Method cards ────────────────────────────────────── */
.method-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 16px;
margin: 20px 0;
}
.method-card {
background: var(--bg-card);
border: 1px solid var(--border);
border-radius: var(--radius-card);
padding: 24px;
}
.method-card h3 {
font-size: 1rem;
margin: 0 0 6px;
color: var(--accent);
}
.method-card .speed { font-size: 0.8rem; color: var(--text-muted); margin-bottom: 8px; display: block; }
.method-card p { font-size: 0.9rem; margin: 0; }
/* ── CTA box ─────────────────────────────────────────── */
.cta-box {
background: var(--bg-card);
border: 1px solid rgba(0,245,255,0.2);
border-radius: var(--radius-card);
padding: 32px 36px;
margin: 40px 0;
text-align: center;
}
.cta-box h3 { font-size: 1.2rem; margin-bottom: 8px; color: #f0f0ff; }
.cta-box p { color: #999; margin-bottom: 18px; font-size: 0.95rem; }
.cta-box .btn { font-size: 1rem; padding: 12px 32px; }
/* ── Footer ──────────────────────────────────────────── */
.site-footer {
border-top: 1px solid var(--border);
padding: 24px 0;
margin-top: 20px;
}
.site-footer .container {
display: flex;
align-items: center;
justify-content: space-between;
max-width: 1100px;
font-size: 0.85rem;
color: var(--text-dim);
}
.footer-links { display: flex; gap: 20px; }
.footer-links a { color: var(--text-dim); }
.footer-links a:hover { color: var(--accent); }
/* ── Responsive ──────────────────────────────────────── */
@media (max-width: 700px) {
.nav-links { display: none; }
.hamburger { display: flex; }
.hero h1 { font-size: 1.8rem; }
.hero p { font-size: 1rem; }
.method-grid { grid-template-columns: 1fr; }
.site-footer .container { flex-direction: column; gap: 12px; }
}
@media (max-width: 600px) {
body { font-size: 14px; }
.hero { padding: 40px 0 24px; }
.cta-box { padding: 24px 20px; }
}
</style>
</head>
<body>
<!-- ═══════════════════════════════════════════════════════════
HEADER
═══════════════════════════════════════════════════════════ -->
<header class="site-header" id="site-header">
<div class="container">
<a href="/" class="site-logo">
<img
src="assets/images/logo.svg"
alt="derez.ai"
width="132"
height="34"
class="site-logo-img"
/>
</a>
<ul class="nav-links" id="nav-links">
<li><a href="https://derez.ai/#pricing">Pricing</a></li>
<li><a href="https://derez.ai/#faq">FAQ</a></li>
<li><a href="https://derez.ai/#blog">Blog</a></li>
<li><a href="https://derez.ai/#topics">Topics</a></li>
<li><a href="affiliate.html">Affiliate</a></li>
</ul>
<div class="header-actions">
<a href="https://app.derez.ai" class="btn-login">
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<rect x="3" y="11" width="18" height="11" rx="2" />
<path d="M7 11V7a5 5 0 0 1 10 0v4" />
</svg>
Sign In
</a>
<a href="https://derez.ai/#pricing" class="btn btn-primary btn-signup-header">Buy Agent</a>
<button class="hamburger" id="hamburger" aria-label="Toggle menu" onclick="toggleMobile()">
<span></span><span></span><span></span>
</button>
</div>
</div>
</header>
<!-- ═══════════════════════════════════════════════════════════
HERO
═══════════════════════════════════════════════════════════ -->
<div class="container">
<div class="hero">
<div class="badge">Integration</div>
<h1>Odoo Hermes</h1>
<p>
Connect your Odoo ERP to Hermes AI Agent and automate your business data
through natural language. Three integration methods — pick the one that fits.
</p>
<div class="hero-actions">
<a href="#setup" class="btn btn-primary">Setup Guide</a>
<a href="#faq" class="btn btn-outline">FAQs</a>
</div>
</div>
<!-- ── YouTube Short embedded)────────────────────────── -->
<div class="video-wrap">
<iframe
src="https://www.youtube.com/embed/GVZMnq_NOxI"
title="Odoo Hermes — AI Agent connects to Odoo via XML-RPC"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen
></iframe>
</div>
<!-- ═══════════════════════════════════════════════════════
CONTENT
═══════════════════════════════════════════════════════ -->
<div class="content">
<h2>What Is Odoo Hermes?</h2>
<p>
<strong>Odoo Hermes</strong> is the integration between <strong>Odoo ERP</strong> and
<strong>Hermes AI Agent</strong>. It gives your AI agent direct access to your
Odoo database — CRM contacts, sales orders, inventory levels, invoices, and more —
all through natural language prompts.
</p>
<p>
Instead of clicking through Odoo's module menus to find a customer or generate a
report, you just ask your agent. "Show me all leads from last week." "What's the
total value of open quotes?" "Create a new invoice for ACME Corp." Your agent
handles the API calls and returns the answer.
</p>
<p>
There are <strong>three ways</strong> to set up the connection, each with different
trade-offs. The <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">full comparison article</a>
covers all three in detail, but here's the quick summary:
</p>
<div class="method-grid">
<div class="method-card">
<h3>XML-RPC Direct</h3>
<span class="speed">~3 min setup · Lowest latency</span>
<p>Configure Odoo credentials in Hermes and the agent calls the API directly. Best for quick queries, demos, and prototyping.</p>
</div>
<div class="method-card">
<h3>Odoo MCP CLI</h3>
<span class="speed">~5 min setup · Standard protocol</span>
<p>Run mcp-server-odoo and register with Hermes. Best for multi-tool agents that already use MCP for other services.</p>
</div>
<div class="method-card">
<h3>n8n Pipeline</h3>
<span class="speed">~10 min setup · Highest determinism</span>
<p>Hermes delegates Odoo operations to n8n workflows. Best for production business processes where every step must be predictable.</p>
</div>
<div class="method-card">
<h3>Speed Run</h3>
<span class="speed">~10 min · Full walkthrough</span>
<p>From zero to an Odoo-connected agent. Follow the <a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html?utm_source=derez&utm_campaign=email">Odoo Speed Run</a> for the complete beginner-friendly guide.</p>
</div>
</div>
<h2>Why Use Odoo Hermes?</h2>
<h3>One Interface, All Modules</h3>
<p>
Odoo has CRM, Sales, Inventory, Accounting, Manufacturing, and 30+ other modules.
Each has its own UI, filters, and reports. Odoo Hermes collapses them all into a
single text interface. Ask once, get answers from any module.
</p>
<h3>Automate Repetitive Tasks</h3>
<p>
Instead of logging into Odoo every morning to check new leads, update stages, and
generate reports, your agent does it on a schedule. Set up a <strong>cron job</strong>
that runs "Pull all new leads from last 24 hours, categorize them by industry, and
save the result to my dashboard" — and it happens automatically at 08:00 every day.
</p>
<h3>Combine Odoo with Other Tools</h3>
<p>
Hermes Agent isn't limited to Odoo. It also browses the web, sends emails, reads
files, and runs code. Your agent can research a prospect on LinkedIn,
check their CRM record in Odoo, draft a personalized email, and send it — all in
one session.
</p>
<h3>No Code Required</h3>
<p>
You don't need to write Python scripts, build API integrations, or maintain
middleware. Configure once in <code>config.yaml</code> and your agent is ready.
The entire setup takes about 10 minutes.
</p>
<hr class="divider" />
<h2 id="setup">Step-by-Step Setup (XML-RPC Direct)</h2>
<p>
This is the fastest path — one config block and your agent talks to Odoo directly.
For the MCP or n8n approaches, see the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">full comparison guide</a>.
</p>
<h3>Prerequisites</h3>
<p>Have these ready before you start:</p>
<ul>
<li>Your Odoo instance URL (e.g. <code>https://your-instance.odoo4projects.com</code>)</li>
<li>Odoo username and password (create a dedicated agent user — never use admin)</li>
<li>Hermes Agent installed and running</li>
</ul>
<h3>Step 1 — Generate an API Key</h3>
<p>
In Odoo, go to <strong>Settings → Users → select your agent user → Technical</strong>.
Scroll to <strong>Security</strong> and click <strong>Generate API Key</strong>.
Name it <code>hermes-agent</code> and copy the key immediately — Odoo only shows it once.
</p>
<h3>Step 2 — Configure Hermes</h3>
<p>Add this block to your <code>~/.hermes/config.yaml</code>:</p>
<pre><code>odoo:
url: "https://your-instance.odoo4projects.com"
db: "your-database"
user: "agent@company.com"
api_key: "your-api-key"
readonly: true</code></pre>
<p>
Set <code>readonly: true</code> for first setup. Remove it once you're confident
and need the agent to create or update records.
</p>
<h3>Step 3 — Give Your Agent the Prompt</h3>
<p>Start Hermes and paste this prompt:</p>
<pre><code>Connect to the ODOO 19 database with the credentials $ODOO_URL $ODOO_USER $ODOO_APIKEY</code></pre>
<h3>Step 4 — Verify</h3>
<p>Ask your agent a simple question to confirm the connection works:</p>
<pre><code>Give me a list of customers with their email addresses.</code></pre>
<p>If everything is configured correctly, the agent returns live data from your Odoo instance:</p>
<pre><code>1. Azure Interior — azure.interior@example.com
2. Deco Addict — deco.addict@example.com
3. Gem Furniture — gem.furniture@example.com
4. Lumber Inc — lumber.inc@example.com
Total: 8 customers in CRM</code></pre>
<p>That's it. Three minutes, one config block, and your agent talks to Odoo.</p>
<h3>What to Try Next</h3>
<ul>
<li><strong>"Show me all leads in the CRM"</strong> — pulls from <code>crm.lead</code></li>
<li><strong>"List my recent sales orders"</strong> — queries <code>sale.order</code></li>
<li><strong>"What products are low on stock?"</strong> — checks <code>stock.quant</code></li>
<li><strong>"What's the total value of open quotes?"</strong> — sums draft sale orders</li>
</ul>
<hr class="divider" />
<h2>Comparison: Which Method Should You Use?</h2>
<table style="width:100%;border-collapse:collapse;margin:20px 0;font-size:0.95rem;">
<tr style="border-bottom:1px solid var(--border);">
<th style="text-align:left;padding:8px 12px;color:var(--accent);">Factor</th>
<th style="text-align:left;padding:8px 12px;color:var(--accent);">XML-RPC</th>
<th style="text-align:left;padding:8px 12px;color:var(--accent);">MCP</th>
<th style="text-align:left;padding:8px 12px;color:var(--accent);">n8n</th>
</tr>
<tr style="border-bottom:1px solid var(--border);">
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Setup time</td>
<td style="padding:8px 12px;color:#c8c8d8;">~3 min</td>
<td style="padding:8px 12px;color:#c8c8d8;">~5 min</td>
<td style="padding:8px 12px;color:#c8c8d8;">~10 min</td>
</tr>
<tr style="border-bottom:1px solid var(--border);">
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Determinism</td>
<td style="padding:8px 12px;color:#c8c8d8;">Low (LLM-driven)</td>
<td style="padding:8px 12px;color:#c8c8d8;">Medium (tool-bound)</td>
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">High (step-by-step)</td>
</tr>
<tr style="border-bottom:1px solid var(--border);">
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Audit trail</td>
<td style="padding:8px 12px;color:#c8c8d8;">None</td>
<td style="padding:8px 12px;color:#c8c8d8;">None</td>
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Full (n8n logs)</td>
</tr>
<tr style="border-bottom:1px solid var(--border);">
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Best for</td>
<td style="padding:8px 12px;color:#c8c8d8;">Quick queries, demos</td>
<td style="padding:8px 12px;color:#c8c8d8;">Multi-tool stacks</td>
<td style="padding:8px 12px;color:#c8c8d8;">Invoices, orders, data entry</td>
</tr>
<tr>
<td style="padding:8px 12px;color:#c8c8d8;font-weight:600;">Components</td>
<td style="padding:8px 12px;color:#c8c8d8;">Hermes + Odoo</td>
<td style="padding:8px 12px;color:#c8c8d8;">+ MCP server</td>
<td style="padding:8px 12px;color:#c8c8d8;">+ n8n</td>
</tr>
</table>
<hr class="divider" />
<h2 id="faq">Frequently Asked Questions</h2>
<div class="faq-item">
<h3>What is Odoo Hermes?</h3>
<p>Odoo Hermes is the integration between Odoo ERP and Hermes AI Agent. It allows your AI agent to read, write, and automate data across Odoo modules — CRM, Sales, Inventory, Accounting — through natural language prompts instead of clicking through the Odoo UI.</p>
</div>
<div class="faq-item">
<h3>How do I connect Odoo to Hermes Agent?</h3>
<p>There are three ways: <strong>XML-RPC direct</strong> — configure Odoo credentials in Hermes config.yaml and the agent calls the API directly. <strong>Odoo MCP CLI</strong> — run mcp-server-odoo and register with Hermes. <strong>n8n pipeline</strong> — delegate Odoo operations to deterministic n8n workflows. The right choice depends on whether you need speed (XML-RPC), standardization (MCP), or determinism (n8n).</p>
</div>
<div class="faq-item">
<h3>Is Odoo Hermes free?</h3>
<p>Hermes Agent is open-source and free. Odoo Community Edition is also free with no per-user fees. You only pay for hosting — derez.ai offers managed agents starting at $9.50/month. Use coupon code <strong>blog950</strong> for your first month free.</p>
</div>
<div class="faq-item">
<h3>Which integration method is best for production?</h3>
<p>The <strong>n8n pipeline</strong> is the most production-ready. Every Odoo operation runs through a deterministic workflow — check customer exists, then check product, then create invoice. This prevents the LLM from chaining API calls in unexpected ways. Use XML-RPC for quick queries and demos, n8n for business-critical operations like invoicing and order management.</p>
</div>
<div class="faq-item">
<h3>Can Odoo Hermes write to my database?</h3>
<p>Yes, but you control it. Set <code>readonly: true</code> in the config for read-only access. Remove it to allow create/update operations. Always create a dedicated Odoo user for the agent with restricted model access — never use an admin account.</p>
</div>
<div class="faq-item">
<h3>What Odoo versions does Odoo Hermes support?</h3>
<p>The XML-RPC and JSON-RPC APIs work with Odoo 15 through 19, including Odoo Community Edition and Odoo Enterprise. The MCP server supports Odoo 17+. The n8n approach works with any version that exposes a webhook-compatible API.</p>
</div>
<div class="faq-item">
<h3>Can I schedule Odoo Hermes to run automatically?</h3>
<p>Yes. Hermes Agent has built-in cron job support. You can schedule prompts like "Check for new leads every hour and alert me if there are more than 5" or "Generate a weekly sales report every Monday at 09:00." The agent runs autonomously and sends you the results.</p>
</div>
<!-- ── CTA ──────────────────────────────────────────── -->
<div class="cta-box">
<h3>Deploy Your Odoo Hermes Agent</h3>
<p>
First month free with coupon code <strong>blog950</strong>. From zero to
an Odoo-connected AI agent in under 10 minutes.
</p>
<a href="https://derez.ai/#pricing" class="btn btn-primary">Buy Agent →</a>
</div>
</div>
</div>
<!-- ═══════════════════════════════════════════════════════════
FOOTER
═══════════════════════════════════════════════════════════ -->
<footer class="site-footer">
<div class="container">
<span>&copy; 2026 derez.ai &mdash; AI Agent Hosting</span>
<div class="footer-links">
<a href="https://derez.ai/odoo-hermes">Odoo Hermes</a>
<a href="https://derez.ai/affiliate.html">Affiliate Program</a>
<a href="https://www.youtube.com/@derez_ai" target="_blank" rel="noopener">YouTube</a>
<a href="https://www.linkedin.com/company/derez-ai" target="_blank" rel="noopener">LinkedIn</a>
<a href="https://ODOO4projects.com?utm_source=derez" target="_blank" rel="noopener">Powered by ODOO4projects LLC</a>
</div>
</div>
</footer>
<!-- ── Mobile toggle ───────────────────────────────────────── -->
<script>
function toggleMobile() {
const nav = document.getElementById('nav-links');
nav.style.display = nav.style.display === 'flex' ? 'none' : 'flex';
}
</script>
<script src="assets/js/script.js?v3" defer></script>
</body>
</html>