Files
hermes-webui/compare/copilot.html
T
Nathan Esquenazi 737cbb2739 fix: full QA pass — section structure, stale models, Perplexity table row
index.html:
- CRITICAL layout bug: compare-more pills div was inside #why section
  (an orphaned block from a previous failed insertion attempt), causing
  the #why section to be 5705px tall and the pill bar to appear right
  after the Why section header instead of after the Compare section.
  Fixed by removing the stray block and placing compare-more correctly
  inside #compare section, after the head-to-head cards.
- Added Perplexity Computer row to the main comparison table (was missing;
  it had a card and pills but no row in the overview table).

Model reference updates:
- chatgpt.html: GPT-4o → GPT-5.4, o3 → o3-pro (two instances each)
- claude-ai.html: GPT-4 → GPT-5.4 in provider-flexibility bullet
- claude-code.html: 'GPT-4o for one thing' → 'GPT-5.4 for one thing,
  Claude Sonnet 4.6 for another' in provider-agnostic routing example
- copilot.html: 'Claude, GPT-4o, Gemini' → 'Claude Sonnet 4.6, GPT-5.4,
  Gemini' in model roster description
- cursor.html: 'valued at $29.3B' → 'valued at over $29B' (durable phrasing)
2026-04-12 00:08:17 +00:00

