thumbgate 1.3.0 → 1.4.0

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.
Files changed (146) hide show
  1. package/.claude-plugin/marketplace.json +32 -13
  2. package/.claude-plugin/plugin.json +15 -2
  3. package/.well-known/llms.txt +60 -0
  4. package/.well-known/mcp/server-card.json +1 -1
  5. package/README.md +109 -20
  6. package/adapters/README.md +1 -1
  7. package/adapters/chatgpt/openapi.yaml +168 -0
  8. package/adapters/claude/.mcp.json +2 -2
  9. package/adapters/codex/config.toml +2 -2
  10. package/adapters/mcp/server-stdio.js +84 -1
  11. package/adapters/opencode/opencode.json +1 -1
  12. package/bin/cli.js +200 -13
  13. package/bin/postinstall.js +8 -2
  14. package/config/budget.json +18 -0
  15. package/config/gates/code-edit.json +61 -0
  16. package/config/gates/db-write.json +61 -0
  17. package/config/gates/default.json +154 -3
  18. package/config/gates/deploy.json +61 -0
  19. package/config/github-about.json +2 -1
  20. package/config/merge-quality-checks.json +23 -0
  21. package/openapi/openapi.yaml +168 -0
  22. package/package.json +42 -10
  23. package/plugins/claude-codex-bridge/.claude-plugin/plugin.json +1 -1
  24. package/plugins/claude-codex-bridge/.mcp.json +1 -1
  25. package/plugins/claude-codex-bridge/scripts/codex-bridge.js +1 -3
  26. package/plugins/codex-profile/.codex-plugin/plugin.json +1 -1
  27. package/plugins/codex-profile/.mcp.json +1 -1
  28. package/plugins/codex-profile/INSTALL.md +27 -4
  29. package/plugins/codex-profile/README.md +33 -9
  30. package/plugins/cursor-marketplace/.cursor-plugin/plugin.json +1 -1
  31. package/plugins/opencode-profile/INSTALL.md +1 -1
  32. package/public/blog.html +73 -0
  33. package/public/compare/mem0.html +189 -0
  34. package/public/compare/speclock.html +180 -0
  35. package/public/compare.html +10 -2
  36. package/public/guide.html +2 -2
  37. package/public/guides/claude-code-prevent-repeated-mistakes.html +161 -0
  38. package/public/guides/codex-cli-guardrails.html +158 -0
  39. package/public/guides/cursor-prevent-repeated-mistakes.html +161 -0
  40. package/public/guides/pre-action-gates.html +162 -0
  41. package/public/guides/stop-repeated-ai-agent-mistakes.html +159 -0
  42. package/public/index.html +136 -50
  43. package/public/lessons.html +33 -24
  44. package/public/llm-context.md +140 -0
  45. package/public/pro.html +24 -22
  46. package/scripts/__pycache__/train_from_feedback.cpython-312.pyc +0 -0
  47. package/scripts/access-anomaly-detector.js +1 -1
  48. package/scripts/adk-consolidator.js +1 -5
  49. package/scripts/agent-security-hardening.js +4 -6
  50. package/scripts/agentic-data-pipeline.js +1 -3
  51. package/scripts/async-job-runner.js +1 -5
  52. package/scripts/audit-trail.js +1 -5
  53. package/scripts/background-agent-governance.js +2 -10
  54. package/scripts/billing.js +2 -16
  55. package/scripts/budget-enforcer.js +173 -0
  56. package/scripts/build-codex-plugin.js +152 -0
  57. package/scripts/check-congruence.js +132 -14
  58. package/scripts/commercial-offer.js +5 -7
  59. package/scripts/content-engine/linkedin-content-generator.js +154 -0
  60. package/scripts/content-engine/output/linkedin-memento-validation.md +17 -0
  61. package/scripts/content-engine/output/linkedin-posts-2026-04-09.md +175 -0
  62. package/scripts/content-engine/reddit-thread-finder.js +154 -0
  63. package/scripts/context-engine.js +21 -6
  64. package/scripts/contextfs.js +1 -21
  65. package/scripts/dashboard.js +20 -0
  66. package/scripts/decision-journal.js +341 -0
  67. package/scripts/delegation-runtime.js +1 -5
  68. package/scripts/distribution-surfaces.js +26 -0
  69. package/scripts/document-intake.js +927 -0
  70. package/scripts/ephemeral-agent-store.js +1 -8
  71. package/scripts/evolution-state.js +1 -5
  72. package/scripts/experiment-tracker.js +1 -5
  73. package/scripts/export-databricks-bundle.js +1 -5
  74. package/scripts/export-hf-dataset.js +1 -5
  75. package/scripts/export-training.js +1 -5
  76. package/scripts/feedback-attribution.js +1 -16
  77. package/scripts/feedback-history-distiller.js +1 -16
  78. package/scripts/feedback-loop.js +1 -5
  79. package/scripts/feedback-root-consolidator.js +2 -21
  80. package/scripts/feedback-session.js +49 -0
  81. package/scripts/feedback-to-rules.js +188 -28
  82. package/scripts/filesystem-search.js +1 -9
  83. package/scripts/fs-utils.js +104 -0
  84. package/scripts/gates-engine.js +149 -4
  85. package/scripts/github-about.js +32 -8
  86. package/scripts/gtm-revenue-loop.js +1 -5
  87. package/scripts/harness-selector.js +148 -0
  88. package/scripts/hosted-job-launcher.js +1 -5
  89. package/scripts/hybrid-feedback-context.js +7 -33
  90. package/scripts/intervention-policy.js +58 -1
  91. package/scripts/lesson-db.js +3 -18
  92. package/scripts/lesson-inference.js +194 -16
  93. package/scripts/lesson-retrieval.js +60 -24
  94. package/scripts/llm-client.js +59 -0
  95. package/scripts/managed-lesson-agent.js +183 -0
  96. package/scripts/marketing-experiment.js +8 -22
  97. package/scripts/meta-agent-loop.js +624 -0
  98. package/scripts/metered-billing.js +1 -1
  99. package/scripts/money-watcher.js +1 -4
  100. package/scripts/obsidian-export.js +1 -5
  101. package/scripts/operational-integrity.js +15 -3
  102. package/scripts/org-dashboard.js +6 -1
  103. package/scripts/per-step-scoring.js +2 -4
  104. package/scripts/pr-manager.js +201 -19
  105. package/scripts/pro-features.js +3 -2
  106. package/scripts/prompt-dlp.js +3 -3
  107. package/scripts/prove-adapters.js +1 -5
  108. package/scripts/prove-attribution.js +1 -5
  109. package/scripts/prove-automation.js +1 -3
  110. package/scripts/prove-cloudflare-sandbox.js +1 -3
  111. package/scripts/prove-data-pipeline.js +1 -3
  112. package/scripts/prove-intelligence.js +1 -3
  113. package/scripts/prove-lancedb.js +1 -5
  114. package/scripts/prove-local-intelligence.js +1 -3
  115. package/scripts/prove-packaged-runtime.js +75 -9
  116. package/scripts/prove-predictive-insights.js +1 -3
  117. package/scripts/prove-training-export.js +1 -3
  118. package/scripts/prove-workflow-contract.js +1 -5
  119. package/scripts/rate-limiter.js +3 -1
  120. package/scripts/reddit-dm-outreach.js +14 -4
  121. package/scripts/schedule-manager.js +3 -5
  122. package/scripts/security-scanner.js +448 -0
  123. package/scripts/self-distill-agent.js +579 -0
  124. package/scripts/semantic-dedup.js +115 -0
  125. package/scripts/skill-exporter.js +1 -3
  126. package/scripts/skill-generator.js +1 -5
  127. package/scripts/social-analytics/engagement-audit.js +1 -18
  128. package/scripts/social-analytics/pollers/linkedin.js +26 -16
  129. package/scripts/social-analytics/publishers/linkedin.js +1 -1
  130. package/scripts/social-analytics/publishers/zernio.js +51 -0
  131. package/scripts/social-pipeline.js +1 -3
  132. package/scripts/social-post-hourly.js +47 -4
  133. package/scripts/statusline-links.js +6 -5
  134. package/scripts/statusline.sh +29 -153
  135. package/scripts/sync-branch-protection.js +340 -0
  136. package/scripts/tessl-export.js +1 -3
  137. package/scripts/thumbgate-search.js +32 -1
  138. package/scripts/tool-kpi-tracker.js +1 -1
  139. package/scripts/tool-registry.js +106 -2
  140. package/scripts/vector-store.js +1 -5
  141. package/scripts/weekly-auto-post.js +1 -1
  142. package/scripts/workflow-sentinel.js +91 -0
  143. package/skills/thumbgate/SKILL.md +1 -1
  144. package/src/api/server.js +273 -4
  145. package/scripts/social-analytics/db/social-analytics.db-shm +0 -0
  146. /package/scripts/social-analytics/db/{social-analytics.db-wal → analytics.sqlite} +0 -0
