242 lines
16 KiB
HTML
242 lines
16 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<meta name="robots" content="index, follow" />
|
|
<link rel="canonical" href="https://derez.ai/blog/posts/odoo-xml-rpc-hermes-agent.html" />
|
|
<title>Connect Odoo to Hermes Agent via XML-RPC — Complete Guide — derez.ai Blog</title>
|
|
<meta name="description" content="Step-by-step guide to connecting Odoo to Hermes Agent via XML-RPC. Real credentials included. Pull leads, sales orders, and inventory in under 5 minutes." />
|
|
<meta property="og:type" content="article" />
|
|
<meta property="og:url" content="https://derez.ai/blog/posts/odoo-xml-rpc-hermes-agent.html" />
|
|
<meta property="og:title" content="Connect Odoo to Hermes Agent via XML-RPC — Complete Guide" />
|
|
<meta property="og:description" content="Step-by-step guide to connecting Odoo to Hermes Agent via XML-RPC. Real credentials included. Pull leads, sales orders, and inventory in under 5 minutes." />
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
<meta name="twitter:title" content="Connect Odoo to Hermes Agent via XML-RPC — Complete Guide" />
|
|
<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>
|
|
<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" />
|
|
<style>
|
|
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
body { background: #08080c; color: #e8e8f0; font-family: 'Inter', sans-serif; line-height: 1.7; padding: 40px 20px; }
|
|
.container { max-width: 720px; margin: 0 auto; }
|
|
a { color: #00f5ff; text-decoration: none; }
|
|
a:hover { text-decoration: underline; }
|
|
.back { margin-bottom: 32px; display: inline-block; font-size: 0.9rem; color: #888; }
|
|
.back:hover { color: #00f5ff; }
|
|
h1 { font-size: 1.9rem; font-weight: 700; line-height: 1.3; margin-bottom: 12px; }
|
|
.meta { font-size: 0.85rem; color: #888; margin-bottom: 40px; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
|
|
.area-tag { display: inline-block; background: #a78bfa; color: #000; font-size: 0.75rem; font-weight: 700; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
.chip-tag { display: inline-block; background: rgba(0,245,255,0.1); color: #00f5ff; border: 1px solid rgba(0,245,255,0.3); font-size: 0.75rem; font-weight: 600; padding: 2px 10px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
|
|
.chip-video { background: rgba(255,0,0,0.12); color: #ff4444; border: 1px solid rgba(255,0,0,0.35); }
|
|
h2 { font-size: 1.3rem; font-weight: 600; margin: 36px 0 12px; color: #f0f0ff; }
|
|
h3 { font-size: 1.1rem; font-weight: 600; margin: 24px 0 8px; color: #e0e0f0; }
|
|
p { margin-bottom: 16px; color: #c8c8d8; }
|
|
ul, ol { margin: 0 0 16px 24px; color: #c8c8d8; }
|
|
li { margin-bottom: 6px; }
|
|
code { background: #0e0e14; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; color: #00f5ff; }
|
|
pre { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 10px; padding: 16px 20px; margin: 0 0 20px; overflow-x: auto; font-size: 0.85rem; color: #c8f0ff; }
|
|
pre code { background: none; padding: 0; color: inherit; }
|
|
strong { color: #f0f0ff; }
|
|
.pro-tip { background: rgba(0,245,255,0.06); border-left: 3px solid #00f5ff; border-radius: 8px; padding: 16px 20px; margin: 20px 0; font-size: 0.92rem; color: #d0d0e0; }
|
|
.pro-tip strong { color: #00f5ff; }
|
|
.step-card { background: #0e0e14; border: 1px solid #1a1a24; border-radius: 14px; padding: 20px 24px; margin: 16px 0; }
|
|
.step-card h3 { margin-top: 0; font-size: 1.05rem; }
|
|
.step-num { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: #00f5ff; color: #000; font-weight: 700; font-size: 0.85rem; margin-right: 8px; }
|
|
.prereq-group { margin-bottom: 16px; }
|
|
.prereq-group > .group-label { font-weight: 600; color: #00f5ff; margin-bottom: 4px; }
|
|
.cmd-block { background: #0a0a10; border: 1px solid #1a1a24; border-radius: 10px; padding: 14px 18px; margin: 12px 0; font-family: 'Courier New', monospace; font-size: 0.82rem; color: #c8f0ff; overflow-x: auto; }
|
|
.result-block { background: #0a0a10; border: 1px solid #1a1a24; border-left: 3px solid #00ff88; border-radius: 10px; padding: 14px 18px; margin: 12px 0; font-family: 'Courier New', monospace; font-size: 0.82rem; color: #88d8b0; overflow-x: auto; }
|
|
.cta-box { background: #12121c; border: 1px solid rgba(0,245,255,0.2); border-radius: 14px; padding: 28px 32px; margin: 32px 0; text-align: center; }
|
|
.cta-box h3 { font-size: 1.2rem; margin-bottom: 8px; color: #f0f0ff; }
|
|
.cta-box p { color: #999; margin-bottom: 16px; }
|
|
.btn { display: inline-block; background: transparent; border: 1px solid #00f5ff; color: #00f5ff; padding: 10px 28px; border-radius: 8px; font-weight: 600; font-size: 0.95rem; transition: all .2s; }
|
|
.btn:hover { background: rgba(0,245,255,0.1); text-decoration: none; }
|
|
@media (max-width: 600px) { body { padding: 24px 16px; } h1 { font-size: 1.5rem; } .cta-box { padding: 20px 16px; } }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<a class="back" href="https://derez.ai/#blog">← Back to Blog</a>
|
|
<h1>Connect Odoo to Hermes Agent via XML-RPC</h1>
|
|
<div class="meta">
|
|
<span>June 29, 2026</span>
|
|
<span class="area-tag">guide</span>
|
|
<span class="chip-tag">odoo</span>
|
|
<span class="chip-tag">xml-rpc</span>
|
|
<span class="chip-tag">hermes</span>
|
|
<span class="chip-tag chip-video">video</span>
|
|
</div>
|
|
|
|
<p>
|
|
This is the first and simplest method from the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">three ways to integrate Odoo with Hermes Agent</a> — direct XML-RPC API calls.
|
|
Your agent connects straight to your Odoo instance, no middleware, no MCP server, no n8n pipeline.
|
|
Just your agent and your ERP talking directly.
|
|
</p>
|
|
|
|
<p>
|
|
I made a <strong>YouTube short</strong> walking through this exact setup:
|
|
</p>
|
|
|
|
<div style="position:relative;width:100%;max-width:360px;margin:24px auto;aspect-ratio:9/16;border-radius:14px;overflow:hidden;background:#000">
|
|
<iframe src="https://www.youtube.com/embed/GVZMnq_NOxI" title="Odoo + AI Agent in 3 Minutes (XML-RPC)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen style="position:absolute;top:0;left:0;width:100%;height:100%"></iframe>
|
|
</div>
|
|
|
|
<p style="text-align:center;font-size:0.85rem;color:#888;margin-top:-12px">
|
|
<a href="https://www.youtube.com/shorts/GVZMnq_NOxI?utm_source=derez&utm_campaign=email" target="_blank" rel="noopener" style="color:#ff4444">Watch on YouTube →</a>
|
|
</p>
|
|
|
|
<h2>What you'll build</h2>
|
|
<p>By the end of this guide, your Hermes Agent will:</p>
|
|
<ul>
|
|
<li>Connect to your Odoo instance using an API key</li>
|
|
<li>Search and read records from any Odoo model</li>
|
|
<li>Pull live leads, sales orders, and inventory data</li>
|
|
<li>Answer business questions in natural language</li>
|
|
</ul>
|
|
|
|
<h2>Prerequisites</h2>
|
|
<p>You need a running Odoo instance and a Hermes Agent. Here are the exact credentials from my demo instance — use these to follow along, then swap in your own.</p>
|
|
|
|
<div class="prereq-group">
|
|
<div class="group-label">Integration — ODOO Community</div>
|
|
<p style="font-size:0.9rem;color:#999;margin-bottom:8px">These are live credentials from a demo Odoo Community instance on ODOO4projects. They work right now.</p>
|
|
<ul>
|
|
<li><strong>URL</strong> — <code>https://006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d.odoo4projects.com/</code></li>
|
|
<li><strong>Username</strong> — <code>changeme@odoo4projects.com</code></li>
|
|
<li><strong>Password</strong> — <code>changeme</code></li>
|
|
<li><strong>Database</strong> — <code>006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d</code></li>
|
|
<li><strong>API Key</strong> — <code>602e6ea0a0adda65b344a282495da3b05525f63f</code></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="prereq-group">
|
|
<div class="group-label">Runtime — Hermes Agent</div>
|
|
<ul>
|
|
<li>Hermes Agent installed and running (see the <a href="https://derez.ai/blog/posts/hermes-agent-setup-guide.html?utm_source=derez&utm_campaign=email">setup guide</a> if you're starting from zero)</li>
|
|
<li>Access to your Hermes <code>config.yaml</code></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h2>Step 1 — Generate an Odoo API Key</h2>
|
|
|
|
<div class="step-card">
|
|
<h3><span class="step-num">1</span> Go to Settings → Users → Technical</h3>
|
|
<p>In your Odoo instance, navigate to <strong>Settings → Users → select your user → Technical</strong>. Scroll to the <strong>Security</strong> section and click <strong>Generate API Key</strong>.</p>
|
|
<p>Name it something descriptive like <code>hermes-agent</code>. Copy the key immediately — Odoo only shows it once.</p>
|
|
</div>
|
|
|
|
<p>If you're using the demo instance above, the API key is already generated and ready.</p>
|
|
|
|
<h2>Step 2 — Add the Connection to Hermes</h2>
|
|
|
|
<p>Edit your Hermes <code>config.yaml</code> and add the Odoo connection block:</p>
|
|
|
|
<div class="cmd-block">
|
|
# ~/.hermes/config.yaml (or your profile config)<br />
|
|
<br />
|
|
odoo:<br />
|
|
url: "https://006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d.odoo4projects.com"<br />
|
|
db: "006-003-1d9183bb-8430-41a8-85a3-842b2b4d279d"<br />
|
|
user: "changeme@odoo4projects.com"<br />
|
|
api_key: "602e6ea0a0adda65b344a282495da3b05525f63f"<br />
|
|
readonly: true
|
|
</div>
|
|
|
|
<p>Set <code>readonly: true</code> if the agent only needs to query data (recommended for first setup). Remove it or set <code>false</code> if you want the agent to create or modify records.</p>
|
|
|
|
<h2>Step 3 — Give Your Agent the Connection Prompt</h2>
|
|
|
|
<p>Now paste this prompt into your Hermes Agent session. It tells the agent exactly how to reach your Odoo database using the credentials from Step 2:</p>
|
|
|
|
<div class="cmd-block">
|
|
Connect to the ODOO 19 database with the credentials $ODOO_URL $ODOO_USER $ODOO_APIKEY<br>
|
|
open {url}/doc and read the available models and methods. Use the JSON api to connect to ODOO and do not login to the web UI.<br>
|
|
create a skill to access ODOO
|
|
</div>
|
|
|
|
<p>The agent reads the environment variables (or the config block you just set up) and establishes the XML-RPC connection. Once it confirms, you're ready to query data.</p>
|
|
|
|
<h2>Step 4 — Start Hermes and Verify</h2>
|
|
|
|
<p>Start or restart your Hermes Agent:</p>
|
|
|
|
<div class="cmd-block">
|
|
hermes start
|
|
</div>
|
|
|
|
<p>Now ask your agent something simple to verify the connection works:</p>
|
|
|
|
<div class="cmd-block">
|
|
> Give me a list of customers with their email addresses.
|
|
</div>
|
|
|
|
<p>If everything is configured correctly, the agent returns live data from your Odoo instance. Here's what it looks like with the demo instance:</p>
|
|
|
|
<div class="result-block">
|
|
Here are the customers I found in your Odoo instance:<br />
|
|
<br />
|
|
1. Azure Interior — azure.interior@example.com<br />
|
|
2. Deco Addict — deco.addict@example.com<br />
|
|
3. Gem Furniture — gem.furniture@example.com<br />
|
|
4. Lumber Inc — lumber.inc@example.com<br />
|
|
5. The Kitchen Studio — the.kitchen.studio@example.com<br />
|
|
6. Best Design — best.design@example.com<br />
|
|
7. Grace Interior Design Studio — grace.interior.design@example.com<br />
|
|
8. Capital Park — capital.park@example.com<br />
|
|
<br />
|
|
Total: 8 customers in CRM
|
|
</div>
|
|
|
|
<p>That's it. Three minutes, one config block, and your agent talks to Odoo.</p>
|
|
|
|
<h2>What you can do now</h2>
|
|
|
|
<p>Once the connection is live, try these queries:</p>
|
|
|
|
<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> for low quantities</li>
|
|
<li><strong>"What's the total value of open quotes?"</strong> — sums <code>sale.order</code> with <code>state = 'draft'</code></li>
|
|
<li><strong>"Create a new lead for ACME Corp"</strong> — if <code>readonly</code> is off, the agent creates records too</li>
|
|
</ul>
|
|
|
|
<h2>Security first</h2>
|
|
|
|
<ul>
|
|
<li><strong>Create a dedicated Odoo user</strong> for the agent — never use your admin account</li>
|
|
<li><strong>Use read-only access</strong> unless the agent needs to create or modify records</li>
|
|
<li><strong>Restrict model access</strong> to only the models the agent needs (CRM, Sales, Inventory — not Settings)</li>
|
|
<li><strong>Rotate the API key</strong> periodically, and revoke immediately if it leaks</li>
|
|
<li><strong>The demo credentials above</strong> are from a sandbox instance — use your own for production</li>
|
|
</ul>
|
|
|
|
<h2>Why XML-RPC?</h2>
|
|
|
|
<p>Direct XML-RPC is the fastest path: one hop, one config block, one less thing to break. No MCP server to maintain, no n8n workflow to debug. For simple queries, demos, and prototyping, it's the right choice.</p>
|
|
|
|
<p>If you need deterministic business processes with audit trails (invoice creation, order processing), the <a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">n8n pipeline approach</a> is better. But for 80% of what you'll ask your agent to do — "who are my customers?", "what's my pipeline?", "show me pending orders" — XML-RPC is all you need.</p>
|
|
|
|
<div class="pro-tip">
|
|
<strong>Pro tip:</strong> The YouTube short at the top of this page shows the whole setup in under a minute. Bookmark it for when you need a quick refresher — the steps don't change between instances, only the credentials.
|
|
</div>
|
|
|
|
<div class="cta-box">
|
|
<h3>Try It Yourself — First Month Free</h3>
|
|
<p>Deploy a Hermes Agent with Odoo XML-RPC integration. Use coupon code <strong>blog950</strong> for your first month free.</p>
|
|
<a class="btn" href="https://derez.ai/#pricing">Get Your Agent →</a>
|
|
</div>
|
|
|
|
<p style="margin-top:48px;padding-top:24px;border-top:1px solid #1a1a24;font-size:0.85rem;color:#666;">
|
|
<a href="https://derez.ai" style="color:#00f5ff">derez.ai</a> — Deploy your AI agent in 5 minutes. ·
|
|
<a href="https://derez.ai/blog/posts/three-ways-integrate-odoo-hermes.html?utm_source=derez&utm_campaign=email">3 Ways to Integrate Odoo + Hermes</a> ·
|
|
<a href="https://derez.ai/blog/posts/speed-run-odoo-community-agent.html?utm_source=derez&utm_campaign=email">Full Speed Run</a> ·
|
|
<a href="https://derez.ai/blog/posts/speed-run-odoo-mcp.html?utm_source=derez&utm_campaign=email">MCP Approach</a>
|
|
</p>
|
|
</div>
|
|
</body>
|
|
</html>
|