Files
hermes-webui/compare/cursor.html
T
Nathan Esquenazi 0205ef810a fix: mobile nav broken JS, hamburger menu, viewport overflow
index.html:
- CRITICAL JS BUG: setTheme() had a ghost orphan 'else' block left from
  the old hljs-switching version that was never fully removed. The function
  correctly closed at line 2077 but a dangling '} else { ... hljsTheme.href
  ... }' remained at lines 2078-2082. This caused a JS syntax error that
  silently killed the entire <script> block — theme toggle, hamburger menu,
  copy buttons, nav active state, smooth scroll: all broken. Fixed by
  removing the dead code entirely.
- Add overflow-x: hidden to html element to prevent any overflowing content
  from enabling horizontal scroll on mobile.

compare/*.html (all 9 pages):
- Add overflow-x: hidden to html element (same fix, same reason)
- Add @media (max-width: 640px) block that hides .nav-back span text and
  the 'Get started' CTA on narrow screens. The compare nav has three items
  (logo, back-link, theme+CTA) with no hamburger — at mobile widths these
  were colliding/overflowing. Now at ≤640px: back-link shows '←' only
  (span hidden), CTA hidden, theme toggle stays visible and usable.
- Wrap nav-back text in <span> so the mobile rule can target it
- Add word-break: break-word and min-width: 0 to .narrative to prevent
  long words/URLs from forcing horizontal overflow
2026-04-11 23:49:09 +00:00

376 lines
25 KiB
HTML

<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Hermes vs. Cursor | Comparison</title>
<meta name="description" content="Cursor has per-project Memories, cloud Automations (March 2026), Slack integration, and v3.0 agent-first with 30+ marketplace plugins. It's not a narrow editor anymore." />
<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:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet" />
<style>
:root {
--bg-primary: #0d1117;
--bg-secondary: #161b22;
--bg-tertiary: #21262d;
--bg-card: #161b22;
--bg-card-hover: #1c2128;
--border: #30363d;
--border-hover: #484f58;
--text-primary: #e6edf3;
--text-secondary: #8b949e;
--text-muted: #6e7681;
--accent: #f0a500;
--accent-dim: #c88800;
--accent-glow: rgba(240,165,0,0.15);
--accent-subtle: rgba(240,165,0,0.08);
--green: #3fb950;
--red: #f85149;
--blue: #58a6ff;
--purple: #bc8cff;
--nav-height: 64px;
--radius: 8px;
--radius-lg: 12px;
--shadow: 0 1px 3px rgba(0,0,0,0.4),0 4px 16px rgba(0,0,0,0.3);
}
[data-theme="light"] {
--bg-primary: #ffffff;
--bg-secondary: #f6f8fa;
--bg-tertiary: #eaeef2;
--bg-card: #ffffff;
--bg-card-hover: #f6f8fa;
--border: #d0d7de;
--border-hover: #9198a1;
--text-primary: #1f2328;
--text-secondary: #656d76;
--text-muted: #9198a1;
--accent: #c07800;
--accent-dim: #a06000;
--accent-glow: rgba(192,120,0,0.12);
--accent-subtle: rgba(192,120,0,0.06);
--green: #1a7f37;
--red: #cf222e;
--blue: #0969da;
--purple: #7c3aed;
--shadow: 0 1px 3px rgba(0,0,0,0.1),0 4px 16px rgba(0,0,0,0.06);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;font-size:16px;overflow-x:hidden}
body{font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;transition:background 0.2s,color 0.2s;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none;transition:color 0.15s}
a:hover{color:var(--accent-dim)}
img{max-width:100%}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:var(--bg-secondary)}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
#nav{position:fixed;top:0;left:0;right:0;height:var(--nav-height);background:rgba(13,17,23,0.92);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);z-index:1000}
[data-theme="light"] #nav{background:rgba(255,255,255,0.92)}
.nav-inner{max-width:1100px;margin:0 auto;padding:0 24px;height:100%;display:flex;align-items:center;justify-content:space-between;gap:16px}
.nav-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1.1rem;color:var(--text-primary);text-decoration:none;flex-shrink:0}
.nav-logo-icon{width:32px;height:32px;background:linear-gradient(135deg,var(--accent),var(--accent-dim));border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:18px;line-height:1}
.nav-back{display:flex;align-items:center;gap:6px;color:var(--text-secondary);font-size:0.875rem;font-weight:500;padding:6px 12px;border-radius:6px;transition:color 0.15s,background 0.15s;text-decoration:none}
.nav-back:hover{color:var(--text-primary);background:var(--bg-tertiary)}
.btn-theme{background:none;border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;padding:7px 10px;border-radius:6px;font-size:15px;line-height:1;transition:border-color 0.15s,color 0.15s,background 0.15s}
.btn-theme:hover{border-color:var(--border-hover);color:var(--text-primary);background:var(--bg-tertiary)}
.btn-cta{background:var(--accent);color:#000;font-size:0.8rem;font-weight:600;padding:7px 14px;border-radius:6px;border:none;cursor:pointer;text-decoration:none;display:inline-block;transition:background 0.15s,transform 0.1s;white-space:nowrap}
.btn-cta:hover{background:var(--accent-dim);color:#000;transform:translateY(-1px)}
main{padding-top:var(--nav-height)}
.hero{padding:60px 24px 48px;background:var(--bg-primary);position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-200px;left:50%;transform:translateX(-50%);width:800px;height:400px;background:radial-gradient(ellipse at center,var(--accent-glow) 0%,transparent 70%);pointer-events:none}
.container{max-width:1100px;margin:0 auto;position:relative}
.section{padding:64px 24px}
.section-alt{background:var(--bg-secondary)}
.breadcrumb{display:flex;align-items:center;gap:8px;font-size:0.8rem;color:var(--text-muted);margin-bottom:24px;flex-wrap:wrap}
.breadcrumb a{color:var(--text-muted)}
.breadcrumb a:hover{color:var(--accent)}
.breadcrumb-sep{opacity:0.4}
.page-label{font-size:0.75rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--accent);margin-bottom:12px}
.page-title{font-size:clamp(2rem,5vw,3.2rem);font-weight:800;line-height:1.1;letter-spacing:-0.02em;margin-bottom:16px}
.page-sub{font-size:1.05rem;color:var(--text-secondary);max-width:680px;line-height:1.7;margin-bottom:32px}
.verdict{display:flex;align-items:flex-start;gap:16px;background:var(--accent-subtle);border:1px solid rgba(240,165,0,0.2);border-radius:var(--radius-lg);padding:20px 24px;margin-bottom:48px}
[data-theme="light"] .verdict{border-color:rgba(192,120,0,0.2)}
.verdict-icon{font-size:1.6rem;flex-shrink:0;line-height:1}
.verdict-text strong{color:var(--text-primary);display:block;margin-bottom:4px;font-size:1rem}
.verdict-text p{color:var(--text-secondary);font-size:0.9rem;line-height:1.6;margin:0}
.section-title{font-size:clamp(1.4rem,3vw,1.9rem);font-weight:700;margin-bottom:8px;color:var(--text-primary)}
.section-body{font-size:1rem;color:var(--text-secondary);max-width:720px;line-height:1.7;margin-bottom:32px}
.feature-compare{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:40px}
@media(max-width:700px){.feature-compare{grid-template-columns:1fr}}
.fc-col{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px}
.fc-col.hermes{border-color:var(--accent);border-width:2px}
.fc-col-label{font-size:0.75rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:16px;color:var(--text-muted)}
.fc-col.hermes .fc-col-label{color:var(--accent)}
.fc-col-name{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin-bottom:20px}
.fc-row{display:flex;align-items:flex-start;gap:10px;padding:9px 0;border-bottom:1px solid var(--border)}
.fc-row:last-child{border-bottom:none}
.fc-key{flex:1;font-size:0.875rem;color:var(--text-secondary)}
.fc-val{font-size:0.875rem;font-weight:500;text-align:right;min-width:60px}
.fc-val.yes{color:var(--green)}
.fc-val.no{color:var(--text-muted)}
.fc-val.partial{color:var(--accent)}
.fc-val.preview{color:var(--purple)}
.fc-val.cloud{color:var(--blue)}
.narrative{max-width:780px;min-width:0;word-break:break-word}
.narrative h3{font-size:1.1rem;font-weight:700;color:var(--text-primary);margin:32px 0 10px}
.narrative h3:first-child{margin-top:0}
.narrative p{font-size:0.975rem;color:var(--text-secondary);line-height:1.75;margin-bottom:16px}
.narrative ul{padding-left:20px;margin-bottom:16px}
.narrative li{font-size:0.975rem;color:var(--text-secondary);line-height:1.7;margin-bottom:6px}
.narrative strong{color:var(--text-primary)}
.narrative a{color:var(--accent)}
.table-wrap{overflow-x:auto;border-radius:var(--radius-lg);border:1px solid var(--border);margin:24px 0 40px}
table{width:100%;border-collapse:collapse;font-size:0.875rem}
thead th{background:var(--bg-tertiary);color:var(--text-secondary);font-weight:600;font-size:0.78rem;letter-spacing:0.04em;text-transform:uppercase;padding:12px 16px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}
thead th:first-child{color:var(--text-primary)}
tbody tr{border-bottom:1px solid var(--border);transition:background 0.1s}
tbody tr:last-child{border-bottom:none}
tbody tr:hover{background:var(--bg-card-hover)}
tbody tr.hl{background:var(--accent-subtle)}
tbody tr.hl:hover{background:rgba(240,165,0,0.12)}
tbody td{padding:12px 16px;color:var(--text-secondary);vertical-align:middle}
tbody td:first-child{font-weight:600;color:var(--text-primary);white-space:nowrap}
.c-yes{color:var(--green);font-weight:600}
.c-no{color:var(--text-muted);font-size:0.82rem}
.c-partial{color:var(--accent);font-size:0.82rem}
.c-cloud{color:var(--blue);font-size:0.82rem}
.c-prev{color:var(--purple);font-size:0.82rem}
.who-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:8px}
@media(max-width:600px){.who-grid{grid-template-columns:1fr}}
.who-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px}
.who-card.choose-hermes{border-color:var(--green)}
.who-card.choose-other{border-color:var(--border)}
.who-card-label{font-size:0.72rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;margin-bottom:10px;color:var(--text-muted)}
.who-card.choose-hermes .who-card-label{color:var(--green)}
.who-card ul{padding-left:18px}
.who-card li{font-size:0.9rem;color:var(--text-secondary);line-height:1.65;margin-bottom:6px}
.who-card strong{color:var(--text-primary)}
.cta-strip{background:var(--bg-secondary);border-top:1px solid var(--border);padding:40px 24px;text-align:center}
.cta-strip h2{font-size:1.4rem;font-weight:700;margin-bottom:8px}
.cta-strip p{color:var(--text-secondary);margin-bottom:24px;font-size:0.975rem}
.cta-btns{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn-primary{display:inline-flex;align-items:center;gap:6px;background:var(--accent);color:#000;font-weight:600;font-size:0.95rem;padding:12px 22px;border-radius:8px;transition:background 0.15s,transform 0.1s}
.btn-primary:hover{background:var(--accent-dim);color:#000;transform:translateY(-1px)}
.btn-secondary{display:inline-flex;align-items:center;gap:6px;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-weight:500;font-size:0.95rem;padding:12px 22px;border-radius:8px;transition:border-color 0.15s,background 0.15s}
.btn-secondary:hover{border-color:var(--border-hover);background:var(--bg-card-hover);color:var(--text-primary)}
.compare-nav{display:flex;flex-wrap:wrap;gap:8px;margin-top:40px;padding-top:32px;border-top:1px solid var(--border)}
.compare-nav-label{width:100%;font-size:0.75rem;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;color:var(--text-muted);margin-bottom:4px}
.cpill{display:inline-block;padding:6px 14px;border:1px solid var(--border);border-radius:100px;font-size:0.82rem;font-weight:500;color:var(--text-secondary);transition:border-color 0.15s,color 0.15s,background 0.15s}
.cpill:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}
.cpill.active{border-color:var(--accent);color:var(--accent);background:var(--accent-subtle)}
/* ── Mobile nav: prevent 3-item nav overflow ── */
@media(max-width:640px){
.nav-back span{display:none}
.btn-cta{display:none}
.nav-inner{gap:8px}
}
@media(max-width:768px){
.section{padding:48px 16px}
.hero{padding:48px 16px 36px}
.feature-compare{grid-template-columns:1fr}
}
</style>
</head>
<body>
<nav id="nav">
<div class="nav-inner">
<a href="../index.html" class="nav-logo">
<div class="nav-logo-icon"></div>
Hermes
</a>
<a href="../index.html#compare" class="nav-back"><span>← All comparisons</span></a>
<div style="display:flex;align-items:center;gap:8px;flex-shrink:0">
<button class="btn-theme" id="theme-toggle" aria-label="Toggle theme">🌙</button>
<a href="https://hermes-agent.nousresearch.com/docs/getting-started/installation" class="btn-cta" target="_blank" rel="noopener">Get started →</a>
</div>
</div>
</nav>
<main>
<div class="hero">
<div class="container">
<div class="breadcrumb">
<a href="../index.html">Hermes</a>
<span class="breadcrumb-sep">/</span>
<a href="../index.html#compare">Comparisons</a>
<span class="breadcrumb-sep">/</span>
<span>vs. Cursor</span>
</div>
<div class="page-label">Comparison</div>
<h1 class="page-title">Hermes vs. Cursor</h1>
<p class="page-sub">Cursor has per-project Memories, cloud Automations (March 2026), Slack integration, and v3.0 agent-first with 30+ marketplace plugins. It's not a narrow editor anymore.</p>
<div class="verdict">
<div class="verdict-icon">✏️</div>
<div class="verdict-text">
<strong>Different primary use case.</strong>
<p>Cursor is exceptional for in-editor coding. Hermes is a persistent server agent. Most devs use both: Cursor in the editor, Hermes for continuity and automation across everything else.</p>
</div>
</div>
<div class="feature-compare">
<div class="fc-col hermes">
<div class="fc-col-label">You're here</div>
<div class="fc-col-name">Hermes</div>
<div class="fc-row"><span class="fc-key">In-editor autocomplete</span><span class="fc-val no">No</span></div>
<div class="fc-row"><span class="fc-key">Inline diff/refactor</span><span class="fc-val partial">Via shell</span></div>
<div class="fc-row"><span class="fc-key">Cross-session memory</span><span class="fc-val yes">Yes, all projects</span></div>
<div class="fc-row"><span class="fc-key">Scheduled background jobs</span><span class="fc-val yes">Yes, self-hosted cron</span></div>
<div class="fc-row"><span class="fc-key">Messaging/multi-surface</span><span class="fc-val yes">Yes, many platforms</span></div>
<div class="fc-row"><span class="fc-key">Self-hosted</span><span class="fc-val yes">Yes</span></div>
<div class="fc-row"><span class="fc-key">Data sovereignty</span><span class="fc-val yes">Yes, your hardware</span></div>
<div class="fc-row"><span class="fc-key">Provider-agnostic</span><span class="fc-val yes">Yes</span></div>
<div class="fc-row"><span class="fc-key">Open source</span><span class="fc-val yes">Yes, MIT</span></div>
<div class="fc-row"><span class="fc-key">Always-on server process</span><span class="fc-val yes">Yes</span></div>
<div class="fc-row"><span class="fc-key">Memory inspectability</span><span class="fc-val yes">Yes, markdown</span></div>
<div class="fc-row"><span class="fc-key">Agent marketplace</span><span class="fc-val no">N/A</span></div>
</div>
<div class="fc-col">
<div class="fc-col-label">Comparing</div>
<div class="fc-col-name">Cursor</div>
<div class="fc-row"><span class="fc-key">In-editor autocomplete</span><span class="fc-val yes">Excellent (Supermaven)</span></div>
<div class="fc-row"><span class="fc-key">Inline diff/refactor</span><span class="fc-val yes">Yes, first-class</span></div>
<div class="fc-row"><span class="fc-key">Cross-session memory</span><span class="fc-val partial">Yes, per-project (since June 2025)</span></div>
<div class="fc-row"><span class="fc-key">Scheduled background jobs</span><span class="fc-val cloud">Yes, Automations on cloud VMs (March 2026)</span></div>
<div class="fc-row"><span class="fc-key">Messaging/multi-surface</span><span class="fc-val partial">Slack bot, web app, mobile</span></div>
<div class="fc-row"><span class="fc-key">Self-hosted</span><span class="fc-val no">No</span></div>
<div class="fc-row"><span class="fc-key">Data sovereignty</span><span class="fc-val no">No, cloud VMs</span></div>
<div class="fc-row"><span class="fc-key">Provider-agnostic</span><span class="fc-val partial">Partial (Claude/GPT mainly)</span></div>
<div class="fc-row"><span class="fc-key">Open source</span><span class="fc-val no">No</span></div>
<div class="fc-row"><span class="fc-key">Always-on server process</span><span class="fc-val no">No (app or cloud-scheduled)</span></div>
<div class="fc-row"><span class="fc-key">Memory inspectability</span><span class="fc-val partial">Partial (local but less accessible)</span></div>
<div class="fc-row"><span class="fc-key">Agent marketplace</span><span class="fc-val yes">30+ plugins (v3.0)</span></div>
</div>
</div>
<!-- Compare nav pills -->
<div class="compare-nav">
<div class="compare-nav-label">More comparisons</div>
<a href="openclaw.html" class="cpill">vs. OpenClaw</a>
<a href="claude-code.html" class="cpill">vs. Claude Code</a>
<a href="codex.html" class="cpill">vs. Codex</a>
<a href="opencode.html" class="cpill">vs. OpenCode</a>
<a href="cursor.html" class="cpill active">vs. Cursor</a>
<a href="copilot.html" class="cpill">vs. Copilot</a>
<a href="claude-ai.html" class="cpill">vs. Claude.ai</a>
<a href="chatgpt.html" class="cpill">vs. ChatGPT</a>
<a href="perplexity-computer.html" class="cpill">vs. Perplexity Computer</a>
</div>
</div>
</div>
<!-- Narrative -->
<div class="section section-alt">
<div class="container">
<h2 class="section-title">The details</h2>
<p class="section-body">Cursor has evolved far beyond a code editor. But its core identity and its strongest features remain IDE-first.</p>
<div class="narrative">
<h3>Cursor in 2026 is not Cursor in 2024</h3>
<p>Cursor has moved fast. <strong>Memories</strong> launched in June 2025, giving per-project context persistence. <strong>Automations</strong> launched in March 2026, enabling scheduled cloud-executed agent tasks. <strong>Cursor v3.0</strong> (April 2026) repositioned it as agent-first with a 30+ plugin marketplace. The company closed at a <strong>$29.3B valuation</strong> with $2B ARR, and the Supermaven acquisition brought one of the fastest autocomplete engines in the industry. This is a serious, well-funded product moving quickly.</p>
<h3>What Cursor is really for</h3>
<p>Cursor's strongest features are fundamentally IDE features: <strong>autocomplete as you type</strong> with Supermaven-powered latency, <strong>inline diffs</strong> that let you accept or reject changes line-by-line, and <strong>refactoring with full file context</strong> visible in the editor. No terminal-based agent replicates the inline diff experience. If you spend most of your coding time in an editor and want AI that integrates deeply into that workflow, Cursor is the category leader.</p>
<h3>Memory and scheduling: per-project cloud vs. cross-project self-hosted</h3>
<p>Cursor Memories are <strong>per-project</strong> and stored on Cursor's cloud infrastructure — they persist as long as your subscription is active. Cursor Automations run on <strong>Cursor cloud VMs</strong>, not on your own server. Hermes runs on your hardware: memory accumulates <strong>cross-project</strong> indefinitely, and scheduled jobs run on whatever server you choose. The architectural difference matters for teams that need to keep code off external infrastructure, or who want memory that spans multiple projects and codebases.</p>
<h3>Data sovereignty</h3>
<p>When Cursor Automations execute your code on cloud VMs, your code passes through Cursor's infrastructure. For open-source side projects this is often fine. For proprietary business logic, regulated data, or security-sensitive codebases, the question of <strong>where your code runs</strong> is non-trivial. Hermes runs entirely on your own hardware — the agent, the scheduler, the memory store, and any code it executes never leave your network unless you explicitly push something out.</p>
<h3>The combination pattern</h3>
<p>These tools work well together. Use <strong>Cursor in the editor</strong> for autocomplete, inline diffs, and active coding sessions. Use <strong>Hermes in the background</strong> for cross-project memory, headless scheduled tasks, messaging integrations, and continuity between sessions. Many teams run both: Cursor for the creative act of writing code, Hermes for everything that needs to persist and run when no one is watching.</p>
</div>
</div>
</div>
<!-- Full table -->
<div class="section">
<div class="container">
<h2 class="section-title">Full feature comparison</h2>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>Feature</th>
<th>Cursor</th>
<th>Hermes</th>
</tr>
</thead>
<tbody>
<tr><td>In-editor autocomplete</td><td class="c-yes">Excellent (Supermaven)</td><td class="c-no">No</td></tr>
<tr><td>Inline diff/refactor</td><td class="c-yes">Yes, first-class</td><td class="c-partial">Via shell tools</td></tr>
<tr class="hl"><td>Memory scope</td><td class="c-partial">Per-project</td><td class="c-yes">Cross-project, all time</td></tr>
<tr class="hl"><td>Memory location</td><td class="c-partial">Cursor cloud</td><td class="c-yes">Your server</td></tr>
<tr class="hl"><td>Scheduled jobs</td><td class="c-cloud">Yes, Automations (cloud VMs)</td><td class="c-yes">Yes, self-hosted cron</td></tr>
<tr><td>Agent execution location</td><td class="c-cloud">Cursor cloud VMs</td><td class="c-yes">Your hardware</td></tr>
<tr><td>Messaging</td><td class="c-partial">Slack bot, web, mobile</td><td class="c-yes">Yes, 15+ platforms</td></tr>
<tr><td>Self-hosted</td><td class="c-no">No</td><td class="c-yes">Yes</td></tr>
<tr class="hl"><td>Data sovereignty</td><td class="c-no">No (cloud VMs)</td><td class="c-yes">Yes, your hardware</td></tr>
<tr><td>Provider-agnostic</td><td class="c-partial">Partial (Claude/GPT mainly)</td><td class="c-yes">Yes</td></tr>
<tr><td>Open source</td><td class="c-no">No</td><td class="c-yes">Yes, MIT</td></tr>
<tr><td>Always-on process</td><td class="c-no">No</td><td class="c-yes">Yes, server daemon</td></tr>
<tr><td>Agent marketplace</td><td class="c-yes">30+ plugins (v3.0)</td><td class="c-no">N/A</td></tr>
</tbody>
</table>
</div>
<!-- Who section -->
<h2 class="section-title" style="margin-top:48px">Which should you choose?</h2>
<div class="who-grid">
<div class="who-card choose-hermes">
<div class="who-card-label">Choose Hermes for</div>
<ul>
<li><strong>Self-hosted execution</strong> — nothing leaves your network</li>
<li><strong>Data sovereignty</strong> for proprietary or regulated code</li>
<li><strong>Cross-project memory</strong> that accumulates indefinitely</li>
<li><strong>Headless scheduling</strong> with no GUI required</li>
<li><strong>Messaging integrations</strong> across 15+ platforms</li>
<li>Open source, MIT licensed</li>
</ul>
</div>
<div class="who-card choose-other">
<div class="who-card-label">Choose Cursor (or both) for</div>
<ul>
<li><strong>Best-in-class in-editor autocomplete</strong> and inline diffs</li>
<li><strong>Slack automations</strong> and cloud-scheduled agent tasks</li>
<li>Access to the <strong>30+ plugin marketplace</strong> (v3.0)</li>
<li>Deep <strong>IDE integration</strong> with full-file refactoring context</li>
<li>Managed infrastructure — no server to maintain</li>
</ul>
</div>
</div>
</div>
</div>
<!-- CTA -->
<div class="cta-strip">
<div class="container">
<h2>Try Hermes for free</h2>
<p>Self-hosted, open source, and running in minutes. No cloud account required.</p>
<div class="cta-btns">
<a href="https://hermes-agent.nousresearch.com/docs/getting-started/installation" class="btn-primary" target="_blank" rel="noopener">Get started →</a>
<a href="https://github.com/nousresearch/hermes" class="btn-secondary" target="_blank" rel="noopener">View on GitHub</a>
</div>
</div>
</div>
</main>
<script>
const html = document.documentElement;
const toggle = document.getElementById('theme-toggle');
function setTheme(t) {
html.setAttribute('data-theme', t);
localStorage.setItem('theme', t);
toggle.textContent = t === 'light' ? '🌙' : '☀️';
}
const saved = localStorage.getItem('theme');
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (saved) setTheme(saved);
else if (!prefersDark) setTheme('light');
else setTheme('dark');
toggle.addEventListener('click', () => setTheme(html.getAttribute('data-theme') === 'dark' ? 'light' : 'dark'));
</script>
</body>
</html>