@@ -5,7 +5,7 @@
5
5
  "args": [
6
6
  "--yes",
7
7
  "--package",
8
- "thumbgate@1.3.0",
8
+ "thumbgate@1.4.0",
9
9
  "thumbgate",
10
10
  "serve"
11
11
  ]
@@ -3,6 +3,7 @@
3
3
  const fs = require('node:fs');
4
4
  const path = require('node:path');
5
5
  const { spawnSync } = require('node:child_process');
6
+ const { ensureDir } = require('../../../scripts/fs-utils');
6
7
 
7
8
  function getPluginRoot() {
8
9
  return process.env.CLAUDE_PLUGIN_ROOT || path.resolve(__dirname, '..');
@@ -20,9 +21,6 @@ function getCodexBin() {
20
21
  return process.env.THUMBGATE_CODEX_BIN || 'codex';
21
22
  }
22
23
 
23
- function ensureDir(dirPath) {
24
- fs.mkdirSync(dirPath, { recursive: true });
25
- }
26
24
 
27
25
  function readJson(filePath) {
28
26
  return JSON.parse(fs.readFileSync(filePath, 'utf8'));
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-profile",
3
- "version": "1.3.0",
3
+ "version": "1.4.0",
4
4
  "description": "ThumbGate for Codex: pre-action gates, skill packs, hallucination detection, PII scanning, progressive disclosure (82% token savings), and MCP-backed reliability memory.",
5
5
  "author": {
6
6
  "name": "Igor Ganapolsky",
@@ -5,7 +5,7 @@
5
5
  "args": [
6
6
  "--yes",
7
7
  "--package",
8
- "thumbgate@1.3.0",
8
+ "thumbgate@1.4.0",
9
9
  "thumbgate",
10
10
  "serve"
11
11
  ]
@@ -1,6 +1,29 @@
1
1
  # ThumbGate for Codex
2
2
 
3
- ThumbGate now ships a repo-local Codex app plugin surface plus the version-pinned MCP profile. Use the plugin files when you want a distributable Codex artifact, or copy the TOML block for a manual install.
3
+ ThumbGate now ships a standalone Codex plugin bundle, a repo-local Codex app plugin surface, and the version-pinned MCP profile.
4
+
5
+ ## Option 1: Use the standalone release bundle
6
+
7
+ Download the latest bundle:
8
+
9
+ - `https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip`
10
+
11
+ Or build it from source:
12
+
13
+ ```bash
14
+ npm run build:codex-plugin
15
+ ```
16
+
17
+ After extracting `thumbgate-codex-plugin.zip`, the folder already contains:
18
+
19
+ - `.codex-plugin/plugin.json`
20
+ - `.mcp.json`
21
+ - `.agents/plugins/marketplace.json`
22
+ - `config.toml`
23
+
24
+ The bundled marketplace catalog points at `./`, so the extracted directory is a self-contained plugin root instead of a repo-relative stub.
25
+
26
+ ## Option 2: Use the repo-local plugin files
4
27
 
5
28
  ## Shipped plugin files
6
29
 
@@ -9,7 +32,7 @@ ThumbGate now ships a repo-local Codex app plugin surface plus the version-pinne
9
32
  - Codex marketplace entry: `.agents/plugins/marketplace.json`
10
33
  - Manual install profile: `adapters/codex/config.toml`
11
34
 
12
- ## One-Command Install
35
+ ## Option 3: Manual MCP install
13
36
 
14
37
  Add the MCP server block to your Codex config:
15
38
 
@@ -31,7 +54,7 @@ The following block is appended to `~/.codex/config.toml`:
31
54
  ```toml
32
55
  [mcp_servers.thumbgate]
33
56
  command = "npx"
34
- args = ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"]
57
+ args = ["--yes", "--package", "thumbgate@1.4.0", "thumbgate", "serve"]
35
58
  ```
36
59
 
37
60
  The repo-local Codex app plugin ships the same runtime path through `plugins/codex-profile/.mcp.json`, so the manual config and plugin metadata stay aligned.
@@ -59,7 +82,7 @@ Then restart Codex. The `thumbgate` MCP server will appear in the tool list.
59
82
 
60
83
  - Codex with MCP support
61
84
  - Node.js 18+ in PATH
62
- - Config file at `~/.codex/config.toml`
85
+ - Config file at `~/.codex/config.toml` when using the manual MCP install path
63
86
 
64
87
  ## Uninstall
65
88
 
@@ -1,12 +1,14 @@
1
1
  # ThumbGate for Codex
2
2
 
3
- This directory is the repo-local Codex app plugin surface for ThumbGate.
3
+ ThumbGate now ships a standalone Codex plugin bundle in GitHub Releases, alongside the repo-local Codex profile in this repository.
4
4
 
5
- It packages the same ThumbGate runtime you already use elsewhere:
5
+ ## Release surfaces
6
6
 
7
- - `plugins/codex-profile/.codex-plugin/plugin.json` for Codex plugin metadata
8
- - `plugins/codex-profile/.mcp.json` for the MCP server launcher
9
- - `adapters/codex/config.toml` for the version-pinned manual install path
7
+ - Latest standalone bundle: `https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-codex-plugin.zip`
8
+ - Versioned bundle pattern: `https://github.com/IgorGanapolsky/ThumbGate/releases/download/v<VERSION>/thumbgate-codex-plugin-v<VERSION>.zip`
9
+ - Source plugin manifest: `plugins/codex-profile/.codex-plugin/plugin.json`
10
+ - Source MCP config: `plugins/codex-profile/.mcp.json`
11
+ - Manual install profile: `adapters/codex/config.toml`
10
12
 
11
13
  ## What it does
12
14
 
@@ -14,11 +16,25 @@ It packages the same ThumbGate runtime you already use elsewhere:
14
16
  - captures thumbs-up/down feedback that survives session boundaries
15
17
  - reuses the same local-first MCP runtime as Claude, Cursor, Gemini, Amp, and OpenCode
16
18
 
19
+ ## What's inside the standalone bundle
20
+
21
+ - `.codex-plugin/plugin.json`
22
+ - `.mcp.json`
23
+ - `.agents/plugins/marketplace.json`
24
+ - `config.toml`
25
+ - `README.md`, `INSTALL.md`, and `AGENTS.md`
26
+
27
+ The bundled marketplace catalog rewrites the plugin path to `./`, so the extracted folder can act as a self-contained plugin root instead of depending on this repository layout.
28
+
17
29
  ## Install paths
18
30
 
19
- ### Codex app plugin
31
+ ### Standalone Codex plugin bundle
32
+
33
+ Download the latest `thumbgate-codex-plugin.zip`, unzip it, and point Codex at the extracted `thumbgate-codex-plugin/` directory when you want a standalone plugin release surface.
34
+
35
+ ### Repo-local Codex app plugin
20
36
 
21
- Use the repo-local Codex plugin metadata and MCP config in this folder when Codex is loading plugin surfaces from the repository.
37
+ Use the plugin metadata and MCP config in this folder when Codex is loading plugin surfaces directly from the repository.
22
38
 
23
39
  ### Manual install
24
40
 
@@ -29,9 +45,17 @@ That profile launches:
29
45
  ```toml
30
46
  [mcp_servers.thumbgate]
31
47
  command = "npx"
32
- args = ["--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"]
48
+ args = ["--yes", "--package", "thumbgate@1.4.0", "thumbgate", "serve"]
49
+ ```
50
+
51
+ ### Build from source
52
+
53
+ Build the same standalone release bundle locally with:
54
+
55
+ ```bash
56
+ npm run build:codex-plugin
33
57
  ```
34
58
 
35
59
  ## Why this exists
36
60
 
37
- The Codex support story is no longer just "copy this config block." This folder is the shipped Codex plugin artifact for ThumbGate, so the repo can truthfully claim a Codex app plugin surface alongside the Claude Desktop bundle and Cursor plugin.
61
+ The Codex support story is no longer just "copy this config block." ThumbGate now has a direct-download Codex plugin bundle, a repo-local plugin surface, and a pinned manual MCP profile so release assets, install docs, and the runtime stay aligned.
@@ -2,7 +2,7 @@
2
2
  "name": "thumbgate",
3
3
  "displayName": "ThumbGate",
4
4
  "description": "👍👎 Thumbs down a mistake — your AI agent won't repeat it. Thumbs up good work — it remembers the pattern.",
5
- "version": "1.3.0",
5
+ "version": "1.4.0",
6
6
  "author": {
7
7
  "name": "Igor Ganapolsky"
8
8
  },
@@ -25,7 +25,7 @@ The portable profile adds this MCP server entry:
25
25
  "mcp": {
26
26
  "thumbgate": {
27
27
  "type": "local",
28
- "command": ["npx", "--yes", "--package", "thumbgate@1.3.0", "thumbgate", "serve"],
28
+ "command": ["npx", "--yes", "--package", "thumbgate@1.4.0", "thumbgate", "serve"],
29
29
  "enabled": true
30
30
  }
31
31
  }
package/public/blog.html CHANGED
@@ -34,6 +34,12 @@
34
34
  "url": "https://thumbgate-production.up.railway.app/blog",
35
35
  "publisher": { "@type": "Organization", "name": "Max Smith KDP LLC" },
36
36
  "blogPost": [
37
+ {
38
+ "@type": "BlogPosting",
39
+ "headline": "Your AI agent is a supply chain attack surface. Here's how to gate it.",
40
+ "datePublished": "2026-04-10",
41
+ "keywords": "AI agent security, supply chain attack, pre-action gates, agent governance, ThumbGate"
42
+ },
37
43
  {
38
44
  "@type": "BlogPosting",
39
45
  "headline": "The Claude Code Leak Proves Why Pre-Action Gates Matter",
@@ -166,6 +172,73 @@
166
172
  </header>
167
173
 
168
174
  <div class="container">
175
+ <article class="post">
176
+ <div class="post-date">April 10, 2026</div>
177
+ <h2>Your AI agent is a supply chain attack surface. Here's how to gate it.</h2>
178
+
179
+ <p>
180
+ Your AI coding agent runs shell commands. It installs packages. It
181
+ modifies files, pushes commits, and calls external APIs &mdash; all
182
+ without requiring you to type a single character. That's the pitch.
183
+ That's also the attack surface.
184
+ </p>
185
+
186
+ <h3>The gap is pre-action enforcement</h3>
187
+ <p>
188
+ Static analysis catches known-bad patterns in code you've already
189
+ written. Dependency scanners audit lock files <em>after</em> packages
190
+ are installed. By the time your scanner flags a problem, the agent
191
+ already ran the command.
192
+ </p>
193
+ <p>
194
+ These tools operate on the <em>output</em> of agent actions. You need
195
+ something that operates on the <em>input</em> &mdash; before execution.
196
+ </p>
197
+
198
+ <h3>Pre-Action Gates via PreToolUse hooks</h3>
199
+ <p>
200
+ ThumbGate implements pre-action gates via <code>PreToolUse</code> hooks
201
+ &mdash; interception points that run before every tool invocation. No
202
+ action reaches execution without passing through the gate. Not Bash
203
+ commands, not file edits, not web fetches.
204
+ </p>
205
+ <p>
206
+ What makes this more than a static blocklist is the
207
+ <strong>feedback-to-enforcement pipeline</strong>. When something goes
208
+ wrong, you record a thumbs-down with context. That failure feeds a
209
+ promotion engine. One failure becomes a warning. Three confirmed
210
+ failures of the same pattern become a hard block.
211
+ </p>
212
+
213
+ <h3>Real examples</h3>
214
+ <ul>
215
+ <li>
216
+ <strong>Force-push to main</strong> &mdash; Gate fires, push never
217
+ happens. Agent is redirected to create a branch and open a PR.
218
+ </li>
219
+ <li>
220
+ <strong>Unknown dependency install</strong> &mdash; Flagged for human
221
+ review. Agent pauses until you approve.
222
+ </li>
223
+ <li>
224
+ <strong>Destructive shell command</strong> &mdash; Blocked by a
225
+ prevention rule learned from a prior incident.
226
+ </li>
227
+ </ul>
228
+
229
+ <h3>Five-minute setup</h3>
230
+ <p>
231
+ <code>npx thumbgate init</code> installs the PreToolUse hook and
232
+ generates a starter gate config. Gates are just JSON &mdash; commit
233
+ them, review them, share them across your team.
234
+ </p>
235
+ <p>
236
+ <strong>Human judgment leads. AI supports. ThumbGate enforces it.</strong>
237
+ </p>
238
+
239
+ <a class="cta" href="/guide">Full setup guide &rarr;</a>
240
+ </article>
241
+
169
242
  <article class="post">
170
243
  <div class="post-date">April 1, 2026</div>
171
244
  <h2>Dual-Signal Feedback: Why "What Failed" Isn't Enough</h2>
@@ -0,0 +1,189 @@
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 Memory for AI Agents</title>
7
+ <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
8
+ <meta name="description" content="Mem0 is memory. ThumbGate is memory plus enforcement. It captures thumbs-up/down feedback, promotes the signal into rules, and blocks repeat failures with pre-action gates.">
9
+ <meta name="keywords" content="ThumbGate vs Mem0, Mem0 alternative, AI agent memory enforcement, pre-action gates, feedback loop, AI coding agent guardrails">
10
+ <meta property="og:title" content="ThumbGate vs Mem0">
11
+ <meta property="og:description" content="Mem0 is memory. ThumbGate is memory plus enforcement. It captures thumbs-up/down feedback, promotes the signal into rules, and blocks repeat failures with pre-action gates.">
12
+ <meta property="og:type" content="article">
13
+ <meta property="og:url" content="https://thumbgate-production.up.railway.app/compare/mem0">
14
+ <link rel="canonical" href="https://thumbgate-production.up.railway.app/compare/mem0">
15
+ <link rel="llm-context" href="/public/llm-context.md" type="text/markdown">
16
+
17
+ <script type="application/ld+json">
18
+ {
19
+ "@context": "https://schema.org",
20
+ "@type": "TechArticle",
21
+ "headline": "ThumbGate vs Mem0 — Enforcement vs Memory for AI Agents",
22
+ "description": "Mem0 is memory. ThumbGate is memory plus enforcement. It captures thumbs-up/down feedback, promotes the signal into rules, and blocks repeat failures with pre-action gates.",
23
+ "author": {
24
+ "@type": "Person",
25
+ "name": "Igor Ganapolsky",
26
+ "url": "https://github.com/IgorGanapolsky"
27
+ },
28
+ "publisher": {
29
+ "@type": "Organization",
30
+ "name": "ThumbGate",
31
+ "url": "https://thumbgate-production.up.railway.app"
32
+ },
33
+ "datePublished": "2026-04-09",
34
+ "dateModified": "2026-04-09",
35
+ "mainEntityOfPage": "https://thumbgate-production.up.railway.app/compare/mem0",
36
+ "about": [
37
+ {"@type": "Thing", "name": "ThumbGate vs Mem0"},
38
+ {"@type": "Thing", "name": "AI agent memory enforcement"},
39
+ {"@type": "Thing", "name": "pre-action gates"}
40
+ ]
41
+ }
42
+ </script>
43
+
44
+ <script type="application/ld+json">
45
+ {
46
+ "@context": "https://schema.org",
47
+ "@type": "FAQPage",
48
+ "mainEntity": [
49
+ {
50
+ "@type": "Question",
51
+ "name": "Does ThumbGate still include memory?",
52
+ "acceptedAnswer": {
53
+ "@type": "Answer",
54
+ "text": "Yes. ThumbGate keeps local-first memory, ContextFS packs, lesson search, and recall, but adds pre-action enforcement when memory alone is insufficient."
55
+ }
56
+ },
57
+ {
58
+ "@type": "Question",
59
+ "name": "Why compare Mem0 at all?",
60
+ "acceptedAnswer": {
61
+ "@type": "Answer",
62
+ "text": "Because buyers often start with memory tooling and only later realize they also need enforcement. This page makes that upgrade path explicit."
63
+ }
64
+ },
65
+ {
66
+ "@type": "Question",
67
+ "name": "Is Mem0 bad?",
68
+ "acceptedAnswer": {
69
+ "@type": "Answer",
70
+ "text": "No. Mem0 is useful when you mainly need retrieval and cross-session context. ThumbGate is useful when retrieval alone is not enough and the system has to stop the same mistake before execution."
71
+ }
72
+ },
73
+ {
74
+ "@type": "Question",
75
+ "name": "Can I migrate from Mem0 to ThumbGate?",
76
+ "acceptedAnswer": {
77
+ "@type": "Answer",
78
+ "text": "ThumbGate does not require migrating away from Mem0. You can add ThumbGate as the enforcement layer while keeping any existing memory system for retrieval."
79
+ }
80
+ },
81
+ {
82
+ "@type": "Question",
83
+ "name": "Does ThumbGate require a cloud account?",
84
+ "acceptedAnswer": {
85
+ "@type": "Answer",
86
+ "text": "No. ThumbGate is local-first with SQLite+FTS5 storage. No cloud account, no API keys needed to capture feedback and enforce pre-action gates."
87
+ }
88
+ }
89
+ ]
90
+ }
91
+ </script>
92
+
93
+ <link rel="stylesheet" href="/learn/learn.css">
94
+ </head>
95
+ <body>
96
+
97
+ <nav>
98
+ <a href="/" class="brand">ThumbGate</a>
99
+ <a href="/guide">Setup Guide</a>
100
+ <a href="/learn">Learn</a>
101
+ <a href="/dashboard">Dashboard</a>
102
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
103
+ </nav>
104
+
105
+ <div class="container">
106
+ <div class="breadcrumb"><a href="/learn">Learn</a> / <a href="/compare/mem0">Compare</a> / ThumbGate vs Mem0</div>
107
+ <h1>ThumbGate vs Mem0</h1>
108
+ <p style="color:var(--muted);">3 min read &middot; Bottom-of-funnel comparison for buyers choosing between memory and enforcement</p>
109
+
110
+ <div class="tldr"><strong>TL;DR:</strong> Mem0 is memory. ThumbGate is memory plus enforcement. It captures thumbs-up/down feedback, promotes the signal into rules, and blocks repeat failures with pre-action gates.</div>
111
+
112
+ <h2>Where Mem0 fits</h2>
113
+ <p>Mem0 is designed as a cloud memory layer. It helps the model remember context and past interactions, but memory alone does not guarantee that the next action is safe.</p>
114
+
115
+ <h2>Where ThumbGate fits</h2>
116
+ <p>ThumbGate begins with the same need to remember, but it goes further. A thumbs down can become a prevention rule, and that rule can become a pre-action gate that blocks a repeated tool call.</p>
117
+ <ul>
118
+ <li>Thumbs up reinforces good behavior.</li>
119
+ <li>Thumbs down blocks repeated mistakes.</li>
120
+ <li>Verification evidence and automation reports back up the reliability claim.</li>
121
+ </ul>
122
+
123
+ <table style="width:100%;border-collapse:collapse;margin:1.5rem 0;">
124
+ <thead>
125
+ <tr style="border-bottom:2px solid var(--border, #333);">
126
+ <th style="text-align:left;padding:8px;">Capability</th>
127
+ <th style="text-align:center;padding:8px;">ThumbGate</th>
128
+ <th style="text-align:center;padding:8px;">Mem0</th>
129
+ </tr>
130
+ </thead>
131
+ <tbody>
132
+ <tr><td style="padding:8px;">Cross-session memory</td><td style="text-align:center;">Yes (local-first)</td><td style="text-align:center;">Yes (cloud)</td></tr>
133
+ <tr><td style="padding:8px;">Pre-action gate enforcement</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
134
+ <tr><td style="padding:8px;">Thumbs-up/down feedback</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
135
+ <tr><td style="padding:8px;">Prevention rule generation</td><td style="text-align:center;">Automatic</td><td style="text-align:center;">No</td></tr>
136
+ <tr><td style="padding:8px;">Multi-agent support</td><td style="text-align:center;">6 agents</td><td style="text-align:center;">API-based</td></tr>
137
+ <tr><td style="padding:8px;">Local-first / no cloud required</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
138
+ <tr><td style="padding:8px;">Thompson Sampling scoring</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
139
+ <tr><td style="padding:8px;">Verification evidence</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
140
+ </tbody>
141
+ </table>
142
+
143
+ <div class="callout">
144
+ <strong>The upgrade path:</strong> Buyers often start with memory tooling and only later realize they also need enforcement. ThumbGate makes that upgrade path explicit: keep memory, add gates.
145
+ </div>
146
+
147
+ <h2>Install ThumbGate</h2>
148
+ <pre><code>npx thumbgate init --agent claude-code</code></pre>
149
+ <p>Works with Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode.</p>
150
+
151
+ <h2>Frequently Asked Questions</h2>
152
+ <h3>Does ThumbGate still include memory?</h3>
153
+ <p>Yes. ThumbGate keeps local-first memory, ContextFS packs, lesson search, and recall, but adds pre-action enforcement when memory alone is insufficient.</p>
154
+
155
+ <h3>Why compare Mem0 at all?</h3>
156
+ <p>Because buyers often start with memory tooling and only later realize they also need enforcement. This page makes that upgrade path explicit.</p>
157
+
158
+ <h3>Is Mem0 bad?</h3>
159
+ <p>No. Mem0 is useful when you mainly need retrieval and cross-session context. ThumbGate is useful when retrieval alone is not enough and the system has to stop the same mistake before execution.</p>
160
+
161
+ <h3>Can I migrate from Mem0 to ThumbGate?</h3>
162
+ <p>ThumbGate does not require migrating away from Mem0. You can add ThumbGate as the enforcement layer while keeping any existing memory system for retrieval.</p>
163
+
164
+ <h3>Does ThumbGate require a cloud account?</h3>
165
+ <p>No. ThumbGate is local-first with SQLite+FTS5 storage. No cloud account, no API keys needed to capture feedback and enforce pre-action gates.</p>
166
+
167
+ <div class="cta-box">
168
+ <h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Pro for operators, Team for governance</h2>
169
+ <p>Start free with local gates. Pro is $19/mo or $149/yr for the personal dashboard and exports. Team rollout anchors at $99/seat/mo when shared lessons and org visibility matter.</p>
170
+ <div class="cta-install">$ npx thumbgate init</div>
171
+ <p style="margin-top:8px;"><a href="/pro">See Pro and Team pricing &rarr;</a></p>
172
+ </div>
173
+
174
+ <div class="related">
175
+ <h3>Related</h3>
176
+ <a href="/compare/speclock">ThumbGate vs SpecLock &rarr;</a>
177
+ <a href="/guides/claude-code-prevent-repeated-mistakes">Claude Code Feedback Memory &rarr;</a>
178
+ <a href="/guides/pre-action-gates">What Are Pre-Action Gates? &rarr;</a>
179
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
180
+ </div>
181
+ </div>
182
+
183
+ <div class="sticky-cta">
184
+ <span style="color:var(--muted)">Try it now:</span>
185
+ <code>npx thumbgate init</code>
186
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
187
+ </div>
188
+ </body>
189
+ </html>
@@ -0,0 +1,180 @@
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 SpecLock | Thumbs Feedback vs Manual Specs</title>
7
+ <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
8
+ <meta name="description" content="SpecLock starts from manually written constraints. ThumbGate starts from thumbs-up/down feedback and turns it into pre-action gates that block repeated mistakes.">
9
+ <meta name="keywords" content="ThumbGate vs SpecLock, SpecLock alternative, AI agent guardrails comparison, pre-action gates, feedback enforcement">
10
+ <meta property="og:title" content="ThumbGate vs SpecLock">
11
+ <meta property="og:description" content="SpecLock starts from manually written constraints. ThumbGate starts from thumbs-up/down feedback and turns it into pre-action gates that block repeated mistakes.">
12
+ <meta property="og:type" content="article">
13
+ <meta property="og:url" content="https://thumbgate-production.up.railway.app/compare/speclock">
14
+ <link rel="canonical" href="https://thumbgate-production.up.railway.app/compare/speclock">
15
+ <link rel="llm-context" href="/public/llm-context.md" type="text/markdown">
16
+
17
+ <script type="application/ld+json">
18
+ {
19
+ "@context": "https://schema.org",
20
+ "@type": "TechArticle",
21
+ "headline": "ThumbGate vs SpecLock — Thumbs Feedback vs Manual Specs",
22
+ "description": "SpecLock starts from manually written constraints. ThumbGate starts from thumbs-up/down feedback and turns it into pre-action gates that block repeated mistakes.",
23
+ "author": {
24
+ "@type": "Person",
25
+ "name": "Igor Ganapolsky",
26
+ "url": "https://github.com/IgorGanapolsky"
27
+ },
28
+ "publisher": {
29
+ "@type": "Organization",
30
+ "name": "ThumbGate",
31
+ "url": "https://thumbgate-production.up.railway.app"
32
+ },
33
+ "datePublished": "2026-04-09",
34
+ "dateModified": "2026-04-09",
35
+ "mainEntityOfPage": "https://thumbgate-production.up.railway.app/compare/speclock",
36
+ "about": [
37
+ {"@type": "Thing", "name": "ThumbGate vs SpecLock"},
38
+ {"@type": "Thing", "name": "AI agent guardrails comparison"},
39
+ {"@type": "Thing", "name": "pre-action gates"}
40
+ ]
41
+ }
42
+ </script>
43
+
44
+ <script type="application/ld+json">
45
+ {
46
+ "@context": "https://schema.org",
47
+ "@type": "FAQPage",
48
+ "mainEntity": [
49
+ {
50
+ "@type": "Question",
51
+ "name": "Is ThumbGate trying to replace specs?",
52
+ "acceptedAnswer": {
53
+ "@type": "Answer",
54
+ "text": "No. ThumbGate complements specs by capturing thumbs-up/down feedback from live agent behavior and enforcing the learned rules as pre-action gates."
55
+ }
56
+ },
57
+ {
58
+ "@type": "Question",
59
+ "name": "What does ThumbGate do that SpecLock does not?",
60
+ "acceptedAnswer": {
61
+ "@type": "Answer",
62
+ "text": "ThumbGate turns explicit feedback into searchable memory, auto-generated prevention rules, and runtime gates that block repeated mistakes before the next tool call executes."
63
+ }
64
+ },
65
+ {
66
+ "@type": "Question",
67
+ "name": "Can I use ThumbGate and SpecLock together?",
68
+ "acceptedAnswer": {
69
+ "@type": "Answer",
70
+ "text": "Yes. SpecLock can handle upfront spec enforcement while ThumbGate handles the emergent failures that specs did not anticipate, using thumbs-up/down feedback to learn and enforce new rules."
71
+ }
72
+ },
73
+ {
74
+ "@type": "Question",
75
+ "name": "Which tool is better for fast-moving teams?",
76
+ "acceptedAnswer": {
77
+ "@type": "Answer",
78
+ "text": "ThumbGate is better for fast-moving agent workflows where the problem is not writing more specs, but preventing the same mistake from happening again tomorrow."
79
+ }
80
+ }
81
+ ]
82
+ }
83
+ </script>
84
+
85
+ <link rel="stylesheet" href="/learn/learn.css">
86
+ </head>
87
+ <body>
88
+
89
+ <nav>
90
+ <a href="/" class="brand">ThumbGate</a>
91
+ <a href="/guide">Setup Guide</a>
92
+ <a href="/learn">Learn</a>
93
+ <a href="/dashboard">Dashboard</a>
94
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
95
+ </nav>
96
+
97
+ <div class="container">
98
+ <div class="breadcrumb"><a href="/learn">Learn</a> / <a href="/compare/speclock">Compare</a> / ThumbGate vs SpecLock</div>
99
+ <h1>ThumbGate vs SpecLock</h1>
100
+ <p style="color:var(--muted);">3 min read &middot; Bottom-of-funnel comparison for buyers choosing between feedback enforcement and manual specs</p>
101
+
102
+ <div class="tldr"><strong>TL;DR:</strong> SpecLock starts from manually written constraints. ThumbGate starts from thumbs-up/down feedback and turns it into pre-action gates that block repeated mistakes.</div>
103
+
104
+ <h2>The product difference in one sentence</h2>
105
+ <p>SpecLock helps a team codify rules before the work begins. ThumbGate helps a team convert real thumbs-up/down feedback into live pre-action gates after the work reveals what actually breaks.</p>
106
+ <p>That means ThumbGate is better for fast-moving agent workflows where the problem is not writing more specs, but preventing the same mistake from happening again tomorrow.</p>
107
+
108
+ <table style="width:100%;border-collapse:collapse;margin:1.5rem 0;">
109
+ <thead>
110
+ <tr style="border-bottom:2px solid var(--border, #333);">
111
+ <th style="text-align:left;padding:8px;">Capability</th>
112
+ <th style="text-align:center;padding:8px;">ThumbGate</th>
113
+ <th style="text-align:center;padding:8px;">SpecLock</th>
114
+ </tr>
115
+ </thead>
116
+ <tbody>
117
+ <tr><td style="padding:8px;">Feedback-driven learning</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
118
+ <tr><td style="padding:8px;">Pre-action gate enforcement</td><td style="text-align:center;">Yes</td><td style="text-align:center;">Spec-based only</td></tr>
119
+ <tr><td style="padding:8px;">Thumbs-up/down capture</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
120
+ <tr><td style="padding:8px;">Multi-agent support</td><td style="text-align:center;">6 agents</td><td style="text-align:center;">Varies</td></tr>
121
+ <tr><td style="padding:8px;">Requires upfront spec writing</td><td style="text-align:center;">No</td><td style="text-align:center;">Yes</td></tr>
122
+ <tr><td style="padding:8px;">Thompson Sampling scoring</td><td style="text-align:center;">Yes</td><td style="text-align:center;">No</td></tr>
123
+ <tr><td style="padding:8px;">Verification evidence</td><td style="text-align:center;">Yes</td><td style="text-align:center;">Varies</td></tr>
124
+ </tbody>
125
+ </table>
126
+
127
+ <h2>Choose ThumbGate when</h2>
128
+ <ul>
129
+ <li>Your agent already repeats known mistakes and you need the block to happen before tool execution.</li>
130
+ <li>You want one feedback loop that supports both reinforcement from thumbs up and prevention from thumbs down.</li>
131
+ <li>You need proof assets, automation reports, and compatibility across multiple coding agents.</li>
132
+ </ul>
133
+
134
+ <h2>Choose SpecLock when</h2>
135
+ <ul>
136
+ <li>Your team already maintains strong PRDs or system specs and wants the model constrained against those artifacts.</li>
137
+ <li>Your primary problem is uncontrolled file edits, not a missing feedback-to-enforcement loop.</li>
138
+ <li>You are willing to invest in manual constraint authoring as part of the workflow.</li>
139
+ </ul>
140
+
141
+ <h2>Install ThumbGate</h2>
142
+ <pre><code>npx thumbgate init --agent claude-code</code></pre>
143
+ <p>Works with Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode.</p>
144
+
145
+ <h2>Frequently Asked Questions</h2>
146
+ <h3>Is ThumbGate trying to replace specs?</h3>
147
+ <p>No. ThumbGate complements specs by capturing thumbs-up/down feedback from live agent behavior and enforcing the learned rules as pre-action gates.</p>
148
+
149
+ <h3>What does ThumbGate do that SpecLock does not?</h3>
150
+ <p>ThumbGate turns explicit feedback into searchable memory, auto-generated prevention rules, and runtime gates that block repeated mistakes before the next tool call executes.</p>
151
+
152
+ <h3>Can I use ThumbGate and SpecLock together?</h3>
153
+ <p>Yes. SpecLock can handle upfront spec enforcement while ThumbGate handles the emergent failures that specs did not anticipate, using thumbs-up/down feedback to learn and enforce new rules.</p>
154
+
155
+ <h3>Which tool is better for fast-moving teams?</h3>
156
+ <p>ThumbGate is better for fast-moving agent workflows where the problem is not writing more specs, but preventing the same mistake from happening again tomorrow.</p>
157
+
158
+ <div class="cta-box">
159
+ <h2 style="color:var(--text);font-size:1.3rem;margin:0 0 8px;">Pro for operators, Team for governance</h2>
160
+ <p>Start free with local gates. Pro is $19/mo or $149/yr for the personal dashboard and exports. Team rollout anchors at $99/seat/mo when shared lessons and org visibility matter.</p>
161
+ <div class="cta-install">$ npx thumbgate init</div>
162
+ <p style="margin-top:8px;"><a href="/pro">See Pro and Team pricing &rarr;</a></p>
163
+ </div>
164
+
165
+ <div class="related">
166
+ <h3>Related</h3>
167
+ <a href="/compare/mem0">ThumbGate vs Mem0 &rarr;</a>
168
+ <a href="/guides/pre-action-gates">What Are Pre-Action Gates? &rarr;</a>
169
+ <a href="/guides/stop-repeated-ai-agent-mistakes">Stop Repeated AI Agent Mistakes &rarr;</a>
170
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
171
+ </div>
172
+ </div>
173
+
174
+ <div class="sticky-cta">
175
+ <span style="color:var(--muted)">Try it now:</span>
176
+ <code>npx thumbgate init</code>
177
+ <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub &rarr;</a>
178
+ </div>
179
+ </body>
180
+ </html>