376 lines
26 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. GitHub Copilot | Comparison</title>
<meta name="description" content="Copilot now has Agentic Memory (repo-scoped, default enabled March 2026), a Coding Agent that opens PRs autonomously, and deep GitHub integration across IDE, CLI, and github.com." />
<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. GitHub Copilot</span>
</div>
<div class="page-label">Comparison</div>
<h1 class="page-title">Hermes vs. GitHub Copilot</h1>
<p class="page-sub">Copilot now has Agentic Memory (repo-scoped, default enabled March 2026), a Coding Agent that opens PRs autonomously, and deep GitHub integration across IDE, CLI, and github.com.</p>
<div class="verdict">
<div class="verdict-icon">🐙</div>
<div class="verdict-text">
<strong>Different contexts.</strong>
<p>Copilot excels at GitHub-native workflows and in-editor completions. Hermes is a self-hosted persistent agent across all your tools and surfaces, not just GitHub.</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">Agentic memory</span><span class="fc-val yes">Yes, permanent, all projects</span></div>
<div class="fc-row"><span class="fc-key">Memory expiry</span><span class="fc-val yes">None</span></div>
<div class="fc-row"><span class="fc-key">Scheduled jobs</span><span class="fc-val yes">Yes, self-hosted cron</span></div>
<div class="fc-row"><span class="fc-key">Coding Agent (autonomous PRs)</span><span class="fc-val no">N/A</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">Messaging/multi-surface</span><span class="fc-val yes">Yes, 15+</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">GitHub-native integration</span><span class="fc-val partial">Via tools</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">Memory inspectability</span><span class="fc-val yes">Yes, markdown</span></div>
</div>
<div class="fc-col">
<div class="fc-col-label">Comparing</div>
<div class="fc-col-name">GitHub Copilot</div>
<div class="fc-row"><span class="fc-key">In-editor autocomplete</span><span class="fc-val yes">Excellent</span></div>
<div class="fc-row"><span class="fc-key">Agentic memory</span><span class="fc-val partial">Yes, repo-scoped, 28-day expiry (since Mar 2026)</span></div>
<div class="fc-row"><span class="fc-key">Memory expiry</span><span class="fc-val no">28 days</span></div>
<div class="fc-row"><span class="fc-key">Scheduled jobs</span><span class="fc-val no">No (issue-driven only, not time-based)</span></div>
<div class="fc-row"><span class="fc-key">Coding Agent (autonomous PRs)</span><span class="fc-val yes">Yes, GA March 2026</span></div>
<div class="fc-row"><span class="fc-key">Self-hosted</span><span class="fc-val no">No (GitHub infrastructure)</span></div>
<div class="fc-row"><span class="fc-key">Messaging/multi-surface</span><span class="fc-val partial">Via Copilot CLI/extensions</span></div>
<div class="fc-row"><span class="fc-key">Provider-agnostic</span><span class="fc-val no">No (GitHub models only)</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">GitHub-native integration</span><span class="fc-val yes">Native (issues, PRs, repos)</span></div>
<div class="fc-row"><span class="fc-key">Data sovereignty</span><span class="fc-val no">No (GitHub servers)</span></div>
<div class="fc-row"><span class="fc-key">Memory inspectability</span><span class="fc-val no">Limited</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">vs. Cursor</a>
<a href="copilot.html" class="cpill active">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">Copilot has grown from an autocomplete tool into a GitHub-native agent platform. The gaps are in scheduling, provider flexibility, and anything outside the GitHub ecosystem.</p>
<div class="narrative">
<h3>Copilot in 2026</h3>
<p>GitHub Copilot has evolved significantly. <strong>Agentic Memory</strong> entered public preview on January 15, 2026, and became default for all users on March 4, 2026 — giving Copilot per-repository context memory that persists across conversations. The <strong>Coding Agent</strong> reached GA in March 2026, enabling autonomous issue-to-PR workflows without a developer in the loop. Copilot now spans the IDE (VS Code, JetBrains, Neovim), the GitHub CLI, github.com, and Copilot Chat, making it a genuine multi-surface platform.</p>
<h3>Memory: repo-scoped with expiry vs. permanent and cross-project</h3>
<p>Copilot's Agentic Memory is <strong>scoped to individual repositories</strong> and has a <strong>28-day expiry</strong> — facts learned in one repo don't carry over to another, and context fades over time. Hermes builds permanent memory that <strong>accumulates indefinitely across every project</strong>. If your agent learns something about your infrastructure, your preferred testing patterns, or your team's conventions, that knowledge stays and deepens — it doesn't expire after a month or reset when you switch repos.</p>
<h3>The GitHub-native advantage: where Copilot is genuinely stronger</h3>
<p>Copilot's Coding Agent is a real competitive advantage for GitHub-centric workflows. It can read an issue, understand the codebase, implement a fix, open a PR, and respond to code review comments — all without a developer manually driving the process. It has <strong>deep integration with GitHub Actions</strong> for CI/CD context, native access to issue metadata, PR diffs, and repository history. If your team lives in GitHub and you want an agent that works natively in that environment, Copilot has built-in context that external tools can only approximate through APIs.</p>
<h3>Scheduling: no time-based triggers</h3>
<p>Copilot's Coding Agent is <strong>issue-driven</strong>, not time-driven. You can't tell Copilot to run a task every morning at 6am, generate a weekly report, or monitor a metric and trigger an action when a threshold is crossed. Hermes has full <strong>cron-based scheduling</strong>: jobs run on whatever time-based schedule you define, with no manual trigger required. For monitoring, reporting, data pipelines, and any automation that needs to run on a clock, Hermes covers ground that Copilot cannot.</p>
<h3>Provider lock-in and cost</h3>
<p>Copilot routes all requests through <strong>GitHub's model infrastructure</strong> — you can choose between Claude Sonnet 4.6, GPT-5.4, Gemini, and others, but only through GitHub's proxied endpoints. You cannot point Copilot at a local Ollama instance, a custom OpenAI-compatible endpoint, or a regional cloud API. Hermes is <strong>fully provider-agnostic</strong>: local models, hosted APIs, any OpenAI-compatible endpoint, or provider-specific SDKs all work. For teams with cost constraints, data residency requirements, or a preference for specific model providers, this flexibility matters.</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>GitHub Copilot</th>
<th>Hermes</th>
</tr>
</thead>
<tbody>
<tr><td>In-editor autocomplete</td><td class="c-yes">Excellent</td><td class="c-no">No</td></tr>
<tr class="hl"><td>Agentic Memory</td><td class="c-partial">Yes, repo-scoped, 28-day expiry</td><td class="c-yes">Yes, permanent, all projects</td></tr>
<tr class="hl"><td>Memory expiry</td><td class="c-no">28 days</td><td class="c-yes">None</td></tr>
<tr class="hl"><td>Memory scope</td><td class="c-partial">Per repository</td><td class="c-yes">Cross-project</td></tr>
<tr><td>Coding Agent (autonomous PRs)</td><td class="c-yes">Yes, GA March 2026</td><td class="c-no">N/A</td></tr>
<tr class="hl"><td>Time-based scheduling</td><td class="c-no">No (issue-driven only)</td><td class="c-yes">Yes, self-hosted cron</td></tr>
<tr><td>Messaging</td><td class="c-partial">Via Copilot CLI/extensions</td><td class="c-yes">Yes, 15+ first-party</td></tr>
<tr><td>Self-hosted</td><td class="c-no">No (GitHub infra)</td><td class="c-yes">Yes</td></tr>
<tr><td>Provider-agnostic</td><td class="c-no">No (GitHub models only)</td><td class="c-yes">Yes</td></tr>
<tr><td>GitHub-native</td><td class="c-yes">Native (issues, PRs, repos)</td><td class="c-partial">Via API tools</td></tr>
<tr><td>Open source</td><td class="c-no">No</td><td class="c-yes">Yes, MIT</td></tr>
<tr class="hl"><td>Data sovereignty</td><td class="c-no">No (GitHub servers)</td><td class="c-yes">Yes, your hardware</td></tr>
<tr><td>Memory inspectability</td><td class="c-no">Limited</td><td class="c-yes">Yes, markdown</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 if you need</div>
<ul>
<li><strong>Permanent cross-project memory</strong> that never expires</li>
<li><strong>Time-based scheduling</strong> — cron jobs, daily reports, monitoring</li>
<li><strong>Messaging integrations</strong> on 15+ platforms</li>
<li><strong>Provider flexibility</strong> — local models, custom endpoints, any API</li>
<li><strong>Self-hosted execution</strong> and full data sovereignty</li>
<li>Open source, MIT licensed, no GitHub dependency</li>
</ul>
</div>
<div class="who-card choose-other">
<div class="who-card-label">Choose Copilot (or both) for</div>
<ul>
<li><strong>GitHub-native workflows</strong>: issues → autonomous PRs</li>
<li><strong>Code review context</strong> with deep repo and PR history</li>
<li><strong>GitHub Actions integration</strong> for CI/CD-aware agents</li>
<li>Managed infrastructure — no setup, no server to maintain</li>
<li>Best-in-class <strong>in-editor autocomplete</strong></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>