thumbgate 1.27.12 → 1.27.13
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 +2 -1
- package/.well-known/mcp/server-card.json +1 -1
- package/README.md +2 -4
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/mcp/server-stdio.js +1 -1
- package/adapters/opencode/opencode.json +1 -1
- package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
- package/bin/cli.js +78 -259
- package/config/gate-templates.json +0 -228
- package/config/gates/claim-verification.json +0 -18
- package/package.json +35 -25
- package/public/assets/brand/thumbgate-logo-transparent.svg +22 -0
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +19 -0
- package/public/assets/brand/thumbgate-mark.svg +11 -5
- package/public/blog.html +0 -30
- package/public/brand/thumbgate-mark.svg +9 -5
- package/public/chatgpt-app.html +2 -2
- package/public/compare.html +2 -1
- package/public/dashboard.html +1 -1
- package/public/federal.html +1 -1
- package/public/index.html +95 -216
- package/public/learn.html +59 -35
- package/public/lessons.html +1 -1
- package/public/numbers.html +2 -2
- package/public/pro.html +7 -7
- package/scripts/aws-blocks-guardrails.js +228 -0
- package/scripts/cli-schema.js +22 -10
- package/scripts/dashboard-chat.js +2 -1
- package/scripts/document-intake.js +1 -49
- package/scripts/durability/step.js +3 -3
- package/scripts/gate-stats.js +5 -11
- package/scripts/gates-engine.js +0 -49
- package/scripts/gemini-embedding-policy.js +2 -1
- package/scripts/hook-stop-anti-claim.js +116 -184
- package/scripts/hosted-config.js +0 -12
- package/scripts/lesson-search.js +1 -15
- package/scripts/llm-client.js +187 -5
- package/scripts/plausible-domain-config.js +3 -1
- package/scripts/seo-gsd.js +240 -1
- package/scripts/tool-registry.js +2 -2
- package/scripts/vector-store.js +44 -0
- package/scripts/workspace-evolver.js +62 -2
- package/src/api/server.js +340 -131
- package/public/assets/brand/thumbgate-mark-inline.svg +0 -15
- package/public/compare/adopt-ai.html +0 -219
- package/public/compare/agentix-labs.html +0 -197
- package/public/compare/ai-experience-orchestration.html +0 -216
- package/public/compare/anthropic-claude-for-legal.html +0 -260
- package/public/compare/anthropic-containment.html +0 -280
- package/public/compare/arcade.html +0 -175
- package/public/compare/arcjet.html +0 -239
- package/public/compare/bumblebee.html +0 -307
- package/public/compare/claude-code-hooks.html +0 -294
- package/public/compare/databricks-unity-ai-gateway.html +0 -215
- package/public/compare/fallow.html +0 -351
- package/public/compare/heidi.html +0 -233
- package/public/compare/mem0.html +0 -342
- package/public/compare/oak-and-sparrow-gatekeeper.html +0 -289
- package/public/compare/rein.html +0 -236
- package/public/compare/sigmashake.html +0 -256
- package/public/compare/speclock.html +0 -342
- package/public/guides/agent-harness-optimization.html +0 -342
- package/public/guides/agentic-web-governance.html +0 -406
- package/public/guides/ai-agent-governance-sprint.html +0 -415
- package/public/guides/ai-agent-pre-action-approval-gates.html +0 -401
- package/public/guides/ai-agent-workflow-migration-checklist.html +0 -392
- package/public/guides/ai-deployment-readiness.html +0 -415
- package/public/guides/ai-mode-ads-agent-governance.html +0 -401
- package/public/guides/ai-search-topical-presence.html +0 -342
- package/public/guides/autoresearch-agent-safety.html +0 -342
- package/public/guides/background-agent-governance.html +0 -358
- package/public/guides/best-tools-stop-ai-agents-breaking-production.html +0 -363
- package/public/guides/browser-automation-safety.html +0 -342
- package/public/guides/chatgpt-ads-trust.html +0 -353
- package/public/guides/claude-code-feedback.html +0 -339
- package/public/guides/claude-code-prevent-repeated-mistakes.html +0 -161
- package/public/guides/claude-code-skills-guardrails.html +0 -343
- package/public/guides/claude-desktop.html +0 -356
- package/public/guides/code-knowledge-graph-guardrails.html +0 -365
- package/public/guides/codex-cli-guardrails.html +0 -339
- package/public/guides/cursor-agent-guardrails.html +0 -339
- package/public/guides/cursor-prevent-repeated-mistakes.html +0 -161
- package/public/guides/database-agent-safety.html +0 -406
- package/public/guides/deepseek-v4-runtime-guardrails.html +0 -346
- package/public/guides/developer-machine-supply-chain-guardrails.html +0 -358
- package/public/guides/gcp-mcp-guardrails.html +0 -147
- package/public/guides/gemini-cli-feedback-memory.html +0 -339
- package/public/guides/gpt-5-5-model-evaluation.html +0 -358
- package/public/guides/internal-ai-engineering-stack-guardrails.html +0 -348
- package/public/guides/long-running-agent-context-management.html +0 -346
- package/public/guides/mcp-tool-governance.html +0 -401
- package/public/guides/multica-thumbgate-setup.html +0 -134
- package/public/guides/native-messaging-host-security.html +0 -342
- package/public/guides/policy-engine-pre-action-gates.html +0 -346
- package/public/guides/pre-action-checks.html +0 -342
- package/public/guides/pretooluse-hooks-vs-advisory-prompt-rules.html +0 -342
- package/public/guides/prompt-tricks-to-workflow-rules.html +0 -365
- package/public/guides/proxy-pointer-rag-guardrails.html +0 -352
- package/public/guides/rag-precision-tuning-guardrails.html +0 -352
- package/public/guides/reasoning-compression-guardrails.html +0 -346
- package/public/guides/relational-knowledge-ai-recommendations.html +0 -342
- package/public/guides/roo-code-alternative-cline.html +0 -339
- package/public/guides/semantic-programmatic-seo-guardrails.html +0 -352
- package/public/guides/seo-agent-skills-guardrails.html +0 -344
- package/public/guides/stop-repeated-ai-agent-mistakes.html +0 -342
- package/public/learn/ac-dc-runtime-enforcement.html +0 -277
- package/public/learn/agent-harness-pattern.html +0 -181
- package/public/learn/agent-identity-connector-governance.html +0 -146
- package/public/learn/agent-swarms-shared-gates.html +0 -173
- package/public/learn/agentic-enterprise-context-brain.html +0 -117
- package/public/learn/agentic-os-team-governance.html +0 -146
- package/public/learn/ai-agent-governance.html +0 -158
- package/public/learn/ai-agent-persistent-memory.html +0 -211
- package/public/learn/anthropomorphic-claim-gates.html +0 -180
- package/public/learn/background-agent-control-layer.html +0 -184
- package/public/learn/claude-code-goal-with-rubrics.html +0 -205
- package/public/learn/codex-role-plugins-need-governance.html +0 -125
- package/public/learn/cost-aware-agent-gate-routing.html +0 -173
- package/public/learn/databricks-unity-ai-gateway-runtime-governance.html +0 -157
- package/public/learn/deterministic-agent-workflows.html +0 -185
- package/public/learn/feedback-loop-vs-decision-layer.html +0 -283
- package/public/learn/from-prototype-to-production.html +0 -223
- package/public/learn/learn.css +0 -51
- package/public/learn/mcp-pre-action-checks-explained.html +0 -172
- package/public/learn/pretix-stripe-connect-marketplaces.html +0 -161
- package/public/learn/regulated-agent-execution-boundary.html +0 -196
- package/public/learn/spec-driven-development.html +0 -168
- package/public/learn/stop-ai-agent-force-push.html +0 -134
- package/public/learn/vibe-coding-safety-net.html +0 -142
- package/scripts/reddit-browser-notification-watch.js +0 -230
|
@@ -1,351 +0,0 @@
|
|
|
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 Fallow | Static Analysis vs Agent Action Enforcement</title>
|
|
7
|
-
<meta name="description" content="Fallow finds JS/TS code health issues: dead code, duplication, complexity, and architecture drift. ThumbGate is action-boundary enforcement for AI agents, st..." />
|
|
8
|
-
<meta property="og:title" content="ThumbGate vs Fallow | Static Analysis vs Agent Action Enforcement" />
|
|
9
|
-
<meta property="og:description" content="Fallow finds JS/TS code health issues: dead code, duplication, complexity, and architecture drift. ThumbGate is action-boundary enforcement for AI agents, st..." />
|
|
10
|
-
<meta property="og:type" content="article" />
|
|
11
|
-
<meta property="og:url" content="https://thumbgate.ai/compare/fallow" />
|
|
12
|
-
<link rel="canonical" href="https://thumbgate.ai/compare/fallow" />
|
|
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 Fallow",
|
|
215
|
-
"description": "Fallow finds JS/TS code health issues: dead code, duplication, complexity, and architecture drift. ThumbGate is action-boundary enforcement for AI agents, st...",
|
|
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/fallow",
|
|
223
|
-
"publisher": {
|
|
224
|
-
"@type": "Organization",
|
|
225
|
-
"name": "ThumbGate",
|
|
226
|
-
"url": "https://thumbgate.ai"
|
|
227
|
-
},
|
|
228
|
-
"mainEntityOfPage": "https://thumbgate.ai/compare/fallow"
|
|
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": "Is Fallow a competitor to ThumbGate?",
|
|
239
|
-
"acceptedAnswer": {
|
|
240
|
-
"@type": "Answer",
|
|
241
|
-
"text": "Partly adjacent, but mostly complementary. Fallow analyzes JS/TS code health. ThumbGate enforces AI-agent actions before execution. They solve different parts of the agent workflow."
|
|
242
|
-
}
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
"@type": "Question",
|
|
246
|
-
"name": "Should ThumbGate integrate with Fallow output?",
|
|
247
|
-
"acceptedAnswer": {
|
|
248
|
-
"@type": "Answer",
|
|
249
|
-
"text": "Yes. Fallow JSON is useful input for ThumbGate gates, especially duplication, complexity, changed-file audit results, and architecture-boundary warnings."
|
|
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 fallow</div>
|
|
267
|
-
<h1>ThumbGate vs Fallow</h1>
|
|
268
|
-
<p>Fallow finds JS/TS code health issues: dead code, duplication, complexity, and architecture drift. ThumbGate is action-boundary enforcement for AI agents, stopping agents from acting on those signals unsafely.</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>Fallow is complementary, not a direct replacement: it finds dead code, duplication, complexity, and architecture drift.</li><li>ThumbGate governs the next agent action: refactor scope, risky edits, CI proof, team lessons, and pre-action blocks.</li><li>Together, Fallow output can become ThumbGate gates so agents do not blindly refactor everything a static analyzer flags.</li></ul>
|
|
280
|
-
</div>
|
|
281
|
-
|
|
282
|
-
<section class="detail-section">
|
|
283
|
-
<h2>The product difference in one sentence</h2>
|
|
284
|
-
<p>Fallow tells you where a JavaScript or TypeScript codebase may be unhealthy. ThumbGate governs what AI agents are allowed to do next: make the next edit, command, PR, or publish action.</p><p>That distinction matters because analyzer output can be useful and dangerous at the same time. A duplicated block can be safe to refactor, or it can be intentional domain duplication where an agent should stop and ask for evidence.</p>
|
|
285
|
-
|
|
286
|
-
</section>
|
|
287
|
-
<section class="detail-section">
|
|
288
|
-
<h2>Choose Fallow when</h2>
|
|
289
|
-
|
|
290
|
-
<ul><li>You want static reports for unused code, duplicate blocks, complexity hotspots, circular dependencies, or architecture drift.</li><li>You need JSON diagnostics an agent can inspect before proposing cleanup work.</li><li>Your immediate goal is code health visibility in JS/TS repositories.</li></ul>
|
|
291
|
-
</section>
|
|
292
|
-
<section class="detail-section">
|
|
293
|
-
<h2>Choose ThumbGate when</h2>
|
|
294
|
-
|
|
295
|
-
<ul><li>You need pre-action enforcement before an AI agent applies analyzer-driven refactors.</li><li>You want CI and human feedback to become durable prevention rules across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.</li><li>You need audit evidence that a risky cleanup, dependency update, or cross-layer refactor was checked before execution.</li></ul>
|
|
296
|
-
</section>
|
|
297
|
-
<section class="detail-section">
|
|
298
|
-
<h2>Best together</h2>
|
|
299
|
-
<p>The highest-ROI workflow is Fallow for deterministic codebase signals and ThumbGate for agent governance. Run the analyzer, pass the changed-file and complexity signals into a ThumbGate gate, then require proof before the agent edits central files or opens a PR.</p>
|
|
300
|
-
|
|
301
|
-
</section>
|
|
302
|
-
<div class="detail-section">
|
|
303
|
-
<h2>FAQ</h2>
|
|
304
|
-
|
|
305
|
-
<details class="faq-item">
|
|
306
|
-
<summary>Is Fallow a competitor to ThumbGate?</summary>
|
|
307
|
-
<p>Partly adjacent, but mostly complementary. Fallow analyzes JS/TS code health. ThumbGate enforces AI-agent actions before execution. They solve different parts of the agent workflow.</p>
|
|
308
|
-
</details>
|
|
309
|
-
<details class="faq-item">
|
|
310
|
-
<summary>Should ThumbGate integrate with Fallow output?</summary>
|
|
311
|
-
<p>Yes. Fallow JSON is useful input for ThumbGate gates, especially duplication, complexity, changed-file audit results, and architecture-boundary warnings.</p>
|
|
312
|
-
</details>
|
|
313
|
-
</div>
|
|
314
|
-
</div>
|
|
315
|
-
|
|
316
|
-
<aside class="sidebar">
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
<div class="sidebar-card">
|
|
322
|
-
<h2>GSD execution brief</h2>
|
|
323
|
-
<p>This page was prioritized because it captures high-intent demand around thumbgate vs fallow and feeds directly into ThumbGate's proof-led conversion path.</p>
|
|
324
|
-
<p><strong>Opportunity score:</strong> 100</p>
|
|
325
|
-
<p><strong>Primary persona:</strong> tool-evaluator</p>
|
|
326
|
-
<p><strong>Keyword cluster:</strong> thumbgate vs speclock, thumbgate vs mem0, thumbgate vs fallow, roo code alternative cline</p>
|
|
327
|
-
<p><strong>Pricing:</strong> Pro $19/mo or $149/yr. Team $49/seat/mo.</p>
|
|
328
|
-
<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>
|
|
329
|
-
<a class="cta-button" href="/checkout/pro?utm_source=website&utm_medium=seo_page&utm_campaign=compare_fallow&cta_placement=seo_brief&plan_id=pro" target="_blank" rel="noopener">Go Pro — $19/mo</a>
|
|
330
|
-
</div>
|
|
331
|
-
<div class="sidebar-card">
|
|
332
|
-
<h2>Related pages</h2>
|
|
333
|
-
|
|
334
|
-
<a class="related-card" href="/guides/code-knowledge-graph-guardrails">
|
|
335
|
-
<span class="related-label">Related page</span>
|
|
336
|
-
<strong>Code Graphs Are Context. ThumbGate Is Execution Control.</strong>
|
|
337
|
-
</a>
|
|
338
|
-
<a class="related-card" href="/guides/agent-harness-optimization">
|
|
339
|
-
<span class="related-label">Related page</span>
|
|
340
|
-
<strong>AI Agent Harness Optimization That Blocks Repeat Failures</strong>
|
|
341
|
-
</a>
|
|
342
|
-
<a class="related-card" href="/guides/pre-action-checks">
|
|
343
|
-
<span class="related-label">Related page</span>
|
|
344
|
-
<strong>What Are Pre-Action Checks?</strong>
|
|
345
|
-
</a>
|
|
346
|
-
</div>
|
|
347
|
-
</aside>
|
|
348
|
-
</section>
|
|
349
|
-
</main>
|
|
350
|
-
</body>
|
|
351
|
-
</html>
|
|
@@ -1,233 +0,0 @@
|
|
|
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>
|