thumbgate 1.27.8 → 1.27.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +1 -1
- package/.well-known/llms.txt +1 -2
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +0 -2
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/bin/cli.js +259 -78
- package/package.json +12 -19
- package/public/blog.html +30 -0
- package/public/compare/adopt-ai.html +219 -0
- package/public/compare/agentix-labs.html +197 -0
- package/public/compare/ai-experience-orchestration.html +216 -0
- package/public/compare/anthropic-claude-for-legal.html +260 -0
- package/public/compare/anthropic-containment.html +280 -0
- package/public/compare/arcade.html +175 -0
- package/public/compare/arcjet.html +239 -0
- package/public/compare/bumblebee.html +307 -0
- package/public/compare/claude-code-hooks.html +294 -0
- package/public/compare/databricks-unity-ai-gateway.html +215 -0
- package/public/compare/fallow.html +351 -0
- package/public/compare/heidi.html +233 -0
- package/public/compare/mem0.html +342 -0
- package/public/compare/oak-and-sparrow-gatekeeper.html +289 -0
- package/public/compare/rein.html +236 -0
- package/public/compare/sigmashake.html +256 -0
- package/public/compare/speclock.html +342 -0
- package/public/compare.html +2 -0
- package/public/guides/agent-harness-optimization.html +342 -0
- package/public/guides/agentic-web-governance.html +406 -0
- package/public/guides/ai-agent-governance-sprint.html +415 -0
- package/public/guides/ai-agent-pre-action-approval-gates.html +401 -0
- package/public/guides/ai-agent-workflow-migration-checklist.html +392 -0
- package/public/guides/ai-deployment-readiness.html +415 -0
- package/public/guides/ai-mode-ads-agent-governance.html +401 -0
- package/public/guides/ai-search-topical-presence.html +342 -0
- package/public/guides/autoresearch-agent-safety.html +342 -0
- package/public/guides/background-agent-governance.html +358 -0
- package/public/guides/best-tools-stop-ai-agents-breaking-production.html +363 -0
- package/public/guides/browser-automation-safety.html +342 -0
- package/public/guides/chatgpt-ads-trust.html +353 -0
- package/public/guides/claude-code-feedback.html +339 -0
- package/public/guides/claude-code-prevent-repeated-mistakes.html +161 -0
- package/public/guides/claude-code-skills-guardrails.html +343 -0
- package/public/guides/claude-desktop.html +356 -0
- package/public/guides/code-knowledge-graph-guardrails.html +365 -0
- package/public/guides/codex-cli-guardrails.html +339 -0
- package/public/guides/cursor-agent-guardrails.html +339 -0
- package/public/guides/cursor-prevent-repeated-mistakes.html +161 -0
- package/public/guides/database-agent-safety.html +406 -0
- package/public/guides/deepseek-v4-runtime-guardrails.html +346 -0
- package/public/guides/developer-machine-supply-chain-guardrails.html +358 -0
- package/public/guides/gcp-mcp-guardrails.html +147 -0
- package/public/guides/gemini-cli-feedback-memory.html +339 -0
- package/public/guides/gpt-5-5-model-evaluation.html +358 -0
- package/public/guides/internal-ai-engineering-stack-guardrails.html +348 -0
- package/public/guides/long-running-agent-context-management.html +346 -0
- package/public/guides/mcp-tool-governance.html +401 -0
- package/public/guides/multica-thumbgate-setup.html +134 -0
- package/public/guides/native-messaging-host-security.html +342 -0
- package/public/guides/policy-engine-pre-action-gates.html +346 -0
- package/public/guides/pre-action-checks.html +342 -0
- package/public/guides/pretooluse-hooks-vs-advisory-prompt-rules.html +342 -0
- package/public/guides/prompt-tricks-to-workflow-rules.html +365 -0
- package/public/guides/proxy-pointer-rag-guardrails.html +352 -0
- package/public/guides/rag-precision-tuning-guardrails.html +352 -0
- package/public/guides/reasoning-compression-guardrails.html +346 -0
- package/public/guides/relational-knowledge-ai-recommendations.html +342 -0
- package/public/guides/roo-code-alternative-cline.html +339 -0
- package/public/guides/semantic-programmatic-seo-guardrails.html +352 -0
- package/public/guides/seo-agent-skills-guardrails.html +344 -0
- package/public/guides/stop-repeated-ai-agent-mistakes.html +342 -0
- package/public/index.html +12 -50
- package/public/learn/ac-dc-runtime-enforcement.html +277 -0
- package/public/learn/agent-harness-pattern.html +181 -0
- package/public/learn/agent-swarms-shared-gates.html +173 -0
- package/public/learn/agentic-enterprise-context-brain.html +117 -0
- package/public/learn/agentic-os-team-governance.html +146 -0
- package/public/learn/ai-agent-governance.html +158 -0
- package/public/learn/ai-agent-persistent-memory.html +211 -0
- package/public/learn/background-agent-control-layer.html +184 -0
- package/public/learn/claude-code-goal-with-rubrics.html +205 -0
- package/public/learn/codex-role-plugins-need-governance.html +125 -0
- package/public/learn/cost-aware-agent-gate-routing.html +173 -0
- package/public/learn/databricks-unity-ai-gateway-runtime-governance.html +157 -0
- package/public/learn/deterministic-agent-workflows.html +185 -0
- package/public/learn/feedback-loop-vs-decision-layer.html +283 -0
- package/public/learn/from-prototype-to-production.html +223 -0
- package/public/learn/learn.css +51 -0
- package/public/learn/mcp-pre-action-checks-explained.html +172 -0
- package/public/learn/pretix-stripe-connect-marketplaces.html +161 -0
- package/public/learn/regulated-agent-execution-boundary.html +196 -0
- package/public/learn/spec-driven-development.html +168 -0
- package/public/learn/stop-ai-agent-force-push.html +134 -0
- package/public/learn/vibe-coding-safety-net.html +142 -0
- package/public/learn.html +6 -50
- package/public/numbers.html +2 -2
- package/public/pro.html +6 -6
- package/scripts/cli-schema.js +10 -22
- package/scripts/dashboard-chat.js +1 -2
- package/scripts/document-intake.js +49 -1
- package/scripts/gemini-embedding-policy.js +1 -2
- package/scripts/hosted-config.js +12 -0
- package/scripts/plausible-domain-config.js +1 -3
- package/scripts/reddit-browser-notification-watch.js +230 -0
- package/scripts/seo-gsd.js +0 -239
- package/scripts/vector-store.js +0 -44
- package/scripts/workspace-evolver.js +2 -62
- package/src/api/server.js +124 -335
- package/adapters/policy-engine/ethicore-guardian-client.js +0 -68
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +0 -260
- package/scripts/hook-stop-anti-claim.js +0 -227
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>ThumbGate vs HEIDI | Behavior Enforcement vs Supply-Chain Scanning</title>
|
|
7
|
+
<meta name="description" content="HEIDI (by Meterian) scans your dependency manifests for known CVEs. ThumbGate blocks AI agents from repeating tool-call mistakes. Different layers, both local-first, both free at base tier." />
|
|
8
|
+
<meta property="og:title" content="ThumbGate vs HEIDI | Behavior Enforcement vs Supply-Chain Scanning" />
|
|
9
|
+
<meta property="og:description" content="A practical comparison for devs deciding which AI-coding safety layer to install — or whether to install both." />
|
|
10
|
+
<meta property="og:type" content="article" />
|
|
11
|
+
<meta property="og:url" content="https://thumbgate.ai/compare/heidi" />
|
|
12
|
+
<link rel="canonical" href="https://thumbgate.ai/compare/heidi" />
|
|
13
|
+
<link rel="llm-context" href="/llm-context.md" type="text/markdown" />
|
|
14
|
+
<link rel="icon" type="image/png" href="/thumbgate-icon.png" />
|
|
15
|
+
<link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg" />
|
|
16
|
+
<meta property="og:image" content="/og.png" />
|
|
17
|
+
<style>
|
|
18
|
+
:root { --bg: #0a0a0b; --bg-raised: #111113; --bg-card: #161618; --line: #222225; --text: #e8e8ec; --muted: #8b8b96; --cyan: #22d3ee; --green: #4ade80; --amber: #fbbf24; }
|
|
19
|
+
* { box-sizing: border-box; }
|
|
20
|
+
body { margin: 0; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--text); line-height: 1.65; }
|
|
21
|
+
a { color: var(--cyan); text-decoration: none; }
|
|
22
|
+
a:hover { text-decoration: underline; }
|
|
23
|
+
.container { max-width: 980px; margin: 0 auto; padding: 0 24px; }
|
|
24
|
+
.topbar { position: sticky; top: 0; z-index: 20; backdrop-filter: blur(12px); background: rgba(10, 10, 11, 0.88); border-bottom: 1px solid var(--line); }
|
|
25
|
+
.topbar .container { display: flex; justify-content: space-between; align-items: center; padding-top: 14px; padding-bottom: 14px; }
|
|
26
|
+
.brand { font-weight: 700; color: var(--text); display: inline-flex; align-items: center; gap: 8px; text-decoration: none; }
|
|
27
|
+
.brand .logo-mark { width: 28px; height: 28px; display: block; }
|
|
28
|
+
.hero { padding: 72px 0 32px; }
|
|
29
|
+
.eyebrow { display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; border: 1px solid rgba(34, 211, 238, 0.22); background: rgba(34, 211, 238, 0.1); color: var(--cyan); text-transform: uppercase; letter-spacing: 0.08em; font-size: 12px; font-weight: 700; }
|
|
30
|
+
h1 { font-size: clamp(34px, 5vw, 56px); line-height: 1.06; letter-spacing: -0.04em; margin: 16px 0; max-width: 820px; }
|
|
31
|
+
.hero p { max-width: 760px; color: var(--muted); font-size: 18px; }
|
|
32
|
+
.grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); gap: 24px; padding-bottom: 72px; }
|
|
33
|
+
.card, .detail-section, .sidebar-card { background: var(--bg-card); border: 1px solid var(--line); border-radius: 16px; }
|
|
34
|
+
.card { padding: 24px; }
|
|
35
|
+
.detail-section { padding: 24px; margin-bottom: 18px; }
|
|
36
|
+
.detail-section h2 { margin: 0 0 12px; font-size: 24px; letter-spacing: -0.03em; }
|
|
37
|
+
.detail-section p, .detail-section li, .sidebar-card p { color: var(--muted); }
|
|
38
|
+
.detail-section ul, .card ul { padding-left: 18px; color: var(--muted); }
|
|
39
|
+
.comparison-table { width: 100%; border-collapse: collapse; margin-top: 16px; font-size: 14px; }
|
|
40
|
+
.comparison-table th, .comparison-table td { border: 1px solid var(--line); padding: 12px; text-align: left; vertical-align: top; }
|
|
41
|
+
.comparison-table th { background: var(--bg-raised); color: var(--cyan); }
|
|
42
|
+
.pill-row { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 24px; }
|
|
43
|
+
.pill { border: 1px solid var(--line); background: var(--bg-raised); border-radius: 999px; padding: 10px 14px; font-size: 14px; font-weight: 650; }
|
|
44
|
+
.pill.good { color: #b8f7c8; border-color: rgba(74, 222, 128, 0.28); background: rgba(74, 222, 128, 0.1); }
|
|
45
|
+
.pill.warn { color: #ffe2a4; border-color: rgba(251, 191, 36, 0.28); background: rgba(251, 191, 36, 0.1); }
|
|
46
|
+
.sidebar { display: flex; flex-direction: column; gap: 18px; }
|
|
47
|
+
.sidebar-card { padding: 20px; }
|
|
48
|
+
.sidebar-card:first-child { position: sticky; top: 84px; max-height: calc(100vh - 104px); overflow-y: auto; -webkit-overflow-scrolling: touch; }
|
|
49
|
+
.cta-button { display: inline-flex; align-items: center; justify-content: center; margin-top: 18px; padding: 12px 16px; border-radius: 10px; background: var(--cyan); color: #071116; font-weight: 700; text-decoration: none; }
|
|
50
|
+
.related-card { display: block; padding: 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--bg-raised); margin-top: 12px; color: var(--text); }
|
|
51
|
+
.related-label { display: block; color: var(--muted); font-size: 12px; text-transform: uppercase; letter-spacing: 0.08em; margin-bottom: 4px; }
|
|
52
|
+
.faq-item { border-top: 1px solid var(--line); padding: 14px 0; }
|
|
53
|
+
.faq-item summary { cursor: pointer; font-weight: 600; }
|
|
54
|
+
.faq-item p { color: var(--muted); }
|
|
55
|
+
@media (max-width: 860px) { .grid { grid-template-columns: 1fr; } .sidebar-card:first-child { position: static; max-height: none; overflow: visible; } }
|
|
56
|
+
</style>
|
|
57
|
+
<script type="application/ld+json">
|
|
58
|
+
{
|
|
59
|
+
"@context": "https://schema.org",
|
|
60
|
+
"@type": "TechArticle",
|
|
61
|
+
"headline": "ThumbGate vs HEIDI",
|
|
62
|
+
"description": "HEIDI scans dependency manifests for CVEs. ThumbGate blocks AI agents from repeating tool-call mistakes. Different surfaces, both local-first, both free at base tier.",
|
|
63
|
+
"about": ["thumbgate vs heidi", "supply chain security vs agent behavior", "AI coding safety stack"],
|
|
64
|
+
"url": "https://thumbgate.ai/compare/heidi",
|
|
65
|
+
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
|
|
66
|
+
"mainEntityOfPage": "https://thumbgate.ai/compare/heidi"
|
|
67
|
+
}
|
|
68
|
+
</script>
|
|
69
|
+
<script type="application/ld+json">
|
|
70
|
+
{
|
|
71
|
+
"@context": "https://schema.org",
|
|
72
|
+
"@type": "FAQPage",
|
|
73
|
+
"mainEntity": [
|
|
74
|
+
{
|
|
75
|
+
"@type": "Question",
|
|
76
|
+
"name": "Is HEIDI a direct ThumbGate competitor?",
|
|
77
|
+
"acceptedAnswer": {
|
|
78
|
+
"@type": "Answer",
|
|
79
|
+
"text": "No. HEIDI scans dependency manifests for known CVEs in npm/pip/maven packages. ThumbGate intercepts AI agent tool calls before they fire and blocks ones matching previously-seen failure patterns. Same buyer category (devs using AI coding assistants who care about safety), but different threat surfaces. Both can run on the same machine without overlapping."
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"@type": "Question",
|
|
84
|
+
"name": "Should I install HEIDI or ThumbGate?",
|
|
85
|
+
"acceptedAnswer": {
|
|
86
|
+
"@type": "Answer",
|
|
87
|
+
"text": "Install both if you ship AI-generated code to production. HEIDI catches AI assistants suggesting deps with known CVEs. ThumbGate catches AI agents about to repeat the same broken tool call you saw last week. They address different failure modes and don't conflict."
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
</script>
|
|
93
|
+
</head>
|
|
94
|
+
<body>
|
|
95
|
+
<div class="topbar">
|
|
96
|
+
<div class="container">
|
|
97
|
+
<a class="brand" href="/"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
98
|
+
<a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
|
|
99
|
+
</div>
|
|
100
|
+
</div>
|
|
101
|
+
|
|
102
|
+
<main class="container">
|
|
103
|
+
<section class="hero">
|
|
104
|
+
<div class="eyebrow">comparison | thumbgate vs heidi</div>
|
|
105
|
+
<h1>ThumbGate vs HEIDI</h1>
|
|
106
|
+
<p>HEIDI (Meterian) scans dependency manifests for known CVEs and feeds live vulnerability data to AI assistants via MCP. ThumbGate intercepts AI agent tool calls before they fire and blocks ones matching previously-seen failure patterns. Same audience, different layers.</p>
|
|
107
|
+
<div class="pill-row">
|
|
108
|
+
<div class="pill good">ThumbGate: agent behavior enforcement (PreToolUse hook)</div>
|
|
109
|
+
<div class="pill warn">HEIDI: supply-chain scanning (manifest + MCP)</div>
|
|
110
|
+
</div>
|
|
111
|
+
</section>
|
|
112
|
+
|
|
113
|
+
<section class="grid">
|
|
114
|
+
<div>
|
|
115
|
+
<div class="detail-section">
|
|
116
|
+
<h2>The short answer</h2>
|
|
117
|
+
<p>Not a direct competitor. HEIDI answers "is this package vulnerable?" ThumbGate answers "did the AI just repeat a mistake we already saw?" Different threat surfaces. Both local-first. Both free at base tier. Run both if you ship AI-generated code to production.</p>
|
|
118
|
+
</div>
|
|
119
|
+
|
|
120
|
+
<div class="detail-section">
|
|
121
|
+
<h2>Comparison table</h2>
|
|
122
|
+
<table class="comparison-table">
|
|
123
|
+
<tr><th>Dimension</th><th>HEIDI (Meterian)</th><th>ThumbGate</th></tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td>Question it answers</td>
|
|
126
|
+
<td>Is this package vulnerable?</td>
|
|
127
|
+
<td>Did the AI just repeat a mistake?</td>
|
|
128
|
+
</tr>
|
|
129
|
+
<tr>
|
|
130
|
+
<td>Surface scanned</td>
|
|
131
|
+
<td>Manifest files (package.json, requirements.txt, etc.)</td>
|
|
132
|
+
<td>AI agent tool calls (Bash, Edit, Write, etc.)</td>
|
|
133
|
+
</tr>
|
|
134
|
+
<tr>
|
|
135
|
+
<td>Integration model</td>
|
|
136
|
+
<td>Passive — AI assistant queries HEIDI via MCP for vuln data</td>
|
|
137
|
+
<td>Active — PreToolUse hook intercepts tool call before execution</td>
|
|
138
|
+
</tr>
|
|
139
|
+
<tr>
|
|
140
|
+
<td>Threat category</td>
|
|
141
|
+
<td>Supply chain (CVE-driven)</td>
|
|
142
|
+
<td>Behavioral (lesson-DB-driven from your thumbs-up/down)</td>
|
|
143
|
+
</tr>
|
|
144
|
+
<tr>
|
|
145
|
+
<td>IDE / agent support</td>
|
|
146
|
+
<td>VS Code, JetBrains, Cursor, Windsurf, Claude Code, Copilot, Gemini CLI, Codex CLI</td>
|
|
147
|
+
<td>Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode (via MCP / PreToolUse hooks)</td>
|
|
148
|
+
</tr>
|
|
149
|
+
<tr>
|
|
150
|
+
<td>Source code stance</td>
|
|
151
|
+
<td>Scans only manifest files; source stays on-machine</td>
|
|
152
|
+
<td>Local-first; lesson DB stays on-machine; no source uploaded</td>
|
|
153
|
+
</tr>
|
|
154
|
+
<tr>
|
|
155
|
+
<td>Pricing</td>
|
|
156
|
+
<td>Free</td>
|
|
157
|
+
<td>Free CLI (3 active rules, 2 captures/day) → $19/mo Pro for unlimited</td>
|
|
158
|
+
</tr>
|
|
159
|
+
<tr>
|
|
160
|
+
<td>Maker</td>
|
|
161
|
+
<td>Meterian (established supply-chain security firm)</td>
|
|
162
|
+
<td>ThumbGate (open-source devtool)</td>
|
|
163
|
+
</tr>
|
|
164
|
+
</table>
|
|
165
|
+
</div>
|
|
166
|
+
|
|
167
|
+
<div class="detail-section">
|
|
168
|
+
<h2>When to install HEIDI</h2>
|
|
169
|
+
<ul>
|
|
170
|
+
<li>Your AI assistant keeps suggesting deps with known CVEs.</li>
|
|
171
|
+
<li>You want live vulnerability data injected into Copilot / Cursor / Claude Code at suggest-time, not after.</li>
|
|
172
|
+
<li>You need a free, IDE-native CVE scanner for npm / pip / maven manifests.</li>
|
|
173
|
+
<li>You care about supply-chain attestation more than agent-behavior repeat-prevention.</li>
|
|
174
|
+
</ul>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
<div class="detail-section">
|
|
178
|
+
<h2>When to install ThumbGate</h2>
|
|
179
|
+
<ul>
|
|
180
|
+
<li>You've watched the same class of AI-agent failure recur across runs (wrong path, wrong env, repeated lint failure, file overwrites).</li>
|
|
181
|
+
<li>You want failure patterns blocked at the tool-call layer, not caught post-hoc by CI.</li>
|
|
182
|
+
<li>You're running 5+ agents and need shared lesson memory across them.</li>
|
|
183
|
+
<li>You want a thumbs-down → prevention-rule loop instead of writing rules manually.</li>
|
|
184
|
+
</ul>
|
|
185
|
+
</div>
|
|
186
|
+
|
|
187
|
+
<div class="detail-section">
|
|
188
|
+
<h2>Running both</h2>
|
|
189
|
+
<p>HEIDI's MCP server and ThumbGate's PreToolUse hook do not conflict. A reasonable stack for a serious AI-coding workflow:</p>
|
|
190
|
+
<ul>
|
|
191
|
+
<li><strong>HEIDI</strong> — query layer your AI assistant calls to check CVEs before suggesting a dep.</li>
|
|
192
|
+
<li><strong>ThumbGate</strong> — gate layer that blocks the agent's tool call if it matches a known-bad pattern from your own feedback history.</li>
|
|
193
|
+
<li>Both run local-first. Both are free at base tier. Together they cover supply-chain risk + behavioral risk for under 10 minutes of setup.</li>
|
|
194
|
+
</ul>
|
|
195
|
+
</div>
|
|
196
|
+
|
|
197
|
+
<div class="detail-section">
|
|
198
|
+
<h2>FAQ</h2>
|
|
199
|
+
<details class="faq-item">
|
|
200
|
+
<summary>Is HEIDI a direct ThumbGate competitor?</summary>
|
|
201
|
+
<p>No. Different threat surfaces. Same buyer category, but addressing distinct failure modes. Heidi is from Meterian, an established supply-chain security firm; ThumbGate is an independent open-source devtool focused on agent behavior.</p>
|
|
202
|
+
</details>
|
|
203
|
+
<details class="faq-item">
|
|
204
|
+
<summary>Should I install HEIDI or ThumbGate first?</summary>
|
|
205
|
+
<p>If your blocker is "the AI keeps suggesting vulnerable packages," install HEIDI first. If your blocker is "the AI keeps making the same tool-call mistake," install ThumbGate first. Most teams shipping AI-generated code need both eventually.</p>
|
|
206
|
+
</details>
|
|
207
|
+
<details class="faq-item">
|
|
208
|
+
<summary>Can ThumbGate import HEIDI's CVE data?</summary>
|
|
209
|
+
<p>Not today. Both expose MCP servers, so a future integration where ThumbGate consults HEIDI's vulnerability index before allowing a `npm install <package>` tool call is technically feasible. We're open to that conversation.</p>
|
|
210
|
+
</details>
|
|
211
|
+
</div>
|
|
212
|
+
|
|
213
|
+
</div>
|
|
214
|
+
|
|
215
|
+
<aside class="sidebar">
|
|
216
|
+
<div class="sidebar-card">
|
|
217
|
+
<h3 style="margin-top:0;">Get ThumbGate in 30 seconds</h3>
|
|
218
|
+
<p>One install command. Works with Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode.</p>
|
|
219
|
+
<pre style="background:var(--bg);padding:12px;border-radius:8px;font-size:13px;overflow-x:auto;"><code>npx thumbgate init</code></pre>
|
|
220
|
+
<a class="cta-button" href="https://github.com/IgorGanapolsky/ThumbGate">View on GitHub</a>
|
|
221
|
+
<a class="cta-button" href="/pricing" style="background:transparent;color:var(--cyan);border:1px solid var(--cyan);">See pricing</a>
|
|
222
|
+
</div>
|
|
223
|
+
|
|
224
|
+
<div class="sidebar-card">
|
|
225
|
+
<span class="related-label">Other comparisons</span>
|
|
226
|
+
<a class="related-card" href="/compare/agentix-labs">ThumbGate vs Agentix Labs</a>
|
|
227
|
+
<a class="related-card" href="/compare">All comparisons</a>
|
|
228
|
+
</div>
|
|
229
|
+
</aside>
|
|
230
|
+
</section>
|
|
231
|
+
</main>
|
|
232
|
+
</body>
|
|
233
|
+
</html>
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>ThumbGate vs Mem0 | Enforcement vs Persistent Memory for AI Agents</title>
|
|
7
|
+
<meta name="description" content="Mem0 is persistent memory for AI agents. ThumbGate adapts scoped memory, entity-linked recall, and lifecycle pruning, then adds pre-action enforcement that blocks repeated mistakes." />
|
|
8
|
+
<meta property="og:title" content="ThumbGate vs Mem0 | Enforcement vs Persistent Memory for AI Agents" />
|
|
9
|
+
<meta property="og:description" content="Mem0 is persistent memory for AI agents. ThumbGate adapts scoped memory, entity-linked recall, and lifecycle pruning, then adds pre-action enforcement that blocks repeated mistakes." />
|
|
10
|
+
<meta property="og:type" content="article" />
|
|
11
|
+
<meta property="og:url" content="https://thumbgate.ai/compare/mem0" />
|
|
12
|
+
<link rel="canonical" href="https://thumbgate.ai/compare/mem0" />
|
|
13
|
+
<link rel="llm-context" href="/llm-context.md" type="text/markdown" />
|
|
14
|
+
<link rel="icon" type="image/svg+xml" href="/thumbgate-icon.png" />
|
|
15
|
+
<link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg" />
|
|
16
|
+
<meta property="og:image" content="/og.png" />
|
|
17
|
+
<style>
|
|
18
|
+
:root {
|
|
19
|
+
--bg: #0a0a0b;
|
|
20
|
+
--bg-raised: #111113;
|
|
21
|
+
--bg-card: #161618;
|
|
22
|
+
--line: #222225;
|
|
23
|
+
--text: #e8e8ec;
|
|
24
|
+
--muted: #8b8b96;
|
|
25
|
+
--cyan: #22d3ee;
|
|
26
|
+
--green: #4ade80;
|
|
27
|
+
--red: #f87171;
|
|
28
|
+
}
|
|
29
|
+
* { box-sizing: border-box; }
|
|
30
|
+
body {
|
|
31
|
+
margin: 0;
|
|
32
|
+
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
33
|
+
background: var(--bg);
|
|
34
|
+
color: var(--text);
|
|
35
|
+
line-height: 1.65;
|
|
36
|
+
}
|
|
37
|
+
a { color: var(--cyan); text-decoration: none; }
|
|
38
|
+
a:hover { text-decoration: underline; }
|
|
39
|
+
.container { max-width: 980px; margin: 0 auto; padding: 0 24px; }
|
|
40
|
+
.topbar {
|
|
41
|
+
position: sticky;
|
|
42
|
+
top: 0;
|
|
43
|
+
z-index: 20;
|
|
44
|
+
backdrop-filter: blur(12px);
|
|
45
|
+
background: rgba(10, 10, 11, 0.88);
|
|
46
|
+
border-bottom: 1px solid var(--line);
|
|
47
|
+
}
|
|
48
|
+
.topbar .container {
|
|
49
|
+
display: flex;
|
|
50
|
+
justify-content: space-between;
|
|
51
|
+
align-items: center;
|
|
52
|
+
padding-top: 14px;
|
|
53
|
+
padding-bottom: 14px;
|
|
54
|
+
}
|
|
55
|
+
.brand {
|
|
56
|
+
font-weight: 700;
|
|
57
|
+
color: var(--text);
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
gap: 8px;
|
|
61
|
+
text-decoration: none;
|
|
62
|
+
}
|
|
63
|
+
.brand .logo-mark { width: 28px; height: 28px; display: block; }
|
|
64
|
+
.hero { padding: 72px 0 32px; }
|
|
65
|
+
.eyebrow {
|
|
66
|
+
display: inline-flex;
|
|
67
|
+
align-items: center;
|
|
68
|
+
gap: 8px;
|
|
69
|
+
padding: 6px 12px;
|
|
70
|
+
border-radius: 999px;
|
|
71
|
+
border: 1px solid rgba(34, 211, 238, 0.22);
|
|
72
|
+
background: rgba(34, 211, 238, 0.1);
|
|
73
|
+
color: var(--cyan);
|
|
74
|
+
text-transform: uppercase;
|
|
75
|
+
letter-spacing: 0.08em;
|
|
76
|
+
font-size: 12px;
|
|
77
|
+
font-weight: 700;
|
|
78
|
+
}
|
|
79
|
+
h1 {
|
|
80
|
+
font-size: clamp(34px, 5vw, 56px);
|
|
81
|
+
line-height: 1.06;
|
|
82
|
+
letter-spacing: -0.04em;
|
|
83
|
+
margin: 16px 0;
|
|
84
|
+
max-width: 760px;
|
|
85
|
+
}
|
|
86
|
+
.hero p {
|
|
87
|
+
max-width: 720px;
|
|
88
|
+
color: var(--muted);
|
|
89
|
+
font-size: 18px;
|
|
90
|
+
}
|
|
91
|
+
.signal-row {
|
|
92
|
+
display: flex;
|
|
93
|
+
flex-wrap: wrap;
|
|
94
|
+
gap: 12px;
|
|
95
|
+
margin: 28px 0 0;
|
|
96
|
+
}
|
|
97
|
+
.signal-pill {
|
|
98
|
+
display: inline-flex;
|
|
99
|
+
align-items: center;
|
|
100
|
+
gap: 8px;
|
|
101
|
+
padding: 10px 14px;
|
|
102
|
+
border-radius: 999px;
|
|
103
|
+
border: 1px solid var(--line);
|
|
104
|
+
background: var(--bg-raised);
|
|
105
|
+
font-weight: 600;
|
|
106
|
+
font-size: 14px;
|
|
107
|
+
}
|
|
108
|
+
.signal-pill.up {
|
|
109
|
+
border-color: rgba(74, 222, 128, 0.28);
|
|
110
|
+
color: #b8f7c8;
|
|
111
|
+
background: rgba(74, 222, 128, 0.1);
|
|
112
|
+
}
|
|
113
|
+
.signal-pill.down {
|
|
114
|
+
border-color: rgba(248, 113, 113, 0.28);
|
|
115
|
+
color: #ffc0c0;
|
|
116
|
+
background: rgba(248, 113, 113, 0.1);
|
|
117
|
+
}
|
|
118
|
+
.grid {
|
|
119
|
+
display: grid;
|
|
120
|
+
grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
|
|
121
|
+
gap: 24px;
|
|
122
|
+
padding-bottom: 72px;
|
|
123
|
+
}
|
|
124
|
+
.card, .detail-section, .sidebar-card {
|
|
125
|
+
background: var(--bg-card);
|
|
126
|
+
border: 1px solid var(--line);
|
|
127
|
+
border-radius: 16px;
|
|
128
|
+
}
|
|
129
|
+
.card { padding: 24px; }
|
|
130
|
+
.detail-section { padding: 24px; margin-bottom: 18px; }
|
|
131
|
+
.detail-section h2 { margin: 0 0 12px; font-size: 24px; letter-spacing: -0.03em; }
|
|
132
|
+
.detail-section p { color: var(--muted); }
|
|
133
|
+
.detail-section ul, .card ul { padding-left: 18px; color: var(--muted); }
|
|
134
|
+
.card h2 { margin-top: 0; }
|
|
135
|
+
.sidebar {
|
|
136
|
+
display: flex;
|
|
137
|
+
flex-direction: column;
|
|
138
|
+
gap: 18px;
|
|
139
|
+
}
|
|
140
|
+
.sidebar-card {
|
|
141
|
+
padding: 20px;
|
|
142
|
+
}
|
|
143
|
+
/* Only the first sidebar card sticks. Stacking multiple stickies at the
|
|
144
|
+
same top offset makes them overlap each other on scroll. The related-
|
|
145
|
+
pages card flows normally below. */
|
|
146
|
+
.sidebar-card:first-child {
|
|
147
|
+
position: sticky;
|
|
148
|
+
top: 84px;
|
|
149
|
+
max-height: calc(100vh - 104px);
|
|
150
|
+
overflow-y: auto;
|
|
151
|
+
-webkit-overflow-scrolling: touch;
|
|
152
|
+
}
|
|
153
|
+
.proof-links {
|
|
154
|
+
display: flex;
|
|
155
|
+
flex-wrap: wrap;
|
|
156
|
+
gap: 12px;
|
|
157
|
+
margin-top: 16px;
|
|
158
|
+
}
|
|
159
|
+
.cta-button {
|
|
160
|
+
display: inline-flex;
|
|
161
|
+
align-items: center;
|
|
162
|
+
justify-content: center;
|
|
163
|
+
margin-top: 18px;
|
|
164
|
+
padding: 12px 16px;
|
|
165
|
+
border-radius: 10px;
|
|
166
|
+
background: var(--cyan);
|
|
167
|
+
color: #071116;
|
|
168
|
+
font-weight: 700;
|
|
169
|
+
text-decoration: none;
|
|
170
|
+
}
|
|
171
|
+
.faq-item {
|
|
172
|
+
border-top: 1px solid var(--line);
|
|
173
|
+
padding: 14px 0;
|
|
174
|
+
}
|
|
175
|
+
.faq-item summary {
|
|
176
|
+
cursor: pointer;
|
|
177
|
+
font-weight: 600;
|
|
178
|
+
}
|
|
179
|
+
.faq-item p {
|
|
180
|
+
color: var(--muted);
|
|
181
|
+
}
|
|
182
|
+
.related-card {
|
|
183
|
+
display: block;
|
|
184
|
+
padding: 14px;
|
|
185
|
+
border-radius: 12px;
|
|
186
|
+
border: 1px solid var(--line);
|
|
187
|
+
background: var(--bg-raised);
|
|
188
|
+
margin-top: 12px;
|
|
189
|
+
color: var(--text);
|
|
190
|
+
}
|
|
191
|
+
.related-label {
|
|
192
|
+
display: block;
|
|
193
|
+
color: var(--muted);
|
|
194
|
+
font-size: 12px;
|
|
195
|
+
text-transform: uppercase;
|
|
196
|
+
letter-spacing: 0.08em;
|
|
197
|
+
margin-bottom: 4px;
|
|
198
|
+
}
|
|
199
|
+
@media (max-width: 860px) {
|
|
200
|
+
.grid {
|
|
201
|
+
grid-template-columns: 1fr;
|
|
202
|
+
}
|
|
203
|
+
.sidebar-card:first-child {
|
|
204
|
+
position: static;
|
|
205
|
+
max-height: none;
|
|
206
|
+
overflow: visible;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
</style>
|
|
210
|
+
<script type="application/ld+json">
|
|
211
|
+
{
|
|
212
|
+
"@context": "https://schema.org",
|
|
213
|
+
"@type": "TechArticle",
|
|
214
|
+
"headline": "ThumbGate vs Mem0",
|
|
215
|
+
"description": "Mem0 is persistent memory for AI agents. ThumbGate adapts scoped memory, entity-linked recall, and lifecycle pruning, then adds pre-action enforcement that blocks repeated mistakes.",
|
|
216
|
+
"about": [
|
|
217
|
+
"thumbgate vs speclock",
|
|
218
|
+
"thumbgate vs mem0",
|
|
219
|
+
"thumbgate vs fallow",
|
|
220
|
+
"roo code alternative cline"
|
|
221
|
+
],
|
|
222
|
+
"url": "https://thumbgate.ai/compare/mem0",
|
|
223
|
+
"publisher": {
|
|
224
|
+
"@type": "Organization",
|
|
225
|
+
"name": "ThumbGate",
|
|
226
|
+
"url": "https://thumbgate.ai"
|
|
227
|
+
},
|
|
228
|
+
"mainEntityOfPage": "https://thumbgate.ai/compare/mem0"
|
|
229
|
+
}
|
|
230
|
+
</script>
|
|
231
|
+
<script type="application/ld+json">
|
|
232
|
+
{
|
|
233
|
+
"@context": "https://schema.org",
|
|
234
|
+
"@type": "FAQPage",
|
|
235
|
+
"mainEntity": [
|
|
236
|
+
{
|
|
237
|
+
"@type": "Question",
|
|
238
|
+
"name": "Does ThumbGate still include memory?",
|
|
239
|
+
"acceptedAnswer": {
|
|
240
|
+
"@type": "Answer",
|
|
241
|
+
"text": "Yes. ThumbGate keeps local-first memory, ContextFS packs, lesson search, and recall, but adds pre-action enforcement when memory alone is insufficient."
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"@type": "Question",
|
|
246
|
+
"name": "Why compare Mem0 at all?",
|
|
247
|
+
"acceptedAnswer": {
|
|
248
|
+
"@type": "Answer",
|
|
249
|
+
"text": "Because buyers often start with memory tooling and only later realize they also need enforcement. This page makes that upgrade path explicit."
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
]
|
|
253
|
+
}
|
|
254
|
+
</script>
|
|
255
|
+
</head>
|
|
256
|
+
<body>
|
|
257
|
+
<div class="topbar">
|
|
258
|
+
<div class="container">
|
|
259
|
+
<a class="brand" href="/"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
|
|
260
|
+
<a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a>
|
|
261
|
+
</div>
|
|
262
|
+
</div>
|
|
263
|
+
|
|
264
|
+
<main class="container">
|
|
265
|
+
<section class="hero">
|
|
266
|
+
<div class="eyebrow">comparison | thumbgate vs mem0</div>
|
|
267
|
+
<h1>ThumbGate vs Mem0</h1>
|
|
268
|
+
<p>Mem0 is persistent memory for AI agents. ThumbGate uses the same high-value pattern, scoped recall over prior interactions, but narrows it to corrective memory that can become an enforceable pre-action gate.</p>
|
|
269
|
+
<div class="signal-row">
|
|
270
|
+
<div class="signal-pill up">👍 Thumbs up reinforces good behavior</div>
|
|
271
|
+
<div class="signal-pill down">👎 Thumbs down blocks repeated mistakes</div>
|
|
272
|
+
</div>
|
|
273
|
+
</section>
|
|
274
|
+
|
|
275
|
+
<section class="grid">
|
|
276
|
+
<div>
|
|
277
|
+
<div class="card">
|
|
278
|
+
<h2>Why this page exists</h2>
|
|
279
|
+
<ul><li>Mem0 is useful when you mainly need persistent personalization, user preferences, and cross-session context.</li><li>ThumbGate is useful when the memory is about a risky action that must be stopped before execution.</li><li>The highest-ROI buyer story is not "we remember more." It is "we remember the mistake, retrieve the right lesson, and block the repeat attempt with proof."</li></ul>
|
|
280
|
+
</div>
|
|
281
|
+
|
|
282
|
+
<section class="detail-section">
|
|
283
|
+
<h2>What Mem0 gets right</h2>
|
|
284
|
+
<p>Mem0's public positioning makes the correct bet: agents need an external memory layer so they can remember across sessions without dumping every old transcript back into the prompt.</p>
|
|
285
|
+
<ul><li>Scoped memory: different recall for a user, session, project, or organization.</li><li>Hybrid retrieval: combine keyword matching with entity-aware or semantic recall.</li><li>Lifecycle hygiene: prune or consolidate stale memories so context does not become prompt bloat.</li><li>Measured value: show token, latency, and quality impact instead of vague "better memory" claims.</li></ul>
|
|
286
|
+
</section>
|
|
287
|
+
<section class="detail-section">
|
|
288
|
+
<h2>What ThumbGate adds</h2>
|
|
289
|
+
<p>ThumbGate now applies the same memory-layer ideas to enforcement memory. Lessons are classified by scope, linked to concrete entities such as Stripe, GitHub, files, and commands, and marked active, sticky, review, or archive-candidate before recall.</p>
|
|
290
|
+
<ul><li>Thumbs up reinforces good behavior.</li><li>Thumbs down creates corrective memory with source and outcome evidence.</li><li>High-risk memories stay sticky until explicitly retired.</li><li>Repeated failures can promote from lesson search into prevention rules and PreToolUse gates.</li><li>Verification evidence and automation reports back up the reliability claim.</li></ul>
|
|
291
|
+
</section>
|
|
292
|
+
<section class="detail-section">
|
|
293
|
+
<h2>When to use each</h2>
|
|
294
|
+
<p>Use Mem0-style memory when the goal is personalization or long-lived assistant context. Use ThumbGate when the remembered item is operational risk: force-pushes, destructive SQL, bad checkout links, deploy shortcuts, missing proof, leaked secrets, or repeated workflow failures.</p>
|
|
295
|
+
<p>Memory helps the agent know. Enforcement decides what the agent is allowed to do next.</p>
|
|
296
|
+
</section>
|
|
297
|
+
<div class="detail-section">
|
|
298
|
+
<h2>FAQ</h2>
|
|
299
|
+
|
|
300
|
+
<details class="faq-item">
|
|
301
|
+
<summary>Does ThumbGate still include memory?</summary>
|
|
302
|
+
<p>Yes. ThumbGate keeps local-first memory, ContextFS packs, lesson search, and recall, but adds pre-action enforcement when memory alone is insufficient.</p>
|
|
303
|
+
</details>
|
|
304
|
+
<details class="faq-item">
|
|
305
|
+
<summary>Why compare Mem0 at all?</summary>
|
|
306
|
+
<p>Because buyers often start with memory tooling and only later realize they also need enforcement. This page makes that upgrade path explicit.</p>
|
|
307
|
+
</details>
|
|
308
|
+
</div>
|
|
309
|
+
</div>
|
|
310
|
+
|
|
311
|
+
<aside class="sidebar">
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
<div class="sidebar-card">
|
|
317
|
+
<h2>GSD execution brief</h2>
|
|
318
|
+
<p>This page was prioritized because persistent AI memory is becoming a default buyer expectation. ThumbGate uses those patterns for corrective recall, then sells the harder outcome: blocked repeat mistakes before execution.</p>
|
|
319
|
+
<p><strong>Opportunity score:</strong> 100</p>
|
|
320
|
+
<p><strong>Primary persona:</strong> tool-evaluator</p>
|
|
321
|
+
<p><strong>Keyword cluster:</strong> thumbgate vs speclock, thumbgate vs mem0, thumbgate vs fallow, roo code alternative cline</p>
|
|
322
|
+
<p><strong>Pricing:</strong> Pro $19/mo or $149/yr. Team $49/seat/mo.</p>
|
|
323
|
+
<div class="proof-links"><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">Verification evidence</a><a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/proof/automation/report.json" target="_blank" rel="noopener">Automation proof</a><a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub repository</a></div>
|
|
324
|
+
<a class="cta-button" href="/checkout/pro?utm_source=website&utm_medium=seo_page&utm_campaign=compare_mem0&cta_placement=seo_brief&plan_id=pro" target="_blank" rel="noopener">Go Pro — $19/mo</a>
|
|
325
|
+
</div>
|
|
326
|
+
<div class="sidebar-card">
|
|
327
|
+
<h2>Related pages</h2>
|
|
328
|
+
|
|
329
|
+
<a class="related-card" href="/compare/speclock">
|
|
330
|
+
<span class="related-label">Related page</span>
|
|
331
|
+
<strong>ThumbGate vs SpecLock</strong>
|
|
332
|
+
</a>
|
|
333
|
+
<a class="related-card" href="/guides/claude-code-feedback">
|
|
334
|
+
<span class="related-label">Related page</span>
|
|
335
|
+
<strong>Claude Code Feedback Memory That Actually Enforces</strong>
|
|
336
|
+
</a>
|
|
337
|
+
</div>
|
|
338
|
+
</aside>
|
|
339
|
+
</section>
|
|
340
|
+
</main>
|
|
341
|
+
</body>
|
|
342
|
+
</html>
|