mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-29 13:10:17 +00:00
7f71d4b177
Light mode fixes:
- Code blocks always use dark background (#0d1117) in both themes.
Previous behavior: setTheme('light') switched hljs to github.min.css
(light theme = near-black text) but kept code-wrap background dark,
producing invisible dark-on-dark text. Fix: always use github-dark
hljs + keep bg dark. Result: consistent readable code in both themes.
- code-header uses fixed dark colors (no longer rgba(255,255,255,0.04)
which was near-invisible on the dark bg it was compositing against).
- copy-btn uses fixed dark-theme colors for the same reason.
Index page updates:
- Comparison cards are now clickable links to deep-dive pages.
Card has onclick, role=link, tabindex=0, keyboard Enter handler,
arrow indicator (→) that animates on hover, and focus ring.
- Added compare-more pills row below the head-to-head cards linking
to all 8 comparison pages.
- CSS for .compare-pill, .compare-more, .card-arrow added.
New pages (compare/):
- compare/openclaw.html
- compare/claude-code.html
- compare/codex.html
- compare/opencode.html
- compare/cursor.html
- compare/copilot.html
- compare/claude-ai.html
- compare/chatgpt.html
Each page has: full CSS (light+dark themes), verdict banner, feature
comparison 2-col grid, 5-section narrative with official docs links,
full comparison table, who-should-choose section, nav pills to all 8
sibling pages, and CTA strip. Content drawn from HERMES.md (with the
/loop and scheduling corrections from PR #261 applied).
369 lines
25 KiB
HTML
369 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}
|
|
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}
|
|
.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)}
|
|
@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">← All comparisons</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>
|
|
</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>
|