Files
hermes-webui/memory/index.html
T
Hermes Agent 2ff91f7287 fix(memory): address 8 remaining feedback items
1. OpenViking link: OpenViking/OpenViking (404) → volcengine/OpenViking (22.4K stars, verified)
2. OpenViking L0/L1/L2 description: rewritten as resolution depth (50/500/full tokens),
   not temperature hierarchy — this is the actual mechanism behind the token savings
3. Hindsight benchmark: standardized to 91.4–94.6% everywhere (was mixed 91–94% / 91–94.6%)
4. Hindsight link: provider name now points to hindsight.vectorize.io (product page);
   GitHub link kept in meta line for developers
5. ByteRover CLI license: noted as custom license (campfirein/byterover-cli uses 'Other'),
   not MIT as was implied
6. Mobile column visibility: Paid from now stays visible on mobile; Tools column hidden
   instead (Stars already hidden) — pricing is more decision-relevant than tool count
7. OG/Twitter meta tags added: og:title, og:description, og:image, twitter:card,
   twitter:title, twitter:description, twitter:image — shares will preview correctly
8. Holographic fact_store: card now notes fact_store exposes 9 actions
   (add, search, probe, related, reason, contradict, update, remove, list)
2026-04-16 03:53:57 +00:00

977 lines
50 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<script>
(function(){
var p = window.location.pathname;
if (p.endsWith('/index.html')) {
var clean = p.slice(0, p.length - 'index.html'.length);
window.history.replaceState(null, '', clean + window.location.search + window.location.hash);
}
})();
</script>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Memory Providers for AI Agents — 2026 Guide</title>
<meta property="og:title" content="Memory Providers for AI Agents — 2026 Guide">
<meta property="og:description" content="Compare 8 agent memory providers — Mem0, Hindsight, ByteRover, Supermemory, Holographic, OpenViking, Honcho, RetainDB. Free tiers, benchmarks, hosting, and use-case picks.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://get-hermes.ai/memory/">
<meta property="og:image" content="https://get-hermes.ai/images/ui-hero.png">
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="Memory Providers for AI Agents — 2026 Guide">
<meta name="twitter:description" content="Compare 8 agent memory providers — free tiers, benchmarks, architecture, and a straight pick for every use case.">
<meta name="twitter:image" content="https://get-hermes.ai/images/ui-hero.png">
<meta name="description" content="Which memory provider should you use with your AI agent? Compare Mem0, Hindsight, ByteRover, Supermemory, and more — free tiers, hosting options, benchmarks, and use-case picks.">
<style>
:root {
--bg-primary: #0d1117;
--bg-secondary: #161b22;
--bg-tertiary: #21262d;
--bg-card: #161b22;
--border: #30363d;
--text-primary: #e6edf3;
--text-secondary: #8b949e;
--text-muted: #6e7681;
--accent: #f0a500;
--accent-dim: #c88800;
--accent-glow: rgba(240,165,0,0.12);
--green: #3fb950;
--blue: #58a6ff;
--purple: #bc8cff;
--red: #f85149;
--orange: #ff9040;
--nav-height: 64px;
}
[data-theme="light"] nav {
background: rgba(246, 248, 250, 0.95);
}
[data-theme="light"] {
--bg-primary: #ffffff;
--bg-secondary: #f6f8fa;
--bg-tertiary: #eaeef2;
--bg-card: #ffffff;
--border: #d0d7de;
--text-primary: #1f2328;
--text-secondary: #656d76;
--text-muted: #9198a1;
--accent: #c07800;
--accent-dim: #9a6200;
--accent-glow: rgba(192,120,0,0.10);
}
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: var(--bg-primary);
color: var(--text-primary);
line-height: 1.6;
min-height: 100vh;
}
/* NAV */
nav {
position: sticky; top: 0; height: var(--nav-height);
background: rgba(13, 17, 23, 0.92); border-bottom: 1px solid var(--border);
backdrop-filter: blur(12px); display: flex; align-items: center;
justify-content: space-between; padding: 0 24px; z-index: 100;
}
.nav-left { display: flex; align-items: center; gap: 16px; }
.nav-logo {
font-size: 1.1rem; font-weight: 700; color: var(--accent);
text-decoration: none; letter-spacing: -0.01em;
}
.nav-back {
font-size: 0.85rem; color: var(--text-secondary); text-decoration: none;
display: flex; align-items: center; gap: 6px; padding: 4px 10px;
border: 1px solid var(--border); border-radius: 6px; transition: color .15s, border-color .15s;
}
.nav-back:hover { color: var(--text-primary); border-color: var(--text-secondary); }
.nav-right { display: flex; align-items: center; gap: 12px; }
#theme-toggle {
background: none; border: 1px solid var(--border); color: var(--text-secondary);
cursor: pointer; border-radius: 6px; padding: 6px 10px; font-size: 1rem;
transition: color .15s, border-color .15s;
}
#theme-toggle:hover { color: var(--text-primary); border-color: var(--text-secondary); }
.btn-cta {
background: var(--accent); color: #0d1117; padding: 8px 16px;
border-radius: 6px; font-weight: 600; font-size: 0.85rem;
text-decoration: none; transition: background .15s;
}
.btn-cta:hover { background: var(--accent-dim); }
/* HAMBURGER */
.hamburger {
display: none; flex-direction: column; gap: 5px; cursor: pointer;
background: none; border: none; padding: 8px;
}
.hamburger span { display: block; width: 22px; height: 2px; background: var(--text-primary); border-radius: 2px; }
#memory-mobile-menu {
display: none; position: fixed; top: var(--nav-height); left: 0; right: 0;
background: var(--bg-secondary); border-bottom: 1px solid var(--border);
padding: 16px 24px; z-index: 99; flex-direction: column; gap: 4px;
}
#memory-mobile-menu.open { display: flex; }
#memory-mobile-menu a {
padding: 10px 0; color: var(--text-primary); text-decoration: none;
border-bottom: 1px solid var(--border); font-size: 0.95rem;
}
#memory-mobile-menu a:last-child { border-bottom: none; }
#memory-mobile-menu a.accent { color: var(--accent); font-weight: 600; }
/* HERO */
.hero { padding: 56px 24px 40px; text-align: center; max-width: 760px; margin: 0 auto; }
.hero-eyebrow {
display: inline-block; font-size: 0.78rem; font-weight: 600;
letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent); margin-bottom: 14px;
}
.hero h1 {
font-size: clamp(1.8rem, 4vw, 2.7rem); font-weight: 800;
letter-spacing: -0.02em; line-height: 1.2; margin-bottom: 14px;
}
.hero p { font-size: 1rem; color: var(--text-secondary); max-width: 560px; margin: 0 auto 14px; }
.updated-stamp {
display: inline-flex; align-items: center; gap: 6px;
font-size: 0.75rem; color: var(--text-muted);
background: var(--bg-secondary); border: 1px solid var(--border);
border-radius: 20px; padding: 4px 12px;
}
/* SECTION */
section { padding: 52px 24px; }
section.alt { background: var(--bg-secondary); }
.section-inner { max-width: 1060px; margin: 0 auto; }
.section-label {
font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em;
text-transform: uppercase; color: var(--accent); margin-bottom: 6px;
}
.section-title { font-size: 1.5rem; font-weight: 700; letter-spacing: -0.015em; margin-bottom: 6px; }
.section-sub { font-size: 0.92rem; color: var(--text-secondary); margin-bottom: 28px; max-width: 580px; }
/* PILLS */
.pill {
display: inline-block; font-size: 0.72rem; font-weight: 600;
padding: 3px 8px; border-radius: 12px; white-space: nowrap;
}
.pill-green { background: rgba(63,185,80,0.15); color: var(--green); }
.pill-amber { background: rgba(240,165,0,0.15); color: var(--accent); }
.pill-blue { background: rgba(88,166,255,0.15); color: var(--blue); }
.pill-purple { background: rgba(188,140,255,0.15); color: var(--purple); }
.pill-red { background: rgba(248,81,73,0.15); color: var(--red); }
.pill-gray { background: var(--bg-tertiary); color: var(--text-secondary); }
/* QUICK TABLE */
.table-wrap { overflow-x: auto; border-radius: 10px; border: 1px solid var(--border); }
table { width: 100%; border-collapse: collapse; font-size: 0.86rem; }
thead tr { background: var(--bg-tertiary); }
th {
padding: 11px 14px; text-align: left; font-weight: 600;
color: var(--text-secondary); white-space: nowrap; border-bottom: 1px solid var(--border);
}
td { padding: 12px 14px; border-bottom: 1px solid var(--border); vertical-align: top; }
tbody tr:last-child td { border-bottom: none; }
tbody tr:hover { background: rgba(255,255,255,0.02); }
[data-theme="light"] tbody tr:hover { background: rgba(0,0,0,0.02); }
.t-name { font-weight: 600; color: var(--text-primary); }
.t-name a { color: inherit; text-decoration: none; }
.t-name a:hover { color: var(--accent); }
.t-stars { font-size: 0.78rem; color: var(--text-muted); white-space: nowrap; }
.t-bench { font-size: 0.82rem; }
.t-bench strong { color: var(--green); }
.t-bench small { color: var(--text-muted); display: block; font-size: 0.7rem; }
/* hide less-critical columns on small screens */
@media (max-width: 820px) { .col-arch { display: none; } }
@media (max-width: 640px) { .col-stars { display: none; } .col-tools { display: none; } }
/* BENCHMARK CALLOUT */
.bench-callout {
background: var(--accent-glow); border: 1px solid rgba(240,165,0,0.3);
border-left: 3px solid var(--accent); border-radius: 8px;
padding: 14px 18px; font-size: 0.84rem; color: var(--text-secondary); margin-top: 20px;
}
.bench-callout strong { color: var(--accent); }
/* PROVIDER CARDS */
.provider-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 16px;
}
.provider-card {
background: var(--bg-tertiary); border: 1px solid var(--border);
border-radius: 10px; padding: 20px; transition: border-color .15s;
display: flex; flex-direction: column; gap: 0;
}
.provider-card:hover { border-color: var(--accent); }
.pc-header { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.pc-icon { font-size: 1.5rem; line-height: 1; flex-shrink: 0; margin-top: 2px; }
.pc-name { font-size: 1rem; font-weight: 700; }
.pc-name a { color: inherit; text-decoration: none; }
.pc-name a:hover { color: var(--accent); }
.pc-meta { font-size: 0.72rem; color: var(--text-muted); margin-top: 1px; }
.pc-desc { font-size: 0.86rem; color: var(--text-secondary); margin-bottom: 10px; }
.pc-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-bottom: 10px; }
.pc-rows { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; }
.pc-row { display: flex; gap: 8px; font-size: 0.82rem; }
.pc-row-label { color: var(--text-muted); flex-shrink: 0; width: 68px; }
.pc-row-val { color: var(--text-secondary); }
.pc-row-val strong { color: var(--green); }
.pc-row-val a { color: var(--blue); text-decoration: none; font-family: 'SFMono-Regular', monospace; font-size: 0.78rem; }
.pc-best {
font-size: 0.82rem; color: var(--text-secondary);
border-top: 1px solid var(--border); padding-top: 10px; margin-top: auto;
}
.pc-best strong { color: var(--text-primary); }
/* USE CASE PICKER */
.picker-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(290px, 1fr));
gap: 16px;
}
.picker-card {
background: var(--bg-tertiary); border: 1px solid var(--border);
border-left: 3px solid var(--accent); border-radius: 10px; padding: 20px;
}
.picker-card.green-accent { border-left-color: var(--green); }
.picker-card.blue-accent { border-left-color: var(--blue); }
.picker-card.purple-accent { border-left-color: var(--purple); }
.picker-card.red-accent { border-left-color: var(--red); }
.picker-card.orange-accent { border-left-color: var(--orange); }
.picker-icon { font-size: 1.4rem; margin-bottom: 6px; }
.picker-title { font-size: 0.95rem; font-weight: 700; margin-bottom: 3px; }
.picker-sub { font-size: 0.8rem; color: var(--text-secondary); margin-bottom: 12px; }
.picker-picks { list-style: none; display: flex; flex-direction: column; gap: 8px; }
.picker-pick { display: flex; align-items: flex-start; gap: 8px; font-size: 0.83rem; }
.pick-rank {
flex-shrink: 0; width: 19px; height: 19px; border-radius: 50%;
background: var(--bg-secondary); border: 1px solid var(--border);
display: flex; align-items: center; justify-content: center;
font-size: 0.68rem; font-weight: 700; color: var(--accent); margin-top: 1px;
}
.pick-name { font-weight: 600; color: var(--text-primary); }
.pick-why { color: var(--text-secondary); }
/* TRADEOFF GRID */
.tradeoff-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 12px;
}
.tradeoff-card {
background: var(--bg-tertiary); border: 1px solid var(--border);
border-radius: 8px; padding: 16px;
}
.tradeoff-label {
font-size: 0.72rem; font-weight: 600; letter-spacing: 0.06em;
text-transform: uppercase; color: var(--text-muted); margin-bottom: 6px;
}
.tradeoff-winner { font-size: 1rem; font-weight: 700; color: var(--text-primary); margin-bottom: 3px; }
.tradeoff-note { font-size: 0.78rem; color: var(--text-secondary); }
/* CONFIG SNIPPETS */
.config-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
gap: 12px;
}
.config-card {
background: var(--bg-tertiary); border: 1px solid var(--border); border-radius: 8px;
}
.config-header {
padding: 10px 14px; border-bottom: 1px solid var(--border);
font-size: 0.82rem; font-weight: 600; color: var(--text-secondary);
}
.config-body {
padding: 12px 14px; font-family: 'SFMono-Regular', 'Consolas', monospace;
font-size: 0.78rem; color: #e6edf3; line-height: 1.6; white-space: pre;
overflow-x: auto; background: #0d1117; border-radius: 0 0 8px 8px;
}
[data-theme="light"] .config-body { background: #f6f8fa; color: #1f2328; }
.cfg-key { color: var(--blue); }
.cfg-val { color: var(--green); }
.cfg-comment { color: var(--text-muted); }
/* CTA */
.cta-strip {
background: var(--bg-secondary); border-top: 1px solid var(--border);
padding: 48px 24px; text-align: center;
}
.cta-strip h2 { font-size: 1.4rem; font-weight: 700; margin-bottom: 8px; }
.cta-strip p { color: var(--text-secondary); font-size: 0.93rem; margin-bottom: 22px; }
.cta-strip a {
display: inline-block; background: var(--accent); color: #0d1117;
padding: 11px 26px; border-radius: 8px; font-weight: 700;
text-decoration: none; transition: background .15s;
}
.cta-strip a:hover { background: var(--accent-dim); }
/* RESPONSIVE */
@media (max-width: 640px) {
.hamburger { display: flex; }
.btn-cta { display: none; }
.nav-back span { display: none; }
.hero { padding: 36px 16px 28px; }
section { padding: 36px 16px; }
th, td { padding: 9px 10px; }
.provider-grid { grid-template-columns: 1fr; }
.picker-grid { grid-template-columns: 1fr; }
.tradeoff-grid { grid-template-columns: 1fr 1fr; }
.config-grid { grid-template-columns: 1fr; }
}
@media (max-width: 400px) {
.tradeoff-grid { grid-template-columns: 1fr; }
}
</style>
</head>
<body>
<nav>
<div class="nav-left">
<a class="nav-logo" href="../">⚡ Hermes</a>
<a class="nav-back" href="../"><span></span><span>Back</span></a>
</div>
<div class="nav-right">
<button id="theme-toggle" aria-label="Toggle theme">🌙</button>
<a class="btn-cta" href="https://hermes-agent.nousresearch.com/docs/getting-started/installation">Get started →</a>
<button class="hamburger" id="memory-hamburger" aria-label="Open menu">
<span></span><span></span><span></span>
</button>
</div>
</nav>
<div id="memory-mobile-menu">
<a href="../">← Main site</a>
<a href="../eli5/">ELI5 explainer</a>
<a href="../models/">Model guide</a>
<a href="../community/">Community</a>
<a href="https://hermes-agent.nousresearch.com/docs/getting-started/installation" class="accent">Get started →</a>
</div>
<div class="hero">
<span class="hero-eyebrow">Agent memory · 2026 guide</span>
<h1>Which memory provider should you use?</h1>
<p>Eight providers compared — hosting, free tiers, benchmarks, architecture, and a concrete pick for each major use case.</p>
<span class="updated-stamp">🕐 Last verified April 2026</span>
</div>
<!-- QUICK REFERENCE TABLE -->
<section id="table">
<div class="section-inner">
<div class="section-label">Quick reference</div>
<div class="section-title">All providers at a glance</div>
<p class="section-sub">Scroll right on mobile. "Best for" and pricing are the most decision-relevant columns.</p>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>Provider</th>
<th>Best for</th>
<th>Free tier</th>
<th class="col-paid">Paid from</th>
<th>Hosting</th>
<th>License</th>
<th class="col-stars">Stars</th>
<th class="col-tools">Tools</th>
<th>Benchmark</th>
</tr>
</thead>
<tbody>
<tr>
<td class="t-name"><a href="https://mem0.ai" target="_blank" rel="noopener">Mem0</a></td>
<td>All-around default</td>
<td><span class="pill pill-green">10K adds / 1K recalls</span></td>
<td class="col-paid">$19/mo Starter<br><small style="color:var(--text-muted)">$249 Pro (Graph)</small></td>
<td>Cloud + self-host</td>
<td><span class="pill pill-blue">Apache 2.0</span></td>
<td class="t-stars col-stars">51.4K ⭐</td>
<td class="col-tools">3</td>
<td class="t-bench">LongMemEval-S <strong>67.6%</strong></td>
</tr>
<tr>
<td class="t-name"><a href="https://hindsight.vectorize.io" target="_blank" rel="noopener">Hindsight</a></td>
<td>Best benchmarks, coding</td>
<td><span class="pill pill-green">Full local, free</span></td>
<td class="col-paid">$15/M retain<br><small style="color:var(--text-muted)">$0.75/M recall · $3/M reflect</small></td>
<td>Local + cloud</td>
<td><span class="pill pill-blue">MIT</span></td>
<td class="t-stars col-stars">2.4K ⭐</td>
<td class="col-tools">4</td>
<td class="t-bench">LongMemEval <strong>91.494.6%</strong><small>BEAM 64.1% · LoCoMo 89.6%</small></td>
</tr>
<tr>
<td class="t-name"><a href="https://byterover.dev" target="_blank" rel="noopener">ByteRover</a></td>
<td>Multi-hop / temporal</td>
<td><span class="pill pill-green">Local CLI free</span></td>
<td class="col-paid">$19/mo Pro<br><small style="color:var(--text-muted)">$35/user/mo Team</small></td>
<td>Local + cloud</td>
<td><span class="pill pill-amber">Partial OSS</span></td>
<td class="t-stars col-stars">4.2K ⭐</td>
<td class="col-tools">3</td>
<td class="t-bench">LoCoMo <strong>92.2%</strong><small>single-hop 95.4% · temporal 94.4%</small></td>
</tr>
<tr>
<td class="t-name"><a href="https://www.supermemory.ai" target="_blank" rel="noopener">Supermemory</a></td>
<td>Search-heavy / RAG</td>
<td><span class="pill pill-green">1M tokens · 10K searches</span></td>
<td class="col-paid">$19/mo Pro<br><small style="color:var(--text-muted)">$399/mo Scale</small></td>
<td>Cloud only</td>
<td><span class="pill pill-red">Proprietary</span></td>
<td class="t-stars col-stars">~18K ⭐</td>
<td class="col-tools">4</td>
<td class="t-bench">LongMemEval <strong>81.6%</strong><small>with GPT-4o</small></td>
</tr>
<tr>
<td class="t-name">Holographic</td>
<td>Zero cost, privacy-first</td>
<td><span class="pill pill-green">Fully local, free</span></td>
<td class="col-paid"></td>
<td>Local only</td>
<td><span class="pill pill-blue">MIT</span></td>
<td class="t-stars col-stars"></td>
<td class="col-tools">2</td>
<td class="t-bench"></td>
</tr>
<tr>
<td class="t-name"><a href="https://github.com/volcengine/OpenViking" target="_blank" rel="noopener">OpenViking</a></td>
<td>On-prem / air-gapped</td>
<td><span class="pill pill-green">Self-host, free</span></td>
<td class="col-paid"></td>
<td>Self-host only</td>
<td><span class="pill pill-amber">AGPL-3.0</span></td>
<td class="t-stars col-stars">~17.9K ⭐</td>
<td class="col-tools">5</td>
<td class="t-bench"></td>
</tr>
<tr>
<td class="t-name"><a href="https://honcho.dev" target="_blank" rel="noopener">Honcho</a></td>
<td>User modeling</td>
<td><span class="pill pill-amber">$100 free credits</span></td>
<td class="col-paid">$2/M ingested<br><small style="color:var(--text-muted)">$0.001+/query</small></td>
<td>Cloud + self-host</td>
<td><span class="pill pill-amber">AGPL-3.0</span></td>
<td class="t-stars col-stars">414 ⭐</td>
<td class="col-tools">4</td>
<td class="t-bench"></td>
</tr>
<tr>
<td class="t-name">RetainDB</td>
<td>Structured schema recall</td>
<td><span class="pill pill-red">None</span></td>
<td class="col-paid">$20/mo</td>
<td>Cloud only</td>
<td><span class="pill pill-red">Proprietary</span></td>
<td class="t-stars col-stars"></td>
<td class="col-tools">5</td>
<td class="t-bench"></td>
</tr>
</tbody>
</table>
</div>
<div class="bench-callout">
<strong>Benchmarks are not directly comparable.</strong> LoCoMo (ByteRover), LongMemEval (Hindsight, Supermemory), LongMemEval-S (Mem0), and BEAM test different tasks on different data. Hindsight's scores come from an independently validated arXiv paper (Virginia Tech) — the 94.6% figure is from Vectorize's own homepage. Use as directional guidance only. As of April 2026.
</div>
</div>
</section>
<!-- PROVIDER PROFILES -->
<section id="providers" class="alt">
<div class="section-inner">
<div class="section-label">Provider profiles</div>
<div class="section-title">The fast version</div>
<p class="section-sub">Architecture, pricing, tools exposed, and what each provider actually does well.</p>
<div class="provider-grid">
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🧠</div>
<div>
<div class="pc-name"><a href="https://mem0.ai" target="_blank" rel="noopener">Mem0</a></div>
<div class="pc-meta">Apache 2.0 · mem0ai/mem0 · 51.4K ⭐</div>
</div>
</div>
<p class="pc-desc">Hybrid triple-store: vector + key-value + knowledge graph. An LLM pass extracts structured facts from conversations and stores them across all three layers. Most widely integrated option — first-class Python, TypeScript, and OpenAI-compatible SDKs.</p>
<div class="pc-tags">
<span class="pill pill-green">Freemium</span>
<span class="pill pill-blue">Cloud + self-host</span>
<span class="pill pill-purple">3 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Free: 10K adds / 1K recalls · $19/mo Starter · $249/mo Pro (Graph Memory)</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">LongMemEval-S <strong>67.6%</strong></span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: mem0</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> all-around use, teams wanting a managed service with a strong SDK and no vendor lock-in (self-host option, Apache license).</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🔬</div>
<div>
<div class="pc-name"><a href="https://hindsight.vectorize.io" target="_blank" rel="noopener">Hindsight</a></div>
<div class="pc-meta">MIT · <a href="https://github.com/vectorize-io/hindsight" target="_blank" rel="noopener" style="color:inherit">vectorize-io/hindsight</a> · 2.4K ⭐</div>
</div>
</div>
<p class="pc-desc">TEMPR architecture: four parallel retrieval strategies — temporal, entity, metadata, and BM25 for exact keyword matches. Strong at structured technical recall: port numbers, error codes, service names, deployment configs. Three-stage pipeline: retain (ingest) → recall (retrieve) → reflect (synthesize across stored knowledge).</p>
<div class="pc-tags">
<span class="pill pill-green">Local = free</span>
<span class="pill pill-blue">Local + cloud</span>
<span class="pill pill-purple">4 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Full local free · Cloud: $15/M retain · $0.75/M recall · $3/M reflect</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmarks</span><span class="pc-row-val">LongMemEval <strong>91.494.6%</strong> · BEAM 64.1% · LoCoMo 89.6%</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: hindsight</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> coding agents, privacy-first local setups, anyone who wants the best published benchmark scores. Highest LongMemEval score of any provider listed.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🤖</div>
<div>
<div class="pc-name"><a href="https://byterover.dev" target="_blank" rel="noopener">ByteRover</a></div>
<div class="pc-meta">CLI: open source (custom license) · cloud: proprietary · 4.2K ⭐</div>
</div>
</div>
<p class="pc-desc">Leads the LoCoMo benchmark — specifically designed for multi-hop and temporal reasoning across long conversation histories. Local CLI is open source and free. Cloud sync for cross-device persistence costs $19/mo. Built with coding agents as the primary use case.</p>
<div class="pc-tags">
<span class="pill pill-green">Local CLI free</span>
<span class="pill pill-blue">Local + cloud</span>
<span class="pill pill-purple">3 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Local free · $19/mo Pro (cloud sync) · $35/user/mo Team</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">LoCoMo <strong>92.2%</strong> (single-hop 95.4%, temporal 94.4%)</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: byterover</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> coding agents and autonomous workflows that need multi-hop or temporal reasoning. Strong #2 on LongMemEval-class tasks.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🔍</div>
<div>
<div class="pc-name"><a href="https://www.supermemory.ai" target="_blank" rel="noopener">Supermemory</a></div>
<div class="pc-meta">Proprietary · cloud API · ~18K ⭐ (consumer frontend)</div>
</div>
</div>
<p class="pc-desc">Optimized for search-heavy workloads. Ingests content from many sources and surfaces it via semantic search. Generous free tier (1M tokens). The star count reflects the consumer app frontend — the core memory engine is closed source. Strong LongMemEval score but behind Hindsight.</p>
<div class="pc-tags">
<span class="pill pill-green">Generous free tier</span>
<span class="pill pill-red">Cloud only</span>
<span class="pill pill-purple">4 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Free: 1M tokens · 10K searches · $19/mo Pro · $399/mo Scale</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">LongMemEval <strong>81.6%</strong> (with GPT-4o)</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: supermemory</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> knowledge bases and chatbots that need to surface relevant content from a large corpus quickly. No self-host option.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">💾</div>
<div>
<div class="pc-name">Holographic</div>
<div class="pc-meta">MIT · built into Hermes · local SQLite</div>
</div>
</div>
<p class="pc-desc">Uses Holographic Reduced Representations (HRR) algebra on a local SQLite + FTS5 store. Zero external dependencies — no API keys, no network calls, no Docker. Memory lives in a single file in your Hermes home directory. The most private option by definition. The <code style="font-family:monospace;font-size:0.82em">fact_store</code> tool exposes 9 actions: add, search, probe, related, reason, contradict, update, remove, list.</p>
<div class="pc-tags">
<span class="pill pill-green">Fully local, free</span>
<span class="pill pill-blue">Local only</span>
<span class="pill pill-purple">2 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Completely free — no cloud tier</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">Not published</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: holographic</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> zero-cost local setups, privacy-critical environments, anyone who wants memory working instantly with no accounts or config.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🏛️</div>
<div>
<div class="pc-name"><a href="https://github.com/volcengine/OpenViking" target="_blank" rel="noopener">OpenViking</a></div>
<div class="pc-meta">AGPL-3.0 · self-hosted · ~17.9K ⭐</div>
</div>
</div>
<p class="pc-desc">Tiered context loading by resolution depth: L0 loads ~50-token abstracts, L1 loads ~500-token overviews, L2 loads full content on demand. Only the detail level needed for each query gets pushed into the context window — that's the mechanism behind the 8090% token savings. Self-hosted only, AGPL. Requires Docker and an LLM provider for extraction.</p>
<div class="pc-tags">
<span class="pill pill-green">Self-host, free</span>
<span class="pill pill-amber">Self-host only</span>
<span class="pill pill-purple">5 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">Free to self-host · AGPL means server modifications must be disclosed if distributed</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">Not published</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: openviking</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> on-prem deployments and regulated industries needing full data sovereignty. 8090% token reduction is real if you have large memory stores.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">👤</div>
<div>
<div class="pc-name"><a href="https://honcho.dev" target="_blank" rel="noopener">Honcho</a></div>
<div class="pc-meta">AGPL-3.0 · plastic-labs/honcho · 414 ⭐</div>
</div>
</div>
<p class="pc-desc">Three specialized LLM agents — Deriver (extracts user preferences), Dialectic (surfaces them in context), Dreamer (synthesizes across sessions). The only provider focused on building a persistent user model ("dialect"), not just storing facts. Available as cloud or self-hosted via the AGPL repo.</p>
<div class="pc-tags">
<span class="pill pill-amber">$100 free credits</span>
<span class="pill pill-blue">Cloud + self-host</span>
<span class="pill pill-purple">4 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">$100 free credits · $2/M tokens ingested · $0.001+/query</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">Not published</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: honcho</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> personal AI companions and multi-user apps where each user's preferences and working style need to shape responses over time.</div>
</div>
<div class="provider-card">
<div class="pc-header">
<div class="pc-icon">🗃️</div>
<div>
<div class="pc-name">RetainDB</div>
<div class="pc-meta">Proprietary · cloud only · domain status unverified</div>
</div>
</div>
<p class="pc-desc">Database-style memory with structured schema. Explicit control over what gets stored and how it's queried — more like a managed database than an LLM memory layer. No free tier. Domain availability was inconsistent at time of writing — verify before depending on it.</p>
<div class="pc-tags">
<span class="pill pill-red">No free tier</span>
<span class="pill pill-red">Cloud only</span>
<span class="pill pill-purple">5 tools</span>
</div>
<div class="pc-rows">
<div class="pc-row"><span class="pc-row-label">Pricing</span><span class="pc-row-val">$20/mo base · enterprise contact sales</span></div>
<div class="pc-row"><span class="pc-row-label">Benchmark</span><span class="pc-row-val">Not published</span></div>
<div class="pc-row"><span class="pc-row-label">Config key</span><span class="pc-row-val"><a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">memory_provider: retaindb</a></span></div>
</div>
<div class="pc-best"><strong>Best for:</strong> production apps that need structured data recall with predictable query behavior and no LLM extraction overhead.</div>
</div>
</div>
</div>
</section>
<!-- USE CASE PICKS -->
<section id="picks">
<div class="section-inner">
<div class="section-label">Use case recommendations</div>
<div class="section-title">Just tell me what to pick</div>
<p class="section-sub">Ranked by fit for each scenario — not by partnership or popularity.</p>
<div class="picker-grid">
<div class="picker-card">
<div class="picker-icon">💻</div>
<div class="picker-title">Coding agents</div>
<p class="picker-sub">State across long sessions, multi-hop reasoning, exact technical recall (ports, configs, error codes).</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">TEMPR's BM25 layer handles exact keyword matches; structured entity extraction built for technical memory; highest overall benchmarks</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">ByteRover</span><span class="pick-why">leads LoCoMo (multi-hop 92.2%, temporal 94.4%); local CLI free; purpose-built for coding agents</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">3</div>
<div><span class="pick-name">Mem0</span><span class="pick-why">mature SDK, works well with tool-calling patterns, self-hostable fallback</span></div>
</li>
</ul>
</div>
<div class="picker-card green-accent">
<div class="picker-icon">📚</div>
<div class="picker-title">Knowledge wiki / RAG</div>
<p class="picker-sub">Indexing a large, growing body of content and surfacing the relevant slice at query time.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">reflect operation synthesizes across all stored knowledge; highest LongMemEval scores (91.494.6%)</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Supermemory</span><span class="pick-why">built for search-heavy workloads; most generous free tier (1M tokens); good LongMemEval score (81.6%)</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">3</div>
<div><span class="pick-name">Mem0</span><span class="pick-why">solid recall + open Apache license if you want to self-host the index</span></div>
</li>
</ul>
</div>
<div class="picker-card blue-accent">
<div class="picker-icon">⚖️</div>
<div class="picker-title">All-around / default pick</div>
<p class="picker-sub">Best option for most use cases when you don't have a strong constraint pushing you elsewhere.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Mem0</span><span class="pick-why">best SDK quality, largest community (51.4K stars), self-host option, Apache license — covers the most ground</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">MIT, fully local free, best benchmarks — slightly more niche but stronger on technical workloads</span></div>
</li>
</ul>
</div>
<div class="picker-card purple-accent">
<div class="picker-icon">🆓</div>
<div class="picker-title">Free / zero cost</div>
<p class="picker-sub">You need memory working now with no billing setup, or your budget is zero.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Holographic</span><span class="pick-why">built-in, MIT, local SQLite, zero config — operational in seconds</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">full features locally for free; MIT; best benchmarks at zero cost</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">3</div>
<div><span class="pick-name">OpenViking</span><span class="pick-why">AGPL, self-host, no external calls — free forever if you can run Docker</span></div>
</li>
</ul>
</div>
<div class="picker-card red-accent">
<div class="picker-icon">🔐</div>
<div class="picker-title">Privacy / air-gap</div>
<p class="picker-sub">Data cannot leave your infrastructure. No external API calls, no cloud.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Holographic</span><span class="pick-why">SQLite file on disk, zero network calls, zero external dependencies — most private by construction</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">full local mode, MIT, no cloud required</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">3</div>
<div><span class="pick-name">OpenViking</span><span class="pick-why">self-host only, no external calls, AGPL — needs Docker + LLM for extraction</span></div>
</li>
</ul>
</div>
<div class="picker-card orange-accent">
<div class="picker-icon">🧑‍💬</div>
<div class="picker-title">Personal AI companion</div>
<p class="picker-sub">The agent needs to learn who you are — your style, preferences, working patterns — and apply that across every session.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Honcho</span><span class="pick-why">the only provider built specifically for user modeling; three-agent pipeline builds a persistent "dialect" of each user's preferences</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Mem0</span><span class="pick-why">reliable fact recall across sessions; works well for preference tracking even without dedicated user modeling</span></div>
</li>
</ul>
</div>
<div class="picker-card">
<div class="picker-icon">🏢</div>
<div class="picker-title">Enterprise / production</div>
<p class="picker-sub">SSO, audit logs, SLA, on-prem support, no AGPL/copyleft risk in your product.</p>
<ul class="picker-picks">
<li class="picker-pick">
<div class="pick-rank">1</div>
<div><span class="pick-name">Mem0</span><span class="pick-why">Apache 2.0 (no copyleft), on-prem enterprise tier, SSO, audit logs — covers the enterprise checklist</span></div>
</li>
<li class="picker-pick">
<div class="pick-rank">2</div>
<div><span class="pick-name">Hindsight</span><span class="pick-why">MIT license, strong benchmarks, self-hostable with pay-per-token cloud option</span></div>
</li>
</ul>
</div>
</div>
</div>
</section>
<!-- CONFIG SNIPPETS -->
<section id="config" class="alt">
<div class="section-inner">
<div class="section-label">Configuration</div>
<div class="section-title">Get started in 3 lines</div>
<p class="section-sub">Add to your <code style="font-family: monospace; font-size: 0.85em; background: var(--bg-tertiary); padding: 1px 5px; border-radius: 4px;">config.yaml</code> — full docs at the link below each snippet.</p>
<div class="config-grid">
<div class="config-card">
<div class="config-header">Mem0 (cloud)</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">mem0</span>
<span class="cfg-key">mem0</span>:
<span class="cfg-key">api_key</span>: <span class="cfg-val">your-mem0-key</span>
<span class="cfg-comment"># get key at app.mem0.ai</span></div>
</div>
<div class="config-card">
<div class="config-header">Hindsight (local)</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">hindsight</span>
<span class="cfg-comment"># no API key needed for local mode</span>
<span class="cfg-comment"># add hindsight.api_key for cloud sync</span></div>
</div>
<div class="config-card">
<div class="config-header">Holographic (local, zero config)</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">holographic</span>
<span class="cfg-comment"># that's it — built into Hermes</span>
<span class="cfg-comment"># SQLite file at ~/.hermes/memory.db</span></div>
</div>
<div class="config-card">
<div class="config-header">ByteRover (local CLI)</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">byterover</span>
<span class="cfg-comment"># local free — no key required</span>
<span class="cfg-comment"># add byterover.api_key for cloud sync</span></div>
</div>
<div class="config-card">
<div class="config-header">Supermemory</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">supermemory</span>
<span class="cfg-key">supermemory</span>:
<span class="cfg-key">api_key</span>: <span class="cfg-val">your-supermemory-key</span></div>
</div>
<div class="config-card">
<div class="config-header">Honcho</div>
<div class="config-body"><span class="cfg-key">memory_provider</span>: <span class="cfg-val">honcho</span>
<span class="cfg-key">honcho</span>:
<span class="cfg-key">api_key</span>: <span class="cfg-val">your-honcho-key</span>
<span class="cfg-comment"># or self-host via plastic-labs/honcho</span></div>
</div>
</div>
<p style="margin-top: 18px; font-size: 0.83rem; color: var(--text-muted)">
Full config reference and advanced options at
<a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers" style="color: var(--blue)">hermes-agent.nousresearch.com/docs/…/memory-providers</a>
</p>
</div>
</section>
<!-- TRADEOFF SNAPSHOT -->
<section id="tradeoffs">
<div class="section-inner">
<div class="section-label">Best in class by axis</div>
<div class="section-title">If one thing matters most</div>
<p class="section-sub">When a single dimension drives the decision.</p>
<div class="tradeoff-grid">
<div class="tradeoff-card">
<div class="tradeoff-label">LongMemEval benchmark</div>
<div class="tradeoff-winner">Hindsight</div>
<div class="tradeoff-note">91.494.6% — independently validated, leads by a wide margin</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">LoCoMo benchmark</div>
<div class="tradeoff-winner">ByteRover</div>
<div class="tradeoff-note">92.2% — multi-hop and temporal recall leader</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Most private</div>
<div class="tradeoff-winner">Holographic</div>
<div class="tradeoff-note">Local SQLite, zero network calls, zero dependencies</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Easiest to start</div>
<div class="tradeoff-winner">Holographic</div>
<div class="tradeoff-note">Built in, one config line, no account needed</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">SDK + ecosystem</div>
<div class="tradeoff-winner">Mem0</div>
<div class="tradeoff-note">51.4K stars, Python/TS/OpenAI-compat — most mature</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Free tier volume</div>
<div class="tradeoff-winner">Supermemory</div>
<div class="tradeoff-note">1M tokens + 10K searches/mo — most generous cloud free tier</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">User modeling</div>
<div class="tradeoff-winner">Honcho</div>
<div class="tradeoff-note">Only provider that builds a structured model of each user</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Token efficiency</div>
<div class="tradeoff-winner">OpenViking</div>
<div class="tradeoff-note">8090% token savings — loads only needed resolution depth (abstract → overview → full)</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Tools exposed</div>
<div class="tradeoff-winner">OpenViking / RetainDB</div>
<div class="tradeoff-note">5 tools each — most capability surface area</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Commercial-safe license</div>
<div class="tradeoff-winner">Mem0 / Hindsight</div>
<div class="tradeoff-note">Apache 2.0 and MIT — no copyleft, no disclosure requirements</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">On-prem / air-gap</div>
<div class="tradeoff-winner">OpenViking</div>
<div class="tradeoff-note">Self-host only, AGPL, designed for full data sovereignty</div>
</div>
<div class="tradeoff-card">
<div class="tradeoff-label">Cheapest paid</div>
<div class="tradeoff-winner">Mem0 / Supermemory / ByteRover</div>
<div class="tradeoff-note">All start at $19/mo — Hindsight is pay-per-token</div>
</div>
</div>
</div>
</section>
<div class="cta-strip">
<h2>Ready to add memory to Hermes?</h2>
<p>Full config reference, advanced options, and provider-specific setup guides in the docs.</p>
<a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers">Memory provider docs →</a>
</div>
<script>
var themeToggle = document.getElementById('theme-toggle');
function setTheme(t) {
document.documentElement.setAttribute('data-theme', t);
localStorage.setItem('theme', t);
themeToggle.textContent = t === 'light' ? '🌙' : '☀️';
}
setTheme(localStorage.getItem('theme') || 'dark');
themeToggle.addEventListener('click', function() {
setTheme(document.documentElement.getAttribute('data-theme') === 'dark' ? 'light' : 'dark');
});
var ham = document.getElementById('memory-hamburger');
var menu = document.getElementById('memory-mobile-menu');
ham.addEventListener('click', function(e) {
e.stopPropagation();
ham.classList.toggle('open');
menu.classList.toggle('open');
});
document.addEventListener('click', function(e) {
if (!menu.contains(e.target) && e.target !== ham) {
ham.classList.remove('open');
menu.classList.remove('open');
}
});
menu.querySelectorAll('a').forEach(function(a) {
a.addEventListener('click', function() {
ham.classList.remove('open');
menu.classList.remove('open');
});
});
</script>
</body>
</html>