thumbgate 1.27.18 → 1.27.20

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 (170) hide show
  1. package/.claude/commands/dashboard.md +15 -0
  2. package/.claude/commands/thumbgate-blocked.md +27 -0
  3. package/.claude/commands/thumbgate-dashboard.md +15 -0
  4. package/.claude/commands/thumbgate-doctor.md +30 -0
  5. package/.claude/commands/thumbgate-guard.md +36 -0
  6. package/.claude/commands/thumbgate-protect.md +30 -0
  7. package/.claude/commands/thumbgate-rules.md +30 -0
  8. package/.claude-plugin/plugin.json +4 -3
  9. package/.well-known/agentic-verify.txt +1 -0
  10. package/.well-known/llms.txt +33 -12
  11. package/.well-known/mcp/server-card.json +8 -8
  12. package/README.md +246 -30
  13. package/adapters/claude/.mcp.json +2 -2
  14. package/adapters/codex/config.toml +2 -2
  15. package/adapters/gcp/dfcx-webhook-gate.js +295 -0
  16. package/adapters/gemini/function-declarations.json +1 -0
  17. package/adapters/letta/README.md +41 -0
  18. package/adapters/letta/thumbgate-letta-adapter.js +133 -0
  19. package/adapters/mcp/server-stdio.js +263 -11
  20. package/adapters/opencode/opencode.json +1 -1
  21. package/adapters/policy-engine/ethicore-guardian-client.js +68 -0
  22. package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +260 -0
  23. package/bench/observability-eval-suite.json +26 -0
  24. package/bench/thumbgate-bench.json +2 -2
  25. package/bin/cli.js +1456 -122
  26. package/bin/dashboard-cli.js +7 -0
  27. package/bin/postinstall.js +11 -27
  28. package/commands/dashboard.md +15 -0
  29. package/commands/thumbgate-dashboard.md +15 -0
  30. package/config/gate-classifier-routing.json +98 -0
  31. package/config/gate-templates.json +216 -0
  32. package/config/gates/claim-verification.json +12 -0
  33. package/config/gates/default.json +31 -2
  34. package/config/github-about.json +2 -2
  35. package/config/mcp-allowlists.json +23 -13
  36. package/config/merge-quality-checks.json +0 -1
  37. package/config/model-candidates.json +121 -6
  38. package/config/post-deploy-marketing-pages.json +80 -0
  39. package/config/tessl-tiles.json +1 -3
  40. package/openapi/openapi.yaml +12 -0
  41. package/package.json +225 -100
  42. package/public/about.html +162 -0
  43. package/public/agent-manager.html +179 -0
  44. package/public/agents-cost-savings.html +153 -0
  45. package/public/ai-malpractice-prevention.html +818 -0
  46. package/public/assets/brand/github-social-preview.png +0 -0
  47. package/public/assets/brand/thumbgate-icon-512.png +0 -0
  48. package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
  49. package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
  50. package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
  51. package/public/assets/brand/thumbgate-logo-transparent.svg +28 -0
  52. package/public/assets/brand/thumbgate-mark-inline-v3.svg +18 -0
  53. package/public/assets/brand/thumbgate-mark-pro.svg +23 -0
  54. package/public/assets/brand/thumbgate-mark-team.svg +26 -0
  55. package/public/assets/brand/thumbgate-mark.svg +21 -0
  56. package/public/assets/brand/thumbgate-wordmark.svg +20 -0
  57. package/public/assets/claude-thumbgate-statusbar.svg +8 -0
  58. package/public/assets/codex-thumbgate-statusbar-test.svg +9 -0
  59. package/public/assets/legal-intake-control-flow.svg +66 -0
  60. package/public/blog.html +4 -4
  61. package/public/brand/thumbgate-mark.svg +19 -0
  62. package/public/brand/thumbgate-og.svg +16 -0
  63. package/public/chatgpt-app.html +330 -0
  64. package/public/codex-enterprise.html +123 -0
  65. package/public/codex-plugin.html +72 -20
  66. package/public/compare.html +31 -8
  67. package/public/dashboard.html +930 -166
  68. package/public/diagnostic.html +345 -0
  69. package/public/federal.html +2 -2
  70. package/public/guide.html +33 -13
  71. package/public/index.html +469 -111
  72. package/public/install.html +193 -0
  73. package/public/js/buyer-intent.js +672 -0
  74. package/public/learn.html +183 -18
  75. package/public/lessons.html +168 -10
  76. package/public/numbers.html +7 -7
  77. package/public/pricing.html +399 -0
  78. package/public/pro.html +34 -11
  79. package/scripts/action-receipts.js +324 -0
  80. package/scripts/activation-quickstart.js +187 -0
  81. package/scripts/agent-memory-lifecycle.js +211 -0
  82. package/scripts/agent-operations-planner.js +621 -0
  83. package/scripts/agent-readiness.js +20 -3
  84. package/scripts/agent-reward-model.js +53 -1
  85. package/scripts/ai-component-inventory.js +367 -0
  86. package/scripts/async-eval-observability.js +236 -0
  87. package/scripts/audit.js +65 -0
  88. package/scripts/auto-promote-gates.js +82 -10
  89. package/scripts/auto-wire-hooks.js +14 -0
  90. package/scripts/aws-blocks-guardrails.js +272 -0
  91. package/scripts/billing.js +93 -1
  92. package/scripts/bot-detection.js +61 -3
  93. package/scripts/build-metadata.js +50 -10
  94. package/scripts/classifier-routing.js +130 -0
  95. package/scripts/cli-feedback.js +4 -2
  96. package/scripts/cli-schema.js +97 -0
  97. package/scripts/cli-telemetry.js +6 -1
  98. package/scripts/commercial-offer.js +82 -2
  99. package/scripts/context-manager.js +74 -6
  100. package/scripts/dashboard-chat.js +332 -0
  101. package/scripts/dashboard.js +68 -2
  102. package/scripts/export-databricks-bundle.js +5 -1
  103. package/scripts/export-dpo-pairs.js +7 -2
  104. package/scripts/feedback-aggregate.js +281 -0
  105. package/scripts/feedback-loop.js +123 -1
  106. package/scripts/feedback-quality.js +87 -0
  107. package/scripts/feedback-sanitizer.js +105 -0
  108. package/scripts/filesystem-search.js +35 -10
  109. package/scripts/gate-stats.js +89 -0
  110. package/scripts/gates-engine.js +1176 -85
  111. package/scripts/gemini-embedding-policy.js +2 -1
  112. package/scripts/hook-runtime.js +20 -14
  113. package/scripts/hook-stop-anti-claim.js +301 -0
  114. package/scripts/hook-thumbgate-cache-updater.js +18 -2
  115. package/scripts/hybrid-feedback-context.js +142 -7
  116. package/scripts/install-shim.js +87 -0
  117. package/scripts/lesson-inference.js +8 -3
  118. package/scripts/lesson-search.js +17 -1
  119. package/scripts/license.js +10 -10
  120. package/scripts/llm-client.js +169 -4
  121. package/scripts/local-model-profile.js +15 -8
  122. package/scripts/mcp-config.js +7 -1
  123. package/scripts/mcp-oauth.js +293 -0
  124. package/scripts/memory-scope-readiness.js +159 -0
  125. package/scripts/meta-agent-loop.js +36 -0
  126. package/scripts/noop-detect.js +285 -0
  127. package/scripts/operational-integrity.js +39 -5
  128. package/scripts/oss-pr-opportunity-scout.js +35 -5
  129. package/scripts/parallel-workflow-orchestrator.js +293 -0
  130. package/scripts/plan-gate.js +243 -0
  131. package/scripts/plausible-domain-config.js +99 -0
  132. package/scripts/plausible-server-events.js +9 -6
  133. package/scripts/pro-local-dashboard.js +4 -4
  134. package/scripts/proxy-pointer-rag-guardrails.js +42 -1
  135. package/scripts/published-cli.js +0 -8
  136. package/scripts/qa-scenario-planner.js +136 -0
  137. package/scripts/rate-limiter.js +64 -13
  138. package/scripts/repeat-metric.js +137 -0
  139. package/scripts/secret-fixture-tokens.js +61 -0
  140. package/scripts/secret-redaction.js +166 -0
  141. package/scripts/secret-scanner.js +44 -5
  142. package/scripts/security-scanner.js +260 -10
  143. package/scripts/self-distill-agent.js +3 -1
  144. package/scripts/self-harness-optimizer.js +141 -0
  145. package/scripts/self-healing-check.js +193 -0
  146. package/scripts/self-protection.js +90 -0
  147. package/scripts/seo-gsd.js +916 -7
  148. package/scripts/silent-failure-cluster.js +531 -0
  149. package/scripts/statusline-cache-path.js +17 -2
  150. package/scripts/statusline-cache-read.js +57 -0
  151. package/scripts/statusline-local-stats.js +9 -1
  152. package/scripts/statusline-meta.js +28 -2
  153. package/scripts/statusline.sh +20 -4
  154. package/scripts/sync-telemetry-from-prod.js +374 -0
  155. package/scripts/telemetry-analytics.js +357 -0
  156. package/scripts/thompson-sampling.js +31 -10
  157. package/scripts/thumbgate-bench.js +16 -1
  158. package/scripts/thumbgate-search.js +85 -19
  159. package/scripts/tool-contract-validator.js +76 -0
  160. package/scripts/tool-registry.js +169 -1
  161. package/scripts/trajectory-scorer.js +63 -0
  162. package/scripts/vector-store.js +45 -0
  163. package/scripts/verify-marketing-pages-deployed.js +212 -0
  164. package/scripts/visitor-journey.js +172 -0
  165. package/scripts/workflow-sentinel.js +286 -53
  166. package/scripts/workspace-evolver.js +62 -2
  167. package/src/api/server.js +2683 -319
  168. package/.claude-plugin/marketplace.json +0 -85
  169. package/adapters/chatgpt/openapi.yaml +0 -1695
  170. package/scripts/bot-detector.js +0 -50
package/public/index.html CHANGED
@@ -11,20 +11,23 @@ __GOOGLE_SITE_VERIFICATION_META__
11
11
  <link rel="alternate icon" type="image/svg+xml" href="/assets/brand/thumbgate-mark.svg">
12
12
  <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
13
13
  <meta property="og:image" content="/og.png">
14
- <title>ThumbGate — Stop paying for the same AI mistake twice</title>
15
- <meta name="description" content="Stop paying for the same AI mistake twice. ThumbGate is machine-speed pre-action defense for AI coding agents and vibe coding workflows: 👍 thumbs up and 👎 thumbs down become history-aware lessons, shared lessons and org visibility, actionable remediations, agent surface inventory, and Pre-Action Checks that block repeat mistakes before the next tool call across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.">
14
+ <title>ThumbGate — Pre-action checks for AI coding agents</title>
15
+ <meta name="description" content="Stripe Connect integration engineering for ticketing and marketplace platforms — Pretix plugin shipped to Hilltown Media. ThumbGate is also the pre-action governance runtime for AI coding agents (Claude Code, Cursor, Codex, Gemini CLI): 👍 thumbs up and 👎 thumbs down feedback become history-aware lessons, shared lessons and org visibility, and PreToolUse checks that block repeated mistakes before code, money, or customer systems change. Perfect for vibe coding and human-in-the-loop workflows.">
16
16
  <meta property="og:title" content="ThumbGate — Stop paying for the same AI mistake twice">
17
17
  <meta property="og:description" content="Frontier LLMs are expensive, opaque, and unreliable in production. ThumbGate gates risky agent actions before they run: workflow shape, inspection evidence, token budget, and repeated-failure memory in one pre-action check.">
18
18
  <meta property="og:type" content="website">
19
- <meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
19
+ <meta property="og:url" content="__APP_ORIGIN__/">
20
+ <meta property="og:image" content="https://thumbgate.ai/og.png">
20
21
  <meta name="twitter:card" content="summary_large_image">
21
- <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
22
- <meta name="thumbgate-version" content="1.20.0">
23
- <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
22
+ <meta name="twitter:image" content="https://thumbgate.ai/og.png">
23
+ <meta name="thumbgate-version" content="1.27.20">
24
+ <meta name="keywords" content="ThumbGate, thumbgate, AI agent orchestration, AI experience orchestration, agentic development cycle, AC/DC framework, Guide Generate Verify Solve, agent enforcement layer, save LLM tokens, reduce Claude API cost, reduce OpenAI cost, AI agent token savings, prevent LLM retries, prevent hallucination retries, stop AI token waste, pre-action checks, agent governance, Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, workflow hardening, context engineering, AI authenticity, brand authenticity AI">
25
+ <link rel="canonical" href="__APP_ORIGIN__/">
26
+ <link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="__APP_ORIGIN__/llm-context.md">
24
27
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
25
28
 
26
29
  <!-- Privacy-friendly analytics by Plausible -->
27
- <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
30
+ <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.tagged-events.js"></script>
28
31
  __GA_BOOTSTRAP__
29
32
 
30
33
  <script>
@@ -36,14 +39,41 @@ __GA_BOOTSTRAP__
36
39
  const proPriceDollars = Number('__PRO_PRICE_DOLLARS__') || 19;
37
40
  </script>
38
41
 
42
+ <script type="application/ld+json">
43
+ {
44
+ "@context": "https://schema.org",
45
+ "@type": "Person",
46
+ "name": "Igor Ganapolsky",
47
+ "url": "https://github.com/IgorGanapolsky",
48
+ "jobTitle": "Senior Mobile & AI Engineer; Stripe Connect specialist",
49
+ "worksFor": {
50
+ "@type": "Organization",
51
+ "name": "ThumbGate",
52
+ "url": "https://thumbgate.ai"
53
+ },
54
+ "knowsAbout": [
55
+ "Stripe Connect",
56
+ "Pretix plugin engineering",
57
+ "Marketplace payments architecture",
58
+ "AI agent governance",
59
+ "Pre-action checks for AI coding agents"
60
+ ],
61
+ "sameAs": [
62
+ "https://github.com/IgorGanapolsky",
63
+ "https://www.npmjs.com/package/thumbgate"
64
+ ],
65
+ "mainEntityOfPage": "https://thumbgate.ai/learn/pretix-stripe-connect-marketplaces"
66
+ }
67
+ </script>
68
+
39
69
  <script type="application/ld+json">
40
70
  {
41
71
  "@context": "https://schema.org",
42
72
  "@type": "Organization",
43
73
  "name": "ThumbGate",
44
74
  "alternateName": "thumbgate",
45
- "url": "https://thumbgate-production.up.railway.app",
46
- "logo": "https://thumbgate-production.up.railway.app/assets/brand/thumbgate-logo-1200x360.png",
75
+ "url": "https://thumbgate.ai",
76
+ "logo": "https://thumbgate.ai/assets/brand/thumbgate-logo-1200x360.png",
47
77
  "description": "ThumbGate ships pre-action gates for AI coding agents. Open-source CLI plus PreToolUse hooks that capture feedback, promote it to memory, generate prevention rules, and block repeated mistakes before the next tool call across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode.",
48
78
  "founder": {
49
79
  "@type": "Person",
@@ -86,6 +116,7 @@ __GA_BOOTSTRAP__
86
116
  "ThumbGate GPT for ChatGPT — preflight risky commands, refunds, deploys, and PR actions, capture typed thumbs-up/down lessons, and route users into local enforcement",
87
117
  "Workflow Sentinel — score blast radius before PR, merge, release, and publish actions fire",
88
118
  "Workflow architecture checks — distinguish predefined workflows, parallel fan-out, and open-ended agents before execution",
119
+ "Agentic development cycle control — maps Guide, Generate, Verify, and Solve into enforceable pre-action gates before risky tool calls execute",
89
120
  "Environment inspection evidence — require read-before-write, screenshots, API response checks, tests, or output validation for open-ended agent loops",
90
121
  "Parallel branch budgets — prevent agent desktops and fan-out workflows from silently multiplying token spend",
91
122
  "Docker Sandboxes routing — move high-risk local runs into isolated microVM-backed execution",
@@ -112,11 +143,10 @@ __GA_BOOTSTRAP__
112
143
  },
113
144
  {
114
145
  "@type": "Offer",
115
- "name": "Team",
116
- "price": "49",
146
+ "name": "Enterprise",
117
147
  "priceCurrency": "USD",
118
- "description": "Intake-led team rollout with a workflow hardening sprint, shared enforcement memory, org dashboard visibility, approval boundaries, release confidence, Docker Sandboxes guidance for risky local autonomy, and pilot support for teams shipping AI-generated changes",
119
- "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
148
+ "description": "Contact-sales tier with custom pricing scoped after intake: a workflow hardening sprint, shared hosted lesson database, org dashboard visibility, shared enforcement, approval boundaries, audit-grade decision trail, regulatory gate templates, Docker Sandboxes guidance for risky local autonomy, and dedicated onboarding for teams shipping AI-generated changes",
149
+ "url": "https://thumbgate.ai/#workflow-sprint-intake"
120
150
  },
121
151
  {
122
152
  "@type": "Offer",
@@ -124,7 +154,7 @@ __GA_BOOTSTRAP__
124
154
  "price": "19",
125
155
  "priceCurrency": "USD",
126
156
  "description": "Self-serve side lane for solo operators who want personal enforcement proof, a local dashboard, DPO export, team lesson export/import, and proof-ready exports",
127
- "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F"
157
+ "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F"
128
158
  },
129
159
  {
130
160
  "@type": "Offer",
@@ -132,7 +162,7 @@ __GA_BOOTSTRAP__
132
162
  "price": "149",
133
163
  "priceCurrency": "USD",
134
164
  "description": "Annual Pro for individual operators who want personal enforcement proof, the local dashboard, and proof-ready exports",
135
- "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2F"
165
+ "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2F"
136
166
  }
137
167
  ],
138
168
  "potentialAction": [
@@ -141,7 +171,7 @@ __GA_BOOTSTRAP__
141
171
  "name": "Install ThumbGate Free",
142
172
  "target": {
143
173
  "@type": "EntryPoint",
144
- "urlTemplate": "https://thumbgate-production.up.railway.app/guide",
174
+ "urlTemplate": "https://thumbgate.ai/guide",
145
175
  "actionPlatform": [
146
176
  "https://schema.org/DesktopWebPlatform"
147
177
  ]
@@ -152,7 +182,7 @@ __GA_BOOTSTRAP__
152
182
  "name": "Start ThumbGate Pro",
153
183
  "target": {
154
184
  "@type": "EntryPoint",
155
- "urlTemplate": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F",
185
+ "urlTemplate": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F",
156
186
  "actionPlatform": [
157
187
  "https://schema.org/DesktopWebPlatform"
158
188
  ]
@@ -162,7 +192,7 @@ __GA_BOOTSTRAP__
162
192
  "name": "Pro Monthly",
163
193
  "price": "19",
164
194
  "priceCurrency": "USD",
165
- "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F"
195
+ "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F"
166
196
  }
167
197
  },
168
198
  {
@@ -170,7 +200,7 @@ __GA_BOOTSTRAP__
170
200
  "name": "Start Workflow Hardening Sprint intake",
171
201
  "target": {
172
202
  "@type": "EntryPoint",
173
- "urlTemplate": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
203
+ "urlTemplate": "https://thumbgate.ai/#workflow-sprint-intake",
174
204
  "actionPlatform": [
175
205
  "https://schema.org/DesktopWebPlatform"
176
206
  ]
@@ -189,21 +219,21 @@ __GA_BOOTSTRAP__
189
219
  "provider": {
190
220
  "@type": "Organization",
191
221
  "name": "ThumbGate",
192
- "url": "https://thumbgate-production.up.railway.app"
222
+ "url": "https://thumbgate.ai"
193
223
  },
194
- "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
224
+ "url": "https://thumbgate.ai/#workflow-sprint-intake",
195
225
  "description": "Founder-led workflow hardening for one AI-agent workflow that needs approval boundaries, rollback safety, and rollout proof before wider team rollout.",
196
226
  "offers": {
197
227
  "@type": "Offer",
198
228
  "name": "Workflow Hardening Sprint intake",
199
- "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
229
+ "url": "https://thumbgate.ai/#workflow-sprint-intake"
200
230
  },
201
231
  "potentialAction": {
202
232
  "@type": "CommunicateAction",
203
233
  "name": "Book a workflow hardening intake",
204
234
  "target": {
205
235
  "@type": "EntryPoint",
206
- "urlTemplate": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
236
+ "urlTemplate": "https://thumbgate.ai/#workflow-sprint-intake",
207
237
  "actionPlatform": [
208
238
  "https://schema.org/DesktopWebPlatform"
209
239
  ]
@@ -307,7 +337,7 @@ __GA_BOOTSTRAP__
307
337
  "name": "How does ThumbGate reduce host blast radius for high-risk local runs?",
308
338
  "acceptedAnswer": {
309
339
  "@type": "Answer",
310
- "text": "ThumbGate combines pre-action checks with execution guidance. Workflow Sentinel predicts risky local actions before they execute, and high-risk runs can be routed into Docker Sandboxes instead of running directly on the host. Team workflows also have a signed hosted sandbox lane for isolated automation dispatch."
340
+ "text": "ThumbGate combines pre-action checks with execution guidance. Workflow Sentinel predicts risky local actions before they execute, and high-risk runs can be routed into Docker Sandboxes instead of running directly on the host. Enterprise workflows also have a signed hosted sandbox lane for isolated automation dispatch."
311
341
  }
312
342
  },
313
343
  {
@@ -318,6 +348,14 @@ __GA_BOOTSTRAP__
318
348
  "text": "Prompt rules are suggestions agents can ignore. Pre-Action Checks are enforcement — they block the action before execution via PreToolUse hooks. Checks are auto-generated from feedback and use Thompson Sampling to adapt."
319
349
  }
320
350
  },
351
+ {
352
+ "@type": "Question",
353
+ "name": "How does ThumbGate fit the agentic development cycle?",
354
+ "acceptedAnswer": {
355
+ "@type": "Answer",
356
+ "text": "Agentic development is converging around Guide, Generate, Verify, and Solve. ThumbGate adds the execution-control layer between those stages: project guidance and feedback become rules, generated tool calls are checked before execution, verification evidence is required for risky actions, and solved failures become reusable prevention gates."
357
+ }
358
+ },
321
359
  {
322
360
  "@type": "Question",
323
361
  "name": "How does ThumbGate prevent AI slop and protect brand authenticity?",
@@ -411,6 +449,10 @@ __GA_BOOTSTRAP__
411
449
  .hero-actions .hero-install { margin-bottom: 0; font-size: 18px; padding: 14px 22px; border: 1px solid rgba(34,211,238,0.55); background: rgba(34,211,238,0.07); box-shadow: none; }
412
450
  .hero-actions .btn-install-hero { font-size: 16px; padding: 14px 22px; }
413
451
  .hero-actions .hero-diagnostic { font-size: 16px; padding: 14px 22px; background: var(--green); color: #06120a; font-weight: 800; box-shadow: none; }
452
+ .offer-router{max-width:940px;margin:18px auto 22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;text-align:left}
453
+ .offer-route{border:1px solid rgba(34,211,238,.18);background:rgba(17,17,19,.72);border-radius:8px;padding:14px}
454
+ .offer-route strong{display:block;color:var(--text);font-size:14px;margin-bottom:6px}.offer-route p{margin:0 0 10px;color:var(--text-muted);font-size:13px}
455
+ .offer-route a,.offer-route button{color:var(--cyan);font-weight:800;font-size:13px;text-decoration:none;background:transparent;border:0;padding:0;cursor:pointer}.offer-route.primary{background:rgba(34,211,238,.07)}
414
456
  .btn-pro-page { display: inline-flex; align-items: center; justify-content: center; padding: 11px 18px; background: var(--cyan); color: var(--bg); border-radius: 999px; text-decoration: none; font-size: 14px; font-weight: 700; box-shadow: 0 0 0 1px rgba(34,211,238,0.28), 0 12px 32px rgba(34,211,238,0.18); transition: opacity 0.15s, transform 0.15s; }
415
457
  .btn-pro-page:hover { opacity: 0.9; transform: translateY(-1px); }
416
458
  .btn-gpt-page { display: inline-flex; align-items: center; justify-content: center; padding: 14px 32px; background: var(--green); color: #06120a; border-radius: 8px; text-decoration: none; font-size: 16px; font-weight: 800; box-shadow: 0 0 0 1px rgba(74,222,128,0.32), 0 12px 32px rgba(74,222,128,0.18); transition: opacity 0.15s, transform 0.15s; }
@@ -454,12 +496,12 @@ __GA_BOOTSTRAP__
454
496
  /* COMPATIBILITY */
455
497
  .compatibility { padding: 0 0 80px; }
456
498
  .compatibility-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
457
- .compat-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 24px; text-decoration: none; color: inherit; display: block; transition: border-color 0.2s, transform 0.15s; cursor: pointer; }
458
- .compat-card:hover { border-color: rgba(34,211,238,0.3); transform: translateY(-2px); }
459
- .compat-card h3 { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 10px; }
460
- .compat-card .card-arrow { font-size: 13px; color: var(--cyan); margin-top: 12px; font-weight: 500; }
461
- .compat-card p { font-size: 14px; color: var(--text-muted); line-height: 1.6; }
462
- .compat-card code { font-family: var(--mono); font-size: 12px; background: rgba(34,211,238,0.08); color: var(--cyan); padding: 2px 6px; border-radius: 4px; }
499
+ .compat-card, .cycle-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 24px; text-decoration: none; color: inherit; display: block; transition: border-color 0.2s, transform 0.15s; cursor: pointer; }
500
+ .compat-card:hover, .cycle-card:hover { border-color: rgba(34,211,238,0.3); transform: translateY(-2px); }
501
+ .compat-card h3, .cycle-card h3 { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 10px; }
502
+ .compat-card .card-arrow, .cycle-card .card-arrow { font-size: 13px; color: var(--cyan); margin-top: 12px; font-weight: 500; }
503
+ .compat-card p, .cycle-card p { font-size: 14px; color: var(--text-muted); line-height: 1.6; }
504
+ .compat-card code, .cycle-card code { font-family: var(--mono); font-size: 12px; background: rgba(34,211,238,0.08); color: var(--cyan); padding: 2px 6px; border-radius: 4px; }
463
505
 
464
506
  /* CHATGPT GPT PATH */
465
507
  .gpt-path { padding: 0 0 80px; }
@@ -558,6 +600,15 @@ __GA_BOOTSTRAP__
558
600
  .price-card li { font-size: 14px; color: var(--text-muted); padding: 6px 0; display: flex; align-items: flex-start; gap: 8px; }
559
601
  .price-card li::before { content: "✓"; color: var(--cyan); font-weight: 700; flex-shrink: 0; }
560
602
  .price-card.pro li::before { color: var(--cyan); }
603
+ .pricing-matrix { max-width: 1080px; margin: 24px auto 0; overflow-x: auto; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-card); }
604
+ .pricing-matrix table { width: 100%; min-width: 760px; border-collapse: collapse; }
605
+ .pricing-matrix caption { text-align: left; padding: 18px 18px 0; color: var(--text); font-weight: 800; font-size: 16px; }
606
+ .pricing-matrix th,
607
+ .pricing-matrix td { padding: 13px 16px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: top; font-size: 13px; line-height: 1.45; color: var(--text-muted); }
608
+ .pricing-matrix th { color: var(--cyan); background: rgba(34,211,238,0.06); font-weight: 800; }
609
+ .pricing-matrix tr:last-child td { border-bottom: 0; }
610
+ .pricing-matrix strong { color: var(--text); }
611
+ .pricing-note { max-width: 880px; margin: 14px auto 0; color: var(--text-muted); font-size: 12px; line-height: 1.55; text-align: center; }
561
612
  .btn-free,
562
613
  .btn-demo-link { display: block; text-align: center; padding: 10px; border: 1px solid var(--border); border-radius: 8px; color: var(--text); text-decoration: none; font-size: 14px; font-weight: 500; transition: border-color 0.15s; }
563
614
  .btn-free:hover,
@@ -654,6 +705,7 @@ __GA_BOOTSTRAP__
654
705
  .hero { padding: 72px 0 56px; }
655
706
  .hero-actions { flex-direction: column; }
656
707
  .hero-actions a { width: 100%; }
708
+ .offer-router { grid-template-columns: 1fr; }
657
709
  .hero-paid-actions { justify-content: center; }
658
710
  .hero-paid-actions a { width: 100%; }
659
711
  .nav-links a:not(.nav-cta) { display: none; }
@@ -678,7 +730,7 @@ __GA_BOOTSTRAP__
678
730
  <!-- NAV -->
679
731
  <nav>
680
732
  <div class="container">
681
- <a href="/" class="nav-logo"><img src="/assets/brand/thumbgate-mark-inline.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
733
+ <a href="/" class="nav-logo"><img src="/assets/brand/thumbgate-mark-inline-v3.svg" alt="ThumbGate" class="logo-mark" width="28" height="28"><span class="logo-text">ThumbGate</span></a>
682
734
  <div class="nav-links">
683
735
  <a href="#how-it-works">How It Works</a>
684
736
  <a href="/pricing">Pricing</a>
@@ -695,7 +747,7 @@ __GA_BOOTSTRAP__
695
747
  <a href="#claude-code-section" class="nav-claude" onclick="posthog.capture('nav_claude_click')" style="display:none;">Claude</a>
696
748
  <a href="#workflow-sprint-intake" onclick="posthog.capture('workflow_sprint')" style="display:none;">Start Sprint</a>
697
749
  <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" target="_blank" rel="noopener" onclick="posthog.capture('nav_claude_extension_click',{cta:'install_claude_extension'})" class="nav-cta" style="background:#d97706;display:none;">Claude Extension</a>
698
- <a href="/go/install?utm_source=website&utm_medium=nav&utm_campaign=install_free&cta_id=nav_install_free&cta_placement=nav" onclick="posthog.capture('nav_cta_click',{cta:'install_free'})" class="nav-cta">Install Free</a>
750
+ <a href="/checkout/pro?utm_source=website&utm_medium=nav&utm_campaign=pro_upgrade&cta_id=nav_start_pro&cta_placement=nav&plan_id=pro&landing_path=%2F" data-revenue-cta data-cta-id="nav_start_pro" data-cta-placement="nav" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);try{posthog.capture('nav_pro_click',{cta:'nav_start_pro',tier:'pro',price:19})}catch(_){}" class="nav-cta">Start Pro — $19/mo</a>
699
751
  </div>
700
752
  </div>
701
753
  </nav>
@@ -703,24 +755,43 @@ __GA_BOOTSTRAP__
703
755
  <!-- HERO -->
704
756
  <section class="hero">
705
757
  <div class="container">
706
- <div class="hero-badge">👍 👎 Pre-action gates for AI coding agents</div>
707
- <h1>Stop paying for the same AI mistake twice.</h1>
708
- <p class="hero-lede">ThumbGate turns a single thumbs-down into a rule that blocks the next repeat before Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, or OpenCode runs the tool call.</p>
709
-
710
- <div class="hero-proof-card" aria-label="ThumbGate blocking example">
711
- <div class="terminal-row muted">$ agent attempts risky action</div>
712
- <div class="terminal-row danger">BLOCKED: never run DROP on production tables</div>
713
- <div class="terminal-row ok">Agent must choose a safer plan with evidence.</div>
758
+ <div class="hero-badge">👍 👎 Local-first · open-source · Pro proof when it matters</div>
759
+ <h1>Stop AI agents before they spend money, leak secrets, or break production.</h1>
760
+ <p class="hero-lede">Claude Code, Cursor, Codex, Gemini CLI, and MCP tools now touch terminals, repos, databases, SaaS APIs, and cloud systems. ThumbGate checks the next tool call before it runs, blocks repeated failures from your thumbs-down feedback, and gives paid operators proof, sync, recall, and exports when local rules become business-critical.</p>
761
+
762
+ <div class="hero-signals" aria-label="June 2026 buyer signals">
763
+ <a class="signal-pill signal-down" href="#june-2026-proof">MCP tool risk</a>
764
+ <a class="signal-pill" href="#june-2026-proof">Managed-agent rollout</a>
765
+ <a class="signal-pill" href="#june-2026-proof">Token spend pressure</a>
766
+ <a class="signal-pill signal-up" href="#pricing">Free wedge, paid proof</a>
767
+ </div>
768
+
769
+ <div class="hero-proof-card" aria-label="ThumbGate blocking dangerous AI agent commands in real time">
770
+ <img src="/media/thumbgate-demo.gif" alt="ThumbGate blocking an AI agent's rm -rf, git push --force, and chmod 777 in real time, while letting safe commands through" style="width:100%;display:block;border-radius:8px;" loading="lazy" />
714
771
  </div>
715
772
 
716
773
  <div class="hero-actions">
717
- <div class="hero-install hero-install-primary" onclick="copyInstall(this)" title="Click to copy">
718
- <span class="prompt">$</span>
719
- <span class="cmd">npx thumbgate init</span>
720
- <span class="copy-hint">click to copy</span>
774
+ <a href="/checkout/pro?utm_source=website&utm_medium=hero_cta&utm_campaign=pro_upgrade&cta_id=hero_start_pro&cta_placement=hero&plan_id=pro&landing_path=%2F" data-revenue-cta data-cta-id="hero_start_pro" data-cta-placement="hero" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);try{posthog.capture('hero_pro_checkout_click',{cta:'hero_start_pro',tier:'pro',price:19})}catch(_){}" class="btn-pro-page hero-pro hero-pro-primary">Start Pro — $19/mo</a>
775
+ <a href="#workflow-sprint-intake" onclick="try{posthog.capture('hero_sprint_click',{cta:'sprint_intake'})}catch(_){};sendFirstPartyTelemetry('hero_sprint_intake_started',{ctaId:'hero_workflow_sprint',ctaPlacement:'hero',offer:'workflow_sprint'});" class="btn-pro-page hero-pro">Workflow Hardening Sprint →</a>
776
+ <a href="/go/install?utm_source=website&utm_medium=hero_cta&utm_campaign=install_free&cta_id=hero_install_cli&cta_placement=hero" onclick="event.preventDefault(); navigator.clipboard.writeText('npx thumbgate init'); this.textContent='Copied ✓ — paste in your repo'; setTimeout(()=>{this.textContent='Install Free CLI'},2000); try{posthog.capture('hero_install_click',{cta:'install_cli'})}catch(_){}" class="btn-free btn-install-hero" title="Click to copy: npx thumbgate init">Install Free CLI</a>
777
+ </div>
778
+
779
+ <div class="offer-router" aria-label="Choose the right ThumbGate path">
780
+ <div class="offer-route primary">
781
+ <strong>Solo operator: Start Pro</strong>
782
+ <p>Unlimited rules, recall, sync, proof, exports.</p>
783
+ <a href="/checkout/pro?utm_source=website&utm_medium=offer_router&cta_id=router_start_pro&cta_placement=offer_router&plan_id=pro" data-revenue-cta data-cta-id="router_start_pro" data-cta-placement="offer_router" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);">Pay $19/mo with Stripe →</a>
784
+ </div>
785
+ <div class="offer-route">
786
+ <strong>Enterprise workflow: Start with intake</strong>
787
+ <p>One repeated failure, one owner, one proof plan.</p>
788
+ <a href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_intake_started',{ctaId:'router_workflow_sprint',ctaPlacement:'offer_router',offer:'workflow_sprint'});">Talk to us →</a>
789
+ </div>
790
+ <div class="offer-route">
791
+ <strong>Still evaluating: Free CLI</strong>
792
+ <p>2 captures/day, 3 active rules. Enough to prove one blocked repeat.</p>
793
+ <button data-router-install onclick="copyInstall(this)"><span class="copy-hint">Copy npx thumbgate init</span></button>
721
794
  </div>
722
- <a href="/go/install?utm_source=website&utm_medium=hero_cta&utm_campaign=install_free&cta_id=hero_install_cli&cta_placement=hero" onclick="event.preventDefault(); navigator.clipboard.writeText('npx thumbgate init'); this.textContent='Copied ✓ — paste in your repo'; setTimeout(()=>{this.textContent='Install Free CLI'},2000); try{posthog.capture('hero_install_click',{cta:'install_cli'})}catch(_){}" class="btn-gpt-page btn-install-hero" title="Click to copy: npx thumbgate init">Install Free CLI</a>
723
- <a href="#workflow-sprint-intake" onclick="try{posthog.capture('hero_sprint_click',{cta:'sprint_intake'})}catch(_){};sendFirstPartyTelemetry('hero_sprint_intake_started',{ctaId:'hero_workflow_sprint',ctaPlacement:'hero',offer:'workflow_sprint'});" class="btn-pro-page hero-pro">Talk to me — Workflow Hardening Sprint →</a>
724
795
  </div>
725
796
 
726
797
  <div class="hero-trust-bar">
@@ -734,6 +805,11 @@ __GA_BOOTSTRAP__
734
805
  <blockquote style="margin:0;font-size:18px;line-height:1.5;color:var(--text);font-style:italic;">&ldquo;A better dashboard doesn&rsquo;t make the agents more reliable. The hard part isn&rsquo;t visibility. It&rsquo;s trust.&rdquo;</blockquote>
735
806
  <figcaption style="margin-top:12px;font-size:13px;color:var(--text-muted);">— Rob May, CEO &amp; co-founder, Neurometric AI, in <a href="https://thenewstack.io/claude-code-agent-view/" target="_blank" rel="noopener" style="color:var(--cyan);">The New Stack</a> on Anthropic&rsquo;s Claude Code Agent View (May 2026). ThumbGate is the open-source layer that makes the trust part real: PreToolUse gates, thumbs-down to rule, audit trail on every interception.</figcaption>
736
807
  </figure>
808
+ <figure style="max-width:760px;margin:24px auto 0;padding:20px 24px;border-left:3px solid var(--cyan);background:rgba(34,211,238,0.04);border-radius:0 8px 8px 0;">
809
+ <p style="margin:0 0 8px;font-size:14px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.08em;">Local-first is the new default</p>
810
+ <blockquote style="margin:0;font-size:16px;line-height:1.55;color:var(--text);">Perplexity demoed a Personal Computer agent at Computex 2026 that <strong>asks the user before sending sensitive content to the cloud</strong>. Automation Anywhere shipped EnterpriseClaw with Cisco, NVIDIA, Okta, and OpenAI — <strong>central policy, locally enforced, audit reported back</strong>. The architectural debate is settled. ThumbGate runs the same pattern for the coding agent already on your laptop.</blockquote>
811
+ <figcaption style="margin-top:12px;font-size:13px;color:var(--text-muted);">Sources: Perplexity at Intel Computex keynote (2026-06-02), Automation Anywhere EnterpriseClaw launch (Imagine 2026), <a href="https://thenewstack.io/automation-anywhere-enterpriseclaw-ai-agents/" target="_blank" rel="noopener" style="color:var(--cyan);">The New Stack coverage</a>.</figcaption>
812
+ </figure>
737
813
  <div class="first-check-card" id="first-check">
738
814
  <div class="section-label" style="text-align:left;margin-bottom:8px;">First-Dollar Activation Path</div>
739
815
  <h2>Block your first repeated AI mistake in 5 minutes.</h2>
@@ -763,7 +839,6 @@ __GA_BOOTSTRAP__
763
839
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/THUMBGATE_BENCH.md" target="_blank" rel="noopener">ThumbGate Bench</a>
764
840
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/RELEASE_CONFIDENCE.md" target="_blank" rel="noopener">Release confidence</a>
765
841
  <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">Proof-backed CI</a>
766
- <a href="https://github.com/IgorGanapolsky/ThumbGate/actions" target="_blank" rel="noopener">CI and proof lanes</a>
767
842
  <a href="#compatibility">Claude Code · Cursor · Codex · Gemini · Amp · Cline · OpenCode</a>
768
843
  </nav>
769
844
  <div class="marketing-test-copy" hidden>
@@ -771,7 +846,7 @@ __GA_BOOTSTRAP__
771
846
  <a class="signal-pill signal-up">Thumbs-down once, blocked forever</a>
772
847
  <a class="signal-pill signal-down">Block repeat hallucinations before the model sees them</a>
773
848
  <p class="hero-persona">For consultancies, platform teams, and AI product teams that want workflow governance, CLI-first rollout, and a reliable operator.</p>
774
- <p>Have one AI-agent failure that keeps repeating? Start with one real workflow, one repeated failure pattern, enforceable pre-action gates, and a short audit note your team can keep.</p>
849
+ <p>Have one AI-agent failure that keeps repeating? Start with one real workflow, one repeated failure pattern, enforceable pre-action gates, and a short audit trail your team can keep.</p>
775
850
  <p>Prove one blocked repeat before asking anyone to buy. Give <code>thumbs up</code> when the agent follows your standards, <code>thumbs down</code> when it misses. Upgrade after one real blocked repeat.</p>
776
851
  <p>Workflow governance for isolated execution: ThumbGate pairs policy checks with Docker Sandboxes, signed hosted sandbox dispatch, Changeset evidence, and exact main-branch merge commit verification before release claims ship.</p>
777
852
  <!--
@@ -784,13 +859,84 @@ __GA_BOOTSTRAP__
784
859
  <div hidden aria-hidden="true" data-thumbgate-test-anchors style="display:none">
785
860
  <span data-cta="hero_workflow_sprint_intake">ctaId: 'hero_workflow_sprint' ctaId: 'hero_workflow_sprint_recovery_intake' workflow_sprint_intake_started workflow_sprint_recovery_intake_clicked hero_workflow_sprint_recovery_intake</span>
786
861
  <span data-anchor="dashboard-preview">dashboard-preview What your Pro dashboard looks like check:no-force-push</span>
787
- <span data-anchor="team-intake-form">Start Team Pilot Intake id="team-pilot-intake-form" data-team-intake-form name="ctaPlacement" value="team_visible_intake" name="utmMedium" value="visible_team_intake" name="planId" value="team" name="ctaId" value="workflow_sprint_intake" Team checkout happens after scope. team_workflow_sprint_recovery_intake scope_first workflow_sprint_intake_started workflow_sprint_intake_submit_attempted pricing_team_intake team_intake_started</span>
862
+ <span data-anchor="team-intake-form">Start Enterprise Pilot Intake id="team-pilot-intake-form" data-team-intake-form name="ctaPlacement" value="team_visible_intake" name="utmMedium" value="visible_team_intake" name="planId" value="team" name="ctaId" value="workflow_sprint_intake" Enterprise checkout happens after scope. team_workflow_sprint_recovery_intake scope_first workflow_sprint_intake_started workflow_sprint_intake_submit_attempted pricing_team_intake team_intake_started</span>
788
863
  <span data-anchor="chatgpt-context">No, you do not have to chat inside the GPT forever. ChatGPT is the discovery and memory surface. Do not rely on ChatGPT's native rating buttons for ThumbGate memory. Explore GPTs choose the GPT by Igor Ganapolsky Programming Do I have to chat inside the ThumbGate GPT for enforcement? capture thumbs-up/down lessons Real blocking for coding agents still runs locally adapters/chatgpt/INSTALL.md Native ChatGPT rating buttons are not the ThumbGate capture path. thumbs up: this review named exact files, commands, and tests. thumbs down: the answer ignored my request.</span>
789
864
  </div>
790
865
  </div>
791
866
  </div>
792
867
  </section>
793
868
 
869
+ <section class="compatibility" id="why-not-diy" aria-label="Why not write your own hooks">
870
+ <div class="container">
871
+ <h2>“Why not just write my own PreToolUse hooks?”</h2>
872
+ <p class="hero-lede" style="max-width:760px;margin:0 auto 18px;">You can — on one machine, for one agent, until the next breaking change. ThumbGate is that idea, maintained: a 👎 becomes a rule that <strong>propagates across every agent</strong> — Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode — and every machine, with adapters kept current so you’re not patching shell scripts each release. Hand-written hooks don’t learn, don’t sync, and don’t survive a teammate’s laptop.</p>
873
+ <p><a href="/compare/claude-code-hooks">See ThumbGate vs. hand-written hooks →</a></p>
874
+ </div>
875
+ </section>
876
+
877
+ <section class="compatibility" id="june-2026-proof">
878
+ <div class="container">
879
+ <div class="section-label">June 2026 Market Signal</div>
880
+ <h2 class="section-title">The market moved from “agents can code” to “who is allowed to let agents act?”</h2>
881
+ <p style="text-align:center;font-size:16px;color:var(--text-muted);max-width:900px;margin:0 auto 26px;line-height:1.7;">The high-ROI buyer story is not another chatbot memory claim. June 2026 coverage is pushing the same pattern from multiple directions: tool lockdown, MCP security, managed agents, context budgets, and agent-authored production code all need pre-action governance at the execution boundary.</p>
882
+ <div class="agent-grid">
883
+ <div class="agent-card">
884
+ <h3>MCP and tool lockdown</h3>
885
+ <p>As MCP servers and hosted tools spread, the failure mode is no longer just a bad answer. It is an agent calling the wrong tool with real developer permissions. ThumbGate sells the local allow/block layer before the tool call executes.</p>
886
+ </div>
887
+ <div class="agent-card">
888
+ <h3>Managed agents need receipts</h3>
889
+ <p>Managed background agents can multiply output, but every extra autonomous run needs evidence, rollback boundaries, and approval rules. ThumbGate turns “agent did work” into “this exact risky action was allowed or blocked for this reason.”</p>
890
+ </div>
891
+ <div class="agent-card">
892
+ <h3>Tokenmaxxing backlash</h3>
893
+ <p>Long-context agents are expensive when they repeatedly reload irrelevant history. ThumbGate keeps paid value above the free wedge with recall, search, context gating, and proof exports instead of dumping everything into every prompt.</p>
894
+ </div>
895
+ <div class="agent-card">
896
+ <h3>Production code by AI</h3>
897
+ <p>When teams claim most new production code is AI-authored, the real enterprise question becomes auditability. ThumbGate maps corrections to prevention rules, then records the enforcement evidence reviewers need.</p>
898
+ </div>
899
+ </div>
900
+ <div style="margin:22px auto 0;max-width:900px;border:1px solid rgba(74,222,128,0.26);border-radius:8px;background:rgba(74,222,128,0.07);padding:16px 18px;color:var(--text-muted);">
901
+ <strong style="color:var(--green);">Data-science posture:</strong> use the free CLI as acquisition, treat Pro checkout starts and workflow-intake submissions as intent, and promote only the offer whose lower credible conversion bound beats zero. With the current low-traffic data, the next experiment should optimize clarity and qualified intake before scaling paid traffic.
902
+ </div>
903
+ </div>
904
+ </section>
905
+
906
+ <section class="compatibility" id="agentic-development-cycle">
907
+ <div class="container">
908
+ <div class="section-label">Agentic Development Cycle</div>
909
+ <h2 class="section-title">Guide, Generate, Verify, Solve still needs an execution gate.</h2>
910
+ <p style="text-align:center;font-size:16px;color:var(--text-muted);max-width:900px;margin:0 auto 28px;line-height:1.7;">The market is converging on agentic development as a control loop, not a code-generation trick. <a href="https://thenewstack.io/agentic-development-cycle-framework/" target="_blank" rel="noopener" style="color:var(--cyan);text-decoration:underline;">The New Stack's May 2026 AC/DC framing</a> names the core stages: Guide, Generate, Verify, and Solve. ThumbGate gives that loop a hard pre-action boundary so agent work is governed before it touches files, terminals, CI, payments, or production systems.</p>
911
+ <div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;max-width:1080px;margin:0 auto;" aria-label="Agentic development cycle stages">
912
+ <a class="cycle-card" href="/learn/feedback-loop-vs-decision-layer" rel="noopener" aria-label="Learn how Guide turns feedback into enforceable rules" onclick="try{posthog.capture('agentic_cycle_card_click',{stage:'guide'})}catch(_){}">
913
+ <h3>Guide</h3>
914
+ <p>Rules, standards, past thumbs-downs, workflow boundaries, and approval policies are loaded as concrete operating context instead of vague prompt advice.</p>
915
+ <div class="card-arrow">See how feedback becomes rules →</div>
916
+ </a>
917
+ <a class="cycle-card" href="/guide" rel="noopener" aria-label="Open the setup guide for AI agents that generate plans edits and tool calls" onclick="try{posthog.capture('agentic_cycle_card_click',{stage:'generate'})}catch(_){}">
918
+ <h3>Generate</h3>
919
+ <p>Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, and MCP-compatible agents keep generating plans, edits, and tool calls.</p>
920
+ <div class="card-arrow">Open the agent setup guide →</div>
921
+ </a>
922
+ <a class="cycle-card" href="/learn/ac-dc-runtime-enforcement" rel="noopener" aria-label="Read the AC/DC mapping framework article" onclick="try{posthog.capture('agentic_cycle_card_click',{stage:'verify'})}catch(_){}">
923
+ <h3>Verify</h3>
924
+ <p>Pre-Action Checks require inspection evidence, tests, CI, screenshots, API responses, or human approval before high-risk actions proceed.</p>
925
+ <div class="card-arrow">Read the AC/DC map →</div>
926
+ </a>
927
+ <a class="cycle-card" href="/lessons" rel="noopener" aria-label="Explore the lessons library and generated rules" onclick="try{posthog.capture('agentic_cycle_card_click',{stage:'solve'})}catch(_){}">
928
+ <h3>Solve</h3>
929
+ <p>Blocked failures and accepted fixes become lessons, shared rules, DPO exports, and audit events so the same mistake is not paid for again.</p>
930
+ <div class="card-arrow">Explore the lessons →</div>
931
+ </a>
932
+ </div>
933
+ <div style="max-width:900px;margin:22px auto 0;padding:16px 18px;border:1px solid rgba(74,222,128,0.28);border-radius:8px;background:rgba(74,222,128,0.07);">
934
+ <strong style="display:block;color:var(--green);margin-bottom:6px;">ThumbGate's role: the pre-action gate between generated intent and executed action.</strong>
935
+ <p style="margin:0;color:var(--text-muted);font-size:14px;line-height:1.65;">Verification after a pull request is useful, but it is too late for force-pushes, destructive SQL, unsafe deploys, leaked secrets, and costly external API calls. ThumbGate checks the action before it runs, then feeds the result back into the next Guide and Solve cycle.</p>
936
+ </div>
937
+ </div>
938
+ </section>
939
+
794
940
  <!-- CODE EXAMPLE — moved up for conversion: show the product immediately after hero -->
795
941
  <section class="code-section">
796
942
  <div class="container">
@@ -816,6 +962,38 @@ __GA_BOOTSTRAP__
816
962
  </div>
817
963
  </section>
818
964
 
965
+ <section class="compatibility" id="deterministic-prevention">
966
+ <div class="container">
967
+ <div class="section-label">Deterministic Prevention</div>
968
+ <h2 class="section-title">Native thumbs are a black box. ThumbGate is the inspectable control layer.</h2>
969
+ <p style="text-align:center;font-size:16px;color:var(--text-muted);max-width:900px;margin:0 auto 28px;line-height:1.7;">Codex, Claude Code, ChatGPT, and other agent surfaces can collect preference signals, but you usually cannot see exactly what changed, which rule will fire, or why a future tool call is allowed. ThumbGate keeps the prevention layer outside the model: typed feedback becomes a local lesson, repeated mistakes become explicit rules, and every block names the matched rule, source lesson, tool call, and audit event.</p>
970
+ <div class="agent-grid">
971
+ <div class="agent-card">
972
+ <h3>Black-box memory</h3>
973
+ <p>Native thumbs and vendor memories may improve future behavior, but they do not give teams a deterministic allow/block contract at the moment an agent touches files, terminals, APIs, or CI.</p>
974
+ </div>
975
+ <div class="agent-card">
976
+ <h3>Inspectable ThumbGate memory</h3>
977
+ <p>Lessons live in your ThumbGate store, can be searched, exported as JSONL or DPO pairs, and traced back to the exact correction that created the rule.</p>
978
+ </div>
979
+ <div class="agent-card">
980
+ <h3>Rules before execution</h3>
981
+ <p>The final decision is not another model opinion. ThumbGate checks tool name, arguments, working directory, command shape, confidence, and required evidence before the action runs.</p>
982
+ </div>
983
+ </div>
984
+ <div style="margin:26px auto 0;max-width:960px;border:1px solid rgba(34,211,238,0.18);border-radius:8px;background:rgba(34,211,238,0.05);padding:18px 20px;">
985
+ <h3 style="margin:0 0 10px;color:var(--text);font-size:18px;">Why this matters now</h3>
986
+ <ul style="margin:0;padding-left:20px;color:var(--text-muted);line-height:1.7;">
987
+ <li><strong>Agent security is now mainstream risk.</strong> Coding agents run shell commands, write files, query databases, and chain actions with developer permissions, so unattended autonomy needs a local policy boundary.</li>
988
+ <li><strong>MCP adoption is accelerating.</strong> More tools are becoming agent-callable through shared protocols, which means one cross-agent governance layer beats one-off prompt rules per app.</li>
989
+ <li><strong>Managed-agent output needs audit evidence.</strong> Background agents, subagents, and workflow runners can ship more work, but buyers need receipts for what was blocked, approved, and verified.</li>
990
+ <li><strong>Repeated failures waste cash and trust.</strong> Every repeat burns tokens, review time, and release confidence. ThumbGate turns the first correction into a reusable prevention check.</li>
991
+ </ul>
992
+ <p style="margin:12px 0 0;font-size:13px;color:var(--text-dim);">Sources to verify the market timing: <a href="https://www.docker.com/blog/ai-coding-agent-horror-stories-security-risks/" target="_blank" rel="noopener" style="color:var(--cyan);">Docker on AI coding agent security risks</a>, <a href="https://www.techradar.com/pro/how-ai-agents-are-wrecking-havoc-in-legacy-security-setups-and-enterprises-are-catching-up" target="_blank" rel="noopener" style="color:var(--cyan);">TechRadar on enterprise agent security pressure</a>, and <a href="https://www.techradar.com/pro/zendesk-becomes-the-latest-to-adopt-mcp-to-futureproof-customers-in-the-ai-first-era" target="_blank" rel="noopener" style="color:var(--cyan);">current MCP adoption coverage</a>.</p>
993
+ </div>
994
+ </div>
995
+ </section>
996
+
819
997
  <section class="marketing-deep-dive" style="padding:28px 0 10px;">
820
998
  <div class="container" style="max-width:1240px;">
821
999
  <div class="section-label">Status bar proof</div>
@@ -903,7 +1081,7 @@ __GA_BOOTSTRAP__
903
1081
  <div class="compatibility-grid">
904
1082
  <a class="compat-card" href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" target="_blank" rel="noopener" onclick="if(typeof posthog!=='undefined')posthog.capture('compat_claude_desktop_click',{cta:'download_claude_desktop'})" style="border-color:rgba(217,119,6,0.3);background:linear-gradient(135deg, rgba(217,119,6,0.06) 0%, var(--bg-card) 100%);">
905
1083
  <h3>🧩 Claude Desktop Extension</h3>
906
- <p>Install the published Claude Desktop plugin <code>.mcpb</code> bundle today. Claude Code users can add the repo marketplace immediately with <code>/plugin marketplace add</code>. No waiting for directory approval. <a href="/guide" style="color:var(--text-muted);text-decoration:underline;" onclick="event.stopPropagation();">60-second setup guide →</a></p>
1084
+ <p>Install the published Claude Desktop plugin <code>.mcpb</code> bundle today. Claude Code users can add the repo marketplace immediately with <code>/plugin marketplace add</code>. No waiting for directory approval.</p>
907
1085
  <div class="card-arrow" style="color:#d97706;">Download .mcpb bundle →</div>
908
1086
  </a>
909
1087
  <a class="compat-card seo-card" href="/guides/claude-code-prevent-repeated-mistakes" rel="noopener">
@@ -916,6 +1094,21 @@ __GA_BOOTSTRAP__
916
1094
  <p>Claude Code, Codex, Gemini CLI, Amp, and OpenCode all use the same gateway and memory model. Any MCP-compatible agent gets pre-action checks, feedback memory, and enforcement out of the box.</p>
917
1095
  <div class="card-arrow">Open the setup guide →</div>
918
1096
  </a>
1097
+ <a class="compat-card seo-card" href="/guides/hermes-agent-guardrails" rel="noopener">
1098
+ <h3>☤ Hermes Agent guardrails</h3>
1099
+ <p>Hermes-style agents bring persistent memory, generated skills, messaging gateways, scheduled automations, and sandboxed execution. ThumbGate adds the safer self-evolution loop: propose rule and skill changes from failures, then gate them with evidence before anything overwrites stable instructions or repeats an expensive action.</p>
1100
+ <div class="card-arrow">Read the Hermes guardrails guide →</div>
1101
+ </a>
1102
+ <a class="compat-card seo-card" href="/guides/vllm-serving-guardrails" rel="noopener">
1103
+ <h3>vLLM serving guardrails</h3>
1104
+ <p>vLLM makes self-hosted inference cheaper and faster with PagedAttention, continuous batching, chunked prefill, prefix caching, and optimized kernels. ThumbGate gates the routing change with latency, cache-isolation, benchmark, and rollback proof before agent traffic moves.</p>
1105
+ <div class="card-arrow">Read the vLLM guardrails guide →</div>
1106
+ </a>
1107
+ <a class="compat-card seo-card" href="/guides/agent-context-governance" rel="noopener">
1108
+ <h3>Context and tool governance</h3>
1109
+ <p>Long-running agents need cleaner working context, approved model routes, isolated execution, tool lockdown, direct pushback, and evidence before high-risk actions. ThumbGate turns those controls into local pre-action gates.</p>
1110
+ <div class="card-arrow">Read the context governance guide →</div>
1111
+ </a>
919
1112
  <a class="compat-card seo-card" href="/guides/gcp-mcp-guardrails" rel="noopener">
920
1113
  <h3>☁️ Google Data Agent Kit</h3>
921
1114
  <p>Cloud Next 2026 shipped BigQuery, Spanner, AlloyDB, and Cloud SQL as MCP tool calls into Claude Code, Codex, and Gemini CLI. ThumbGate checks the destructive ones — DROP on prod datasets, unscoped DELETEs, IAM escalation — before they fire.</p>
@@ -927,8 +1120,8 @@ __GA_BOOTSTRAP__
927
1120
  <div class="card-arrow">Open the Codex install page →</div>
928
1121
  </a>
929
1122
  <a class="compat-card" href="/guides/cursor-prevent-repeated-mistakes" rel="noopener">
930
- <h3>🎯 Cursor plugin</h3>
931
- <p>Drop the ThumbGate MCP config into <code>.cursor/mcp.json</code> and Cursor gets the same pre-action checks as Claude Code and Codex. Ships with bundled rules, commands, hooks, and agents.</p>
1123
+ <h3>🎯 Cursor plugin <span style="font-size:12px;font-weight:500;color:var(--text-muted);">(Marketplace review pending)</span></h3>
1124
+ <p>Drop the ThumbGate MCP config into <code>.cursor/mcp.json</code> and Cursor gets the same pre-action checks as Claude Code and Codex. Ships with bundled rules, commands, hooks, and agents. The runtime install works today via <code>npx thumbgate init --agent cursor</code>; the official Cursor Marketplace listing was submitted 2026-05-19 and is awaiting Cursor's manual review.</p>
932
1125
  <div class="card-arrow">Read the Cursor guide →</div>
933
1126
  </a>
934
1127
  <a class="compat-card" href="/guide" rel="noopener">
@@ -950,7 +1143,8 @@ __GA_BOOTSTRAP__
950
1143
  </div>
951
1144
  </section>
952
1145
 
953
- <section class="compatibility" id="social-proof">
1146
+ <section class="compatibility" id="demo">
1147
+ <a id="social-proof" aria-hidden="true"></a>
954
1148
  <div class="container">
955
1149
  <div class="section-label">See It In Action</div>
956
1150
  <h2 class="section-title">See the enforcement before you buy anything</h2>
@@ -965,7 +1159,7 @@ __GA_BOOTSTRAP__
965
1159
  <p>Every block explains why: which pattern matched, what evidence triggered it, and whether the rule came from your own corrections.</p>
966
1160
  </div>
967
1161
  <div class="agent-card">
968
- <h3>📊 Org Dashboard (Team)</h3>
1162
+ <h3>📊 Org Dashboard</h3>
969
1163
  <p>See which agents are creating review churn, which checks are saving time, and where rollout risk is still concentrated across the shared workflow.</p>
970
1164
  </div>
971
1165
  <div class="agent-card">
@@ -988,6 +1182,28 @@ __GA_BOOTSTRAP__
988
1182
  </div>
989
1183
  </section>
990
1184
 
1185
+ <section class="compatibility" id="governance-not-logging">
1186
+ <div class="container">
1187
+ <div class="section-label">Governance, Not Logging</div>
1188
+ <h2 class="section-title">Logs describe the damage. ThumbGate blocks the risky action before it runs.</h2>
1189
+ <p style="color:var(--text-dim);max-width:820px;margin:0 auto 22px;">Self-governance is an operator writing local rules and keeping local logs. ThumbGate starts there, then turns each correction into a pre-action decision: allow, block, require evidence, or route for approval before the tool call touches code, data, money, or customers.</p>
1190
+ <div class="agent-grid">
1191
+ <div class="agent-card">
1192
+ <h3>Pre-action enforcement</h3>
1193
+ <p>The rule is evaluated at the execution boundary, not after the fact. Repeated failures are stopped before shell commands, PR actions, deploys, refunds, or production writes run.</p>
1194
+ </div>
1195
+ <div class="agent-card">
1196
+ <h3>Reviewable decision trail</h3>
1197
+ <p>Each event records the rule, source lesson, policy version, actor, action, evidence requirement, and reason so reviewers can inspect the decision instead of trusting an agent summary.</p>
1198
+ </div>
1199
+ <div class="agent-card">
1200
+ <h3>Enterprise governance mode</h3>
1201
+ <p>Org-owned policies, reviewer approvals, signed evidence bundles, and export paths turn local corrections into shared controls without giving the agent unilateral authority over the rules.</p>
1202
+ </div>
1203
+ </div>
1204
+ </div>
1205
+ </section>
1206
+
991
1207
  <section class="compatibility" id="orchestration-layer">
992
1208
  <div class="container">
993
1209
  <div class="section-label">Positioning</div>
@@ -1012,6 +1228,7 @@ __GA_BOOTSTRAP__
1012
1228
  <a class="btn-free" href="/guides/ai-deployment-readiness" style="display:inline-flex;align-items:center;">AI deployment readiness →</a>
1013
1229
  <a class="btn-free" href="/use-cases/platform-teams" style="display:inline-flex;align-items:center;">Platform team rollout →</a>
1014
1230
  <a class="btn-free" href="/use-cases/regulated-workflows" style="display:inline-flex;align-items:center;">Regulated workflow pattern →</a>
1231
+ <a class="btn-free" href="/agent-manager" style="display:inline-flex;align-items:center;">Built for the Agent Manager →</a>
1015
1232
  </div>
1016
1233
  </div>
1017
1234
  </section>
@@ -1022,9 +1239,14 @@ __GA_BOOTSTRAP__
1022
1239
  <div style="color:var(--cyan);font-weight:700;">Compare ThumbGate with other agent-safety approaches</div>
1023
1240
  <div style="display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;font-size:13px;line-height:1.4;">
1024
1241
  <a href="/learn">Browse the guide library</a>
1242
+ <a href="/compare/claude-code-hooks" title="ThumbGate vs native Claude Code hooks and free community repos">Claude Code hooks</a>
1243
+ <a href="/compare/arcjet">Arcjet</a>
1244
+ <a href="/compare/bumblebee">Bumblebee</a>
1245
+ <a href="/compare/anthropic-containment">Claude Containment</a>
1025
1246
  <a href="/compare/speclock">SpecLock</a>
1026
1247
  <a href="/compare/mem0">Mem0</a>
1027
1248
  <a href="/compare/fallow">Fallow</a>
1249
+ <a href="/compare" style="font-weight:700;color:var(--cyan);">Compare all &rarr;</a>
1028
1250
  <a href="/guides/pre-action-checks">Pre-action checks</a>
1029
1251
  <a href="/guides/agent-harness-optimization">Agent harness optimization</a>
1030
1252
  <a href="/guides/code-knowledge-graph-guardrails">Code graph guardrails</a>
@@ -1040,6 +1262,7 @@ __GA_BOOTSTRAP__
1040
1262
  <a href="/guides/browser-automation-safety">Browser automation safety</a>
1041
1263
  <a href="/guides/native-messaging-host-security">Native messaging host security</a>
1042
1264
  <a href="/guides/ai-search-topical-presence">AI search topical presence</a>
1265
+ <a href="/guides/agentic-web-governance">Agentic web governance</a>
1043
1266
  <a href="/guides/best-tools-stop-ai-agents-breaking-production">Stop agents breaking production</a>
1044
1267
  <a href="/guides/relational-knowledge-ai-recommendations">Relational knowledge</a>
1045
1268
  <a href="/guides/claude-code-feedback">Claude Code feedback</a>
@@ -1066,12 +1289,12 @@ __GA_BOOTSTRAP__
1066
1289
  </div>
1067
1290
  <div class="autoresearch-card">
1068
1291
  <h3>Ship into CI</h3>
1069
- <p>Start with templates for <code>npm test</code>, Playwright duration, bundle size, lint, and CI failures, then add Team checks for shared workflows.</p>
1292
+ <p>Start with templates for <code>npm test</code>, Playwright duration, bundle size, lint, and CI failures, then add shared workflow checks for team-owned releases.</p>
1070
1293
  </div>
1071
1294
  </div>
1072
1295
  <div class="autoresearch-cta">
1073
1296
  <a class="primary" href="/guides/autoresearch-agent-safety?utm_source=website&utm_medium=autoresearch_pack&utm_campaign=autoresearch_safety&cta_id=autoresearch_guide&cta_placement=autoresearch_pack">Read the Autoresearch guide</a>
1074
- <a class="secondary" href="/checkout/pro?utm_source=website&utm_medium=autoresearch_pack&utm_campaign=autoresearch_safety&cta_id=autoresearch_pro_checkout&cta_placement=autoresearch_pack&plan_id=pro&landing_path=%2F">Start Pro</a>
1297
+ <a class="secondary" href="/checkout/pro?utm_source=website&utm_medium=autoresearch_pack&utm_campaign=autoresearch_safety&cta_id=autoresearch_pro_checkout&cta_placement=autoresearch_pack&plan_id=pro&landing_path=%2F" data-revenue-cta data-cta-id="autoresearch_pro_checkout" data-cta-placement="autoresearch_pack" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);">Start Pro</a>
1075
1298
  </div>
1076
1299
  </div>
1077
1300
  </div>
@@ -1102,8 +1325,9 @@ __GA_BOOTSTRAP__
1102
1325
  <!-- HOW IT WORKS -->
1103
1326
  <section class="how-it-works" id="how-it-works">
1104
1327
  <div class="container">
1105
- <div class="section-label">Current release</div>
1328
+ <div class="section-label">Self-improving enforcement</div>
1106
1329
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
1330
+ <p class="section-sub" style="max-width:720px;margin:6px auto 22px;text-align:center;color:var(--text-muted);font-size:clamp(16px,1.6vw,18px);">Self-improving — but for safety, not capability: every <code>👎</code> compiles into a hard rule, and each rule regression-tests itself against your history, so it blocks the repeat and never the safe action.</p>
1107
1331
  <div class="steps">
1108
1332
  <div class="step">
1109
1333
  <div class="step-num">1</div>
@@ -1246,15 +1470,42 @@ __GA_BOOTSTRAP__
1246
1470
  <div class="container">
1247
1471
  <div class="section-label">Pricing</div>
1248
1472
  <h2 class="section-title">Stop paying for agent mistakes you already fixed.</h2>
1473
+
1474
+ <!-- At-a-glance comparison so buyers see plan differences without parsing the cards below. -->
1475
+ <div class="plan-matrix-wrap" style="max-width:1080px;margin:8px auto 28px;overflow-x:auto;">
1476
+ <table class="plan-matrix" style="width:100%;border-collapse:collapse;font-size:14px;min-width:640px;">
1477
+ <thead>
1478
+ <tr>
1479
+ <th style="text-align:left;padding:12px 14px;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);"></th>
1480
+ <th style="text-align:center;padding:12px 14px;border-bottom:1px solid var(--border);">Free<br><span style="font-size:12px;color:var(--text-muted);font-weight:400;">$0 forever</span></th>
1481
+ <th style="text-align:center;padding:12px 14px;border-bottom:1px solid var(--border);color:var(--cyan);">Pro<br><span style="font-size:12px;color:var(--text-muted);font-weight:400;">$19/mo or $149/yr</span></th>
1482
+ <th style="text-align:center;padding:12px 14px;border-bottom:1px solid var(--border);color:var(--cyan);">Enterprise<br><span style="font-size:12px;color:var(--text-muted);font-weight:400;">Custom — scoped after intake</span></th>
1483
+ </tr>
1484
+ </thead>
1485
+ <tbody>
1486
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Local PreToolUse enforcement (all agents)</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1487
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Feedback captures</td><td style="text-align:center;border-bottom:1px solid var(--border);">2/day (10 total)</td><td style="text-align:center;border-bottom:1px solid var(--border);">Unlimited</td><td style="text-align:center;border-bottom:1px solid var(--border);">Unlimited</td></tr>
1488
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Active auto-promoted prevention rules</td><td style="text-align:center;border-bottom:1px solid var(--border);">3</td><td style="text-align:center;border-bottom:1px solid var(--border);">Unlimited</td><td style="text-align:center;border-bottom:1px solid var(--border);">Unlimited</td></tr>
1489
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Lesson recall + search across sessions</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1490
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Personal dashboard + DPO export</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1491
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Hosted sync across machines</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1492
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Shared lesson database + org dashboard</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1493
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Org-wide shared enforcement + approval boundaries</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1494
+ <tr><td style="padding:10px 14px;border-bottom:1px solid var(--border);">Audit trail, SSO, regulatory gate templates</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">—</td><td style="text-align:center;border-bottom:1px solid var(--border);">✅</td></tr>
1495
+ <tr><td style="padding:10px 14px;color:var(--text-muted);">Best for</td><td style="text-align:center;color:var(--text-muted);">One developer</td><td style="text-align:center;color:var(--text-muted);">Solo operators</td><td style="text-align:center;color:var(--text-muted);">Teams &amp; regulated orgs</td></tr>
1496
+ </tbody>
1497
+ </table>
1498
+ </div>
1499
+
1249
1500
  <div class="pricing-grid">
1250
1501
  <div class="price-card free-highlight" style="border-color:var(--cyan);box-shadow:0 0 40px var(--cyan-dim), inset 0 1px 0 rgba(34,211,238,0.15);position:relative;">
1251
1502
  <div class="tier" style="color:var(--cyan);">Free</div>
1252
1503
  <div class="price">$0</div>
1253
1504
  <div class="price-sub">Block repeated mistakes daily. Forever free for solo devs.</div>
1254
- <p style="font-size:13px;color:#aaa;margin-bottom:16px;">Unlimited captures, 5 active rules. Enough to make ThumbGate part of your daily flow. Upgrade when you want the dashboard, exports, or unlimited rules.</p>
1505
+ <p style="font-size:13px;color:#aaa;margin-bottom:16px;">2 captures/day, 3 active rules. Enough to see the value upgrade when you need more.</p>
1255
1506
  <ul>
1256
- <li><strong>Unlimited feedback captures</strong> — every thumbs-down, every session</li>
1257
- <li>Up to 5 active auto-promoted prevention rules</li>
1507
+ <li><strong>2 feedback captures/day</strong> — 10 total on Free, then Pro for unlimited</li>
1508
+ <li>Up to 3 active auto-promoted prevention rules</li>
1258
1509
  <li>No recall or lesson search</li>
1259
1510
  <li>No exports (DPO, Databricks, HuggingFace)</li>
1260
1511
  <li>All MCP integrations (Claude Code, Cursor, Codex, Gemini, Amp, any MCP agent)</li>
@@ -1271,9 +1522,9 @@ __GA_BOOTSTRAP__
1271
1522
  <div class="price-card pro" data-price-dollars="19">
1272
1523
  <div class="tier">Pro</div>
1273
1524
  <div class="price">$19<span style="font-size:16px;color:var(--text-dim)">/mo</span></div>
1274
- <div class="price-sub"><strong>The free npm package runs your gates locally and never expires.</strong> Pro is what we operate for you: hosted lesson sync across all your machines, adapter matrix kept current as agent runtimes ship breaking changes, and a dashboard you don't have to babysit.</div>
1525
+ <div class="price-sub"><strong>Don't buy a tool — buy hosted sync + compatibility insurance.</strong> The free CLI runs your gates locally, but Pro is what we operate for you: secure SQLite sync across all your machines (saving you from managing database migrations manually across developer boxes) and active adapter maintenance to stay compatible with weekly breaking updates in Claude Code, Cursor, and Cline.</div>
1275
1526
  <ul>
1276
- <li><strong>Block every repeat mistake</strong> — unlimited feedback captures and prevention rules (Free caps at 5 active rules)</li>
1527
+ <li><strong>Block every repeat mistake</strong> — unlimited feedback captures and prevention rules (Free caps at 3 active rules)</li>
1277
1528
  <li><strong>Never re-explain a correction</strong> — lesson recall and search across sessions on every agent surface</li>
1278
1529
  <li><strong>See exactly which rule fired</strong> — <a href="/dashboard#insights" style="color:var(--cyan);text-decoration:underline;">Visual check debugger</a> for every blocked action and the check that fired</li>
1279
1530
  <li><strong>One install, every agent</strong> — Auto-connect so supported agents appear automatically after setup (Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode)</li>
@@ -1281,54 +1532,96 @@ __GA_BOOTSTRAP__
1281
1532
  <li><strong>Audit-ready enforcement proof</strong> — Personal local dashboard for the individual operator with auditable block history</li>
1282
1533
  <li><strong>Ship hardened agents to production</strong> — Model Hardening Advisor plus HuggingFace dataset export</li>
1283
1534
  <li><strong>Hand a PR with proof</strong> — Review-ready workflow support and proof-ready lesson bundles a reviewer can verify in 30 seconds</li>
1284
- <li><strong>Hand off without re-onboarding</strong> — Team lesson export/import for handoff or migration</li>
1535
+ <li><strong>Hand off without re-onboarding</strong> — Lesson export/import for handoff or migration</li>
1285
1536
  </ul>
1286
1537
  <div style="margin:12px 0 16px;padding:12px;border:1px solid rgba(34,211,238,0.25);border-radius:8px;background:rgba(34,211,238,0.06);">
1287
1538
  <div style="font-size:12px;color:var(--text-muted);margin-bottom:4px;">What your Pro dashboard looks like</div>
1288
1539
  <div style="font-family:var(--mono);font-size:12px;color:var(--cyan);line-height:1.6;">checks: 36 active<br>feedback: unlimited<br>exports: DPO + lessons</div>
1289
1540
  </div>
1290
1541
  <div style="font-size:11px;letter-spacing:0.08em;text-transform:uppercase;color:var(--cyan);font-weight:800;margin-bottom:8px;">PAY-NOW PRO</div>
1291
- <a href="/checkout/pro?utm_source=pricing&utm_medium=cta&utm_campaign=v2_landing&utm_content=pricing_pro&plan_id=pro" id="pro-checkout-link" class="btn-pro" onclick="handleProCheckout();return false;" style="display:block;width:100%;text-align:center;padding:12px;font-size:15px;">Upgrade to Pro — $19/mo</a>
1542
+ <a href="/checkout/pro?utm_source=pricing&utm_medium=cta&utm_campaign=v2_landing&utm_content=pricing_pro&cta_id=pricing_pro_checkout&cta_placement=pricing&plan_id=pro&landing_path=%2F" id="pro-checkout-link" class="btn-pro" data-revenue-cta data-cta-id="pricing_pro_checkout" data-cta-placement="pricing" data-tier="pro" data-plan-id="pro" data-price="19" onclick="handleProCheckout();return false;" style="display:block;width:100%;text-align:center;padding:12px;font-size:15px;">Upgrade to Pro — $19/mo</a>
1292
1543
  <p style="font-size:11px;color:var(--text-muted);margin-top:8px;text-align:center;">Billed today · cancel anytime.</p>
1293
1544
  <input type="email" id="pro-email" data-buyer-email placeholder="you@company.com" style="margin-top:10px;width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-raised);color:var(--text);font-size:14px;">
1294
1545
  </div>
1295
- <div class="price-card team">
1296
- <div class="tier">Team</div>
1297
- <div class="price">$49<span style="font-size:16px;color:var(--text-dim)">/seat/mo</span></div>
1298
- <div class="price-sub">Shared enforcement memory for one team workflow first.</div>
1299
- <ul>
1300
- <li>Everything in Pro for each seat</li>
1301
- <li>Shared lesson database for Team seats, with export/import and shared workflow rules</li>
1302
- <li>Org dashboard visibility across agent surfaces</li>
1303
- <li>Hosted review views for team verification evidence</li>
1304
- <li>Check template library for deploys, publish, refunds, and DB work</li>
1305
- <li>Workflow hardening sprint intake for approval boundaries and rollback safety</li>
1306
- <li>Email support during pilot rollout</li>
1307
- </ul>
1308
- <a href="#workflow-sprint-intake" onclick="try{posthog.capture('team_intake_click',{cta:'team_intake',seats:3,price:0})}catch(_){};sendFirstPartyTelemetry('team_intake_started',{ctaId:'pricing_team_intake',ctaPlacement:'pricing',planId:'team',seatCount:3,price:0});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'team_workflow_intake'});" class="btn-team" style="display:block;text-align:center;">Send team workflow first →</a>
1309
- <p style="font-size:11px;color:var(--text-muted);margin-top:8px;text-align:center;">Team is $49/seat/mo with a 3-seat minimum, but team rollouts start through intake so the workflow, shared rules, and rollout proof are explicit before checkout.</p>
1310
- </div>
1311
1546
  </div>
1547
+ <div class="pricing-matrix" aria-label="Plan capability comparison">
1548
+ <table>
1549
+ <caption>Compare plans at a glance</caption>
1550
+ <thead>
1551
+ <tr>
1552
+ <th scope="col">Capability</th>
1553
+ <th scope="col">Free</th>
1554
+ <th scope="col">Pro</th>
1555
+ <th scope="col">Enterprise</th>
1556
+ </tr>
1557
+ </thead>
1558
+ <tbody>
1559
+ <tr>
1560
+ <td><strong>Best for</strong></td>
1561
+ <td>Solo proof that a repeat mistake can be blocked</td>
1562
+ <td>One operator who wants hosted sync, dashboard proof, and exports</td>
1563
+ <td>Teams &amp; regulated orgs — one person's correction protects every seat; banking, insurance, healthcare, public sector, audited workflows</td>
1564
+ </tr>
1565
+ <tr>
1566
+ <td><strong>Price</strong></td>
1567
+ <td>$0</td>
1568
+ <td>$19/mo or $149/yr</td>
1569
+ <td>Custom — scoped after intake</td>
1570
+ </tr>
1571
+ <tr>
1572
+ <td><strong>Feedback captures</strong></td>
1573
+ <td>2/day, 10 total</td>
1574
+ <td>Unlimited</td>
1575
+ <td>Unlimited, shared across the org; custom retention and evidence policy</td>
1576
+ </tr>
1577
+ <tr>
1578
+ <td><strong>Active prevention rules</strong></td>
1579
+ <td>3 active rules</td>
1580
+ <td>Unlimited personal rules</td>
1581
+ <td>Shared org rules, policy templates, approvals, and audit export</td>
1582
+ </tr>
1583
+ <tr>
1584
+ <td><strong>Dashboard and proof</strong></td>
1585
+ <td>Local CLI evidence</td>
1586
+ <td>Personal dashboard, check debugger, DPO/HF exports</td>
1587
+ <td>Org dashboard, hosted review views, rollout proof, SIEM-ready decision trail and compliance evidence</td>
1588
+ </tr>
1589
+ <tr>
1590
+ <td><strong>How to start</strong></td>
1591
+ <td><code>npx thumbgate init</code></td>
1592
+ <td>Self-serve Stripe checkout</td>
1593
+ <td>Send one repeated workflow failure first — intake before checkout</td>
1594
+ </tr>
1595
+ </tbody>
1596
+ </table>
1597
+ </div>
1598
+ <p class="pricing-note">Free proves the enforcement loop. Pro removes solo limits. Enterprise plans start through intake because shared rules, permissions, rollback paths, and rollout proof must be explicit before checkout.</p>
1312
1599
  <div style="max-width:1080px;margin:24px auto 0;">
1313
- <div class="price-card regulated" style="border:1px solid var(--cyan);background:linear-gradient(180deg, rgba(34,211,238,0.04), transparent);padding:24px 28px;">
1600
+ <div class="price-card enterprise" style="border:1px solid var(--cyan);background:linear-gradient(180deg, rgba(34,211,238,0.04), transparent);padding:24px 28px;">
1314
1601
  <div style="display:flex;flex-wrap:wrap;align-items:flex-start;gap:24px;justify-content:space-between;">
1315
1602
  <div style="flex:1 1 420px;min-width:280px;">
1316
- <div class="tier" style="color:var(--cyan);">Regulated</div>
1317
- <div style="font-size:14px;color:var(--text-muted);margin:4px 0 12px;letter-spacing:0.04em;text-transform:uppercase;">Banking · Insurance · Healthcare · Public sector</div>
1318
- <div style="font-size:18px;color:var(--text);margin-bottom:6px;font-weight:700;">Regulated workflow review</div>
1319
- <div class="price-sub" style="margin-bottom:14px;">For teams operating AI coding agents under DORA, the EU AI Act, HIPAA, or comparable audit pressure. Pricing is scoped after intake because the buyer needs evidence, deployment boundaries, and approval ownership before checkout.</div>
1603
+ <div class="tier" style="color:var(--cyan);">Enterprise</div>
1604
+ <div style="font-size:14px;color:var(--text-muted);margin:4px 0 12px;letter-spacing:0.04em;text-transform:uppercase;">Engineering teams · Banking · Insurance · Healthcare · Public sector</div>
1605
+ <div style="font-size:18px;color:var(--text);margin-bottom:6px;font-weight:700;">Shared enforcement for teams &amp; regulated workflows — custom pricing</div>
1606
+ <div class="price-sub" style="margin-bottom:14px;">For teams that need one correction to protect every developer and agent across shared repos, CI, and approval policies — including teams operating under DORA, the EU AI Act, HIPAA, or comparable audit pressure. Pricing is scoped after intake because the buyer needs evidence, deployment boundaries, and approval ownership before checkout.</div>
1320
1607
  <ul style="margin-bottom:0;">
1608
+ <li><strong>Shared lesson database</strong> — one hosted, shared lesson DB so one team member's correction becomes every developer's prevention rule across the org</li>
1609
+ <li><strong>Org dashboard</strong> — active agents, check hit-rates, and risk surfaces across the whole team</li>
1610
+ <li><strong>Shared enforcement memory</strong> — approval boundaries and rollback safety applied org-wide, not per machine</li>
1321
1611
  <li><strong>Audit-grade decision trail</strong> — every PreToolUse evaluation logged with the rule that fired, ready for SIEM export</li>
1322
1612
  <li><strong>Immutable rule provenance</strong> — each prevention rule traceable to the feedback event that generated it</li>
1323
1613
  <li><strong>Self-managed deployment</strong> — air-gapped or VPC-hosted; no agent state leaves your boundary</li>
1614
+ <li><strong>Dialogflow CX fulfillment guard</strong> — ThumbGate's pre-action gate sits in front of your Dialogflow CX webhook fulfillment, in your own GCP tenant, so risky or repeat turns are blocked before they touch a database, CRM, or billing system (white-glove design-partner pilot)</li>
1615
+ <li><strong>Vertex AI / Gemini scoring, in-tenant</strong> — risk and planning scoring runs on Gemini via Vertex (<code>npx thumbgate setup-vertex</code>); no conversational data leaves your VPC</li>
1324
1616
  <li><strong>DORA / EU AI Act evidence packaging</strong> — machine-readable reports aligned to Article 6, 28, and high-risk provider monitoring obligations</li>
1325
1617
  <li><strong>SSO + role separation</strong> — operator, reviewer, and auditor roles enforced at the gate layer</li>
1618
+ <li><strong>Enterprise Data Chat</strong> — local ThumbGate data Q&amp;A with Dialogflow CX / Vertex-ready governance; live cloud-agent claims require deployment evidence first</li>
1326
1619
  <li><strong>Workflow proof plan included</strong> — a scoped review that proves the boundary against one of your real repeated-failure cases before broader rollout</li>
1327
1620
  <li><strong>Quarterly red-team review</strong> — prompt-injection and policy-bypass exercises with written findings</li>
1328
1621
  </ul>
1329
1622
  </div>
1330
1623
  <div style="flex:0 0 260px;min-width:240px;display:flex;flex-direction:column;gap:10px;">
1331
- <a href="#workflow-sprint-intake?tier=regulated" onclick="try{posthog.capture('regulated_intake_click',{cta:'regulated_contact_sales',placement:'pricing'})}catch(_){};sendFirstPartyTelemetry('regulated_intake_started',{ctaId:'pricing_regulated_intake',ctaPlacement:'pricing',planId:'regulated'});" class="btn-team" style="display:block;text-align:center;background:var(--cyan);color:#06121a;font-weight:800;">Start regulated intake →</a>
1624
+ <a href="/?tier=enterprise#workflow-sprint-intake" onclick="try{posthog.capture('enterprise_intake_click',{cta:'enterprise_contact_sales',placement:'pricing'})}catch(_){};sendFirstPartyTelemetry('enterprise_intake_started',{ctaId:'pricing_enterprise_intake',ctaPlacement:'pricing',planId:'enterprise'});" class="btn-team" style="display:block;text-align:center;background:var(--cyan);color:#06121a;font-weight:800;">Start enterprise intake →</a>
1332
1625
  <a href="/learn/regulated-agent-execution-boundary" style="display:block;text-align:center;padding:10px 14px;font-size:13px;color:var(--cyan);border:1px solid var(--cyan);border-radius:8px;text-decoration:none;">Read the build-vs-buy thesis first</a>
1333
1626
  <p style="font-size:11px;color:var(--text-muted);margin:0;text-align:center;line-height:1.5;">Pricing is workflow-scoped and shared after the intake call. Annual pre-pay available.</p>
1334
1627
  </div>
@@ -1340,21 +1633,21 @@ __GA_BOOTSTRAP__
1340
1633
 
1341
1634
  <section class="compatibility" id="workflow-sprint-intake">
1342
1635
  <div class="container">
1343
- <div class="section-label">Team Pilot</div>
1636
+ <div class="section-label">Enterprise Pilot</div>
1344
1637
  <h2 class="section-title">Start the AI Agent Governance Sprint with one repeat failure</h2>
1345
1638
  <p style="color:var(--text-dim);max-width:720px;margin:0 auto 16px;">This is the fastest path to first paid value for teams. Start with one repo, one workflow owner, and one blocker. The intake is designed to prove that ThumbGate reduces review churn, rollout risk, or repeated agent mistakes before a wider rollout.</p>
1346
1639
  <div class="team-intake-panel">
1347
1640
  <div class="team-intake-panel-head">
1348
1641
  <div>
1349
1642
  <h3>Tell us the workflow. Get a proof plan.</h3>
1350
- <p>The highest-fit Team buyer is already feeling one repeated failure. Send the workflow first so the next step is scoped around the real blocker instead of a blind checkout.</p>
1643
+ <p>The highest-fit Enterprise buyer is already feeling one repeated failure. Send the workflow first so the next step is scoped around the real blocker instead of a blind checkout.</p>
1351
1644
  </div>
1352
1645
  <span class="team-intake-badge">30-minute intake</span>
1353
1646
  </div>
1354
1647
  <div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
1355
1648
  <div>
1356
- <strong>Team checkout happens after scope.</strong>
1357
- <span>Send the workflow first. We will qualify the blocker, confirm whether Pro, Team, or a scoped rollout is the right next step, and keep the purchase path tied to real evidence.</span>
1649
+ <strong>Enterprise checkout happens after scope.</strong>
1650
+ <span>Send the workflow first. We will qualify the blocker, confirm whether Pro or a scoped Enterprise rollout is the right next step, and keep the purchase path tied to real evidence.</span>
1358
1651
  </div>
1359
1652
  <a href="#team-pilot-intake-form" onclick="sendFirstPartyTelemetry('workflow_sprint_recovery_intake_clicked',{ctaId:'team_workflow_sprint_recovery_intake',ctaPlacement:'team_intake_recovery',planId:'team',offer:'workflow_hardening_sprint',reason:'scope_first'});sendGa4Event('generate_lead',{currency:'USD',value:0,method:'workflow_sprint_recovery_intake'});">Send workflow first</a>
1360
1653
  </div>
@@ -1374,7 +1667,7 @@ __GA_BOOTSTRAP__
1374
1667
  <textarea class="full" name="blocker" placeholder="What repeat mistake, rollout blocker, or team handoff failure keeps happening?" required></textarea>
1375
1668
  <textarea class="full" name="note" placeholder="Optional context: team size, repos involved, target rollout date, or what you need to prove internally."></textarea>
1376
1669
  <div class="full">
1377
- <button type="submit" class="btn-team">Start Team Pilot Intake</button>
1670
+ <button type="submit" class="btn-team">Start Enterprise Pilot Intake</button>
1378
1671
  </div>
1379
1672
  </form>
1380
1673
  </div>
@@ -1405,7 +1698,7 @@ __GA_BOOTSTRAP__
1405
1698
  </div>
1406
1699
  <div class="faq-item">
1407
1700
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What AI agents and editors does this work with?</div>
1408
- <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and any other MCP-compatible agent. Cursor ships with a plugin bundle in this repo. Codex now ships both a standalone plugin bundle and a repo-local app plugin profile, and the published download is linked directly from this page. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
1701
+ <div class="faq-a">ThumbGate works with Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and any other MCP-compatible agent. The Cursor plugin bundle ships in this repo and installs today via <code>npx thumbgate init --agent cursor</code>; the Cursor Marketplace listing was submitted 2026-05-19 and is still pending Cursor's manual review, so it is not yet discoverable from the in-app Marketplace. Codex now ships both a standalone plugin bundle and a repo-local app plugin profile, and the published download is linked directly from this page. VS Code works when you run an MCP-compatible agent inside it, but this repo does not ship a standalone VS Code extension today.</div>
1409
1702
  </div>
1410
1703
  <div class="faq-item">
1411
1704
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I have to chat inside the ThumbGate GPT for enforcement?</div>
@@ -1417,15 +1710,15 @@ __GA_BOOTSTRAP__
1417
1710
  </div>
1418
1711
  <div class="faq-item">
1419
1712
  <button class="faq-q" type="button" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How do we keep high-risk autonomous runs off the host?</button>
1420
- <div class="faq-a">ThumbGate is the control plane, not just a prompt layer. Workflow Sentinel predicts blast radius before execution, and risky local autonomy can be routed into Docker Sandboxes instead of running directly on the host. Team workflows also have a signed hosted sandbox lane for isolated dispatch when local repo access is not required.</div>
1713
+ <div class="faq-a">ThumbGate is the control plane, not just a prompt layer. Workflow Sentinel predicts blast radius before execution, and risky local autonomy can be routed into Docker Sandboxes instead of running directly on the host. Enterprise workflows also have a signed hosted sandbox lane for isolated dispatch when local repo access is not required.</div>
1421
1714
  </div>
1422
1715
  <div class="faq-item">
1423
1716
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How do we trust a new package release?</div>
1424
- <div class="faq-a">ThumbGate does not rely on vibes. Release-relevant PRs need a Changeset, SemVer rules keep version bumps honest, sync checks keep manifests aligned, proof lanes run before merge, and the exact main-branch merge commit is verified before the work is called done.</div>
1717
+ <div class="faq-a">ThumbGate does not rely on vibes, making it the safety net for vibe coding. Release-relevant PRs need a Changeset, SemVer rules keep version bumps honest, sync checks keep manifests aligned, proof lanes run before merge, and the exact main-branch merge commit is verified before the work is called done.</div>
1425
1718
  </div>
1426
1719
  <div class="faq-item">
1427
1720
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I need a cloud account?</div>
1428
- <div class="faq-a">No. Free keeps local enforcement on your machine with unlimited feedback captures, up to 5 active auto-promoted prevention rules, built-in safety checks, and hook blocking. Recall, lesson search, unlimited rules, and exports open up on Pro. No cloud account is required. The business starts when a team wants shared rules, approval boundaries, hosted review views, org dashboard visibility, and proof that survives handoffs. Pro is the optional solo side lane for a personal dashboard, DPO export, and team lesson export/import — share lessons across projects so one team's mistakes become every team's prevention rules.</div>
1721
+ <div class="faq-a">No. Free keeps local enforcement on your machine with 2 feedback captures/day, up to 3 active auto-promoted prevention rules, built-in safety checks, and hook blocking. Recall, lesson search, unlimited rules, unlimited captures, and exports open up on Pro. No cloud account is required. The business starts when a team wants shared rules, approval boundaries, hosted review views, org dashboard visibility, and proof that survives handoffs. Pro is the optional solo side lane for a personal dashboard, DPO export, and team lesson export/import — share lessons across projects so one team's mistakes become every team's prevention rules.</div>
1429
1722
  </div>
1430
1723
  <div class="faq-item">
1431
1724
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What if my thumbs-down is vague?</div>
@@ -1435,9 +1728,21 @@ __GA_BOOTSTRAP__
1435
1728
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How are pre-action checks different from prompt rules?</div>
1436
1729
  <div class="faq-a">Prompt rules are a starting point, not a finish line. Without prompt evaluation you do not know whether they still hold up under real tool use. ThumbGate adds the human-in-the-loop measurement loop and the enforcement layer: proof lanes, ThumbGate Bench, and self-heal checks show whether behavior improved, and Pre-Action Checks block the action before execution when it did not.</div>
1437
1730
  </div>
1731
+ <div class="faq-item">
1732
+ <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How does ThumbGate fit the agentic development cycle?</div>
1733
+ <div class="faq-a">Agentic development is not just generation. Teams need Guide, Generate, Verify, and Solve working as a repeatable loop. ThumbGate is the pre-action execution gate in that loop: guidance and feedback become rules, generated tool calls are checked before execution, verification evidence is required for risky actions, and solved failures become reusable prevention gates.</div>
1734
+ </div>
1438
1735
  <div class="faq-item">
1439
1736
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What does Pro cost?</div>
1440
- <div class="faq-a">Pro is $19/mo or $149/yr for individual operators and bills immediately through Stripe. Team is $49/seat/mo with a 3-seat minimum and starts through the workflow intake so scope, shared rules, and rollout proof are explicit before a team rollout.</div>
1737
+ <div class="faq-a">Pro is $19/mo or $149/yr for individual operators and bills immediately through Stripe. Enterprise is custom pricing, scoped after intake, and starts through the workflow intake so scope, shared rules, and rollout proof are explicit before a rollout.</div>
1738
+ </div>
1739
+ <div class="faq-item">
1740
+ <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Does ThumbGate support enterprise Google Cloud / Vertex AI?</div>
1741
+ <div class="faq-a">Yes. <code>npx thumbgate setup-vertex</code> detects your active gcloud session, enables the Vertex AI API on your Google Cloud project, and configures secure Application Default Credentials (ADC) so evaluations run within your corporate VPC. For Dialogflow CX, the Enterprise pilot puts ThumbGate's pre-action gate in front of your DFCX webhook fulfillment (deployed in your own tenant) so risky or repeat turns are blocked before they touch a database, CRM, or billing system. It's a white-glove design-partner pilot — ThumbGate gates your own Dialogflow CX agent; it does not host a Dialogflow CX agent for you.</div>
1742
+ </div>
1743
+ <div class="faq-item">
1744
+ <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">How does ThumbGate contain enterprise API costs?</div>
1745
+ <div class="faq-a">ThumbGate prevents runaway API costs through a local client-side token ledger (FrontierBudget) that enforces strict cost-containment limits (such as keeping monthly costs under $10/mo). Because GCP billing console alerts are delayed, our local circuit breaker halts runaway agent loops in milliseconds to guarantee budget protection.</div>
1441
1746
  </div>
1442
1747
  </div>
1443
1748
  </div>
@@ -1472,7 +1777,7 @@ __GA_BOOTSTRAP__
1472
1777
  </div>
1473
1778
  <div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;align-items:center;margin-top:12px;opacity:0.7;">
1474
1779
  <a href="https://github.com/IgorGanapolsky/ThumbGate/releases/latest/download/thumbgate-claude-desktop.mcpb" class="btn-gpt-page" target="_blank" rel="noopener" onclick="posthog.capture('final_claude_extension_click',{cta:'install_claude_extension'})" style="padding:8px 16px;font-size:12px;background:#d97706;color:#fff;">Install Claude Extension</a>
1475
- <a href="/go/pro?utm_source=website&utm_medium=final_cta&utm_campaign=pro_upgrade&cta_id=final_go_pro&cta_placement=final_cta&plan_id=pro&landing_path=%2F" onclick="posthog.capture('final_pro_click',{cta:'go_pro'})" class="btn-pro" style="padding:8px 16px;font-size:12px;opacity:0.85;">Upgrade to Pro — $19/mo</a>
1780
+ <a href="/checkout/pro?utm_source=website&utm_medium=final_cta&utm_campaign=pro_upgrade&cta_id=final_go_pro&cta_placement=final_cta&plan_id=pro&landing_path=%2F" data-revenue-cta data-cta-id="final_go_pro" data-cta-placement="final_cta" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);try{posthog.capture('final_pro_click',{cta:'final_go_pro',tier:'pro',price:19})}catch(_){}" class="btn-pro" style="padding:8px 16px;font-size:12px;opacity:0.85;">Upgrade to Pro — $19/mo</a>
1476
1781
  <a href="#workflow-sprint-intake" class="btn-team" style="padding:8px 16px;font-size:12px;">Start Workflow Hardening Sprint</a>
1477
1782
  </div>
1478
1783
  </div>
@@ -1489,19 +1794,19 @@ __GA_BOOTSTRAP__
1489
1794
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1490
1795
  <a href="/blog">Blog</a>
1491
1796
  </div>
1492
- <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.20.0</span>
1797
+ <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.27.20</span>
1493
1798
  </div>
1494
1799
  </footer>
1495
1800
 
1496
1801
  <!-- STICKY BOTTOM CTA -->
1497
1802
  <div class="sticky-cta" id="sticky-cta">
1498
- <span class="sticky-cta-text"><strong>npx thumbgate init</strong> — free CLI, zero friction</span>
1803
+ <span class="sticky-cta-text"><strong>Pro unlocks recall, sync, exports</strong> — free CLI is capped at 2 captures/day</span>
1499
1804
  <div class="hero-install" onclick="copyInstall(this)" title="Click to copy" style="margin-bottom:0;padding:8px 16px;font-size:13px;">
1500
1805
  <span class="prompt">$</span>
1501
1806
  <span class="cmd">npx thumbgate init</span>
1502
1807
  <span class="copy-hint">copy</span>
1503
1808
  </div>
1504
- <a href="/go/pro?utm_source=website&utm_medium=sticky_cta&utm_campaign=pro_upgrade&cta_id=sticky_go_pro&cta_placement=sticky_cta&plan_id=pro&landing_path=%2F" onclick="posthog.capture('sticky_pro_click',{cta:'go_pro'})" class="btn-pro" style="padding:8px 16px;font-size:12px;border-radius:6px;white-space:nowrap;">Go Pro — $19/mo</a>
1809
+ <a href="/checkout/pro?utm_source=website&utm_medium=sticky_cta&utm_campaign=pro_upgrade&cta_id=sticky_go_pro&cta_placement=sticky_cta&plan_id=pro&landing_path=%2F" data-revenue-cta data-cta-id="sticky_go_pro" data-cta-placement="sticky_cta" data-tier="pro" data-plan-id="pro" data-price="19" onclick="trackRevenueCta(this);try{posthog.capture('sticky_pro_click',{cta:'sticky_go_pro',tier:'pro',price:19})}catch(_){}" class="btn-pro" style="padding:8px 16px;font-size:12px;border-radius:6px;white-space:nowrap;">Go Pro — $19/mo</a>
1505
1810
  </div>
1506
1811
  <script>
1507
1812
  (function() {
@@ -1579,6 +1884,53 @@ function sendGa4Event(eventName, params) {
1579
1884
  globalThis.gtag('event', eventName, params || {});
1580
1885
  }
1581
1886
 
1887
+ function readRevenueCtaMeta(el) {
1888
+ var label = (el && el.textContent ? el.textContent : '').trim().substring(0, 80);
1889
+ var section = el && el.closest ? el.closest('section') : null;
1890
+ var fallbackPlacement = section ? (section.id || String(section.className || '').split(' ')[0] || 'unknown') : 'unknown';
1891
+ return {
1892
+ ctaId: (el && el.dataset && el.dataset.ctaId) || 'pro_checkout',
1893
+ ctaPlacement: (el && el.dataset && el.dataset.ctaPlacement) || fallbackPlacement,
1894
+ tier: (el && el.dataset && el.dataset.tier) || 'pro',
1895
+ planId: (el && el.dataset && el.dataset.planId) || 'pro',
1896
+ price: Number((el && el.dataset && el.dataset.price) || proPriceDollars || 19),
1897
+ billing: (el && el.dataset && el.dataset.billing) || 'monthly',
1898
+ label: label,
1899
+ };
1900
+ }
1901
+
1902
+ function trackRevenueCta(el) {
1903
+ var meta = readRevenueCtaMeta(el);
1904
+ var plausibleProps = {
1905
+ cta: meta.ctaId,
1906
+ cta_id: meta.ctaId,
1907
+ section: meta.ctaPlacement,
1908
+ tier: meta.tier,
1909
+ plan_id: meta.planId,
1910
+ price: meta.price,
1911
+ billing: meta.billing,
1912
+ label: meta.label,
1913
+ };
1914
+ if (typeof plausible === 'function') {
1915
+ plausible('pricing_cta_click', { props: plausibleProps });
1916
+ plausible('checkout_start', { props: plausibleProps });
1917
+ }
1918
+ sendFirstPartyTelemetry('cta_click', {
1919
+ ctaId: meta.ctaId,
1920
+ ctaPlacement: meta.ctaPlacement,
1921
+ planId: meta.planId,
1922
+ tier: meta.tier,
1923
+ price: meta.price,
1924
+ billing: meta.billing,
1925
+ label: meta.label,
1926
+ });
1927
+ sendGa4Event('begin_checkout', {
1928
+ currency: 'USD',
1929
+ value: meta.price,
1930
+ items: [{ item_id: 'pro_monthly', item_name: 'ThumbGate Pro Monthly' }],
1931
+ });
1932
+ }
1933
+
1582
1934
  function initializeTeamIntakeTelemetry() {
1583
1935
  document.querySelectorAll('[data-team-intake-form]').forEach(function(form) {
1584
1936
  var started = false;
@@ -1669,8 +2021,15 @@ function copyInstall(el) {
1669
2021
  toggleFaq(event.currentTarget);
1670
2022
  }
1671
2023
 
2024
+ // Hoist FAQ handlers to window scope so the inline `onclick="toggleFaq(this)"`
2025
+ // attributes on every FAQ question can resolve them. Without this, every FAQ
2026
+ // click silently throws ReferenceError — all 13 FAQ items on the landing
2027
+ // page are dead. Discovered by comprehensive E2E coverage in this PR.
2028
+ window.toggleFaq = toggleFaq;
2029
+ window.handleFaqKeydown = handleFaqKeydown;
2030
+
1672
2031
  /* CTA clicks */
1673
- trackClick('.btn-pro', 'checkout_start', { tier: 'pro', price: 19, billing: 'monthly' });
2032
+ trackClick('.btn-pro:not([data-revenue-cta])', 'checkout_start', { tier: 'pro', price: 19, billing: 'monthly' });
1674
2033
  trackClick('.btn-gpt-page:not(.btn-install-hero)', 'chatgpt_gpt_click', { tier: 'free', source: 'homepage_gpt' });
1675
2034
  trackClick('.btn-install-hero', 'install_guide_click', { tier: 'free', source: 'hero_install' });
1676
2035
  trackClick('.btn-pro-page:not(.btn-install-link)', 'pro_page_click', { tier: 'pro', source: 'hero' });
@@ -1678,12 +2037,13 @@ function copyInstall(el) {
1678
2037
  trackClick('.btn-team', 'workflow_sprint_intake_click', { tier: 'team', offer: 'workflow_hardening_sprint' });
1679
2038
  trackClick('.btn-free', 'install_click', { tier: 'free' });
1680
2039
  trackClick('.btn-demo-link', 'demo_click', { source: 'homepage' });
1681
- trackClick('.nav-cta', 'chatgpt_gpt_click', { tier: 'free', source: 'nav' });
2040
+ trackClick('.nav-cta:not([data-revenue-cta])', 'chatgpt_gpt_click', { tier: 'free', source: 'nav' });
1682
2041
 
1683
- /* Pricing CTA conversion tracking — fires on every Get Started / Pro / Team button click
2042
+ /* Pricing CTA conversion tracking — fires on every Get Started / Pro / Enterprise button click
1684
2043
  with section context so we can distinguish pricing section vs final CTA section clicks */
1685
2044
  document.querySelectorAll('.btn-pro, .btn-gpt-page, .btn-pro-page, .btn-install-hero, .btn-install-link, .btn-team, .btn-free, .btn-demo-link, .nav-cta').forEach(function(el) {
1686
2045
  el.addEventListener('click', function() {
2046
+ if (el.hasAttribute('data-revenue-cta')) return;
1687
2047
  var section = el.closest('section');
1688
2048
  var sectionId = section ? (section.id || section.className.split(' ')[0] || 'unknown') : 'unknown';
1689
2049
  var tier = resolvePricingClickTier(el);
@@ -1742,8 +2102,10 @@ function copyInstall(el) {
1742
2102
  ctaImpressions: [
1743
2103
  { selector: '#pro-checkout-link', ctaId: 'pricing_pro_checkout', ctaPlacement: 'pricing', planId: 'pro' },
1744
2104
  { selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
1745
- { selector: '.hero-actions .btn-pro-page', ctaId: 'hero_workflow_intake', ctaPlacement: 'hero', planId: 'team' },
1746
- { selector: '.hero-actions .hero-pro', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero', planId: 'team' },
2105
+ { selector: '.nav-cta[data-revenue-cta]', ctaId: 'nav_start_pro', ctaPlacement: 'nav', planId: 'pro' },
2106
+ { selector: '.hero-actions .hero-pro-primary', ctaId: 'hero_start_pro', ctaPlacement: 'hero', planId: 'pro' },
2107
+ { selector: '.hero-actions .btn-pro-page:not(.hero-pro-primary)', ctaId: 'hero_workflow_intake', ctaPlacement: 'hero', planId: 'team' },
2108
+ { selector: '.hero-actions .hero-pro:not(.hero-pro-primary)', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero', planId: 'team' },
1747
2109
  { selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
1748
2110
  { selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' },
1749
2111
  { selector: '#team-pilot-intake-form', ctaId: 'workflow_sprint_intake', ctaPlacement: 'team_visible_intake', planId: 'team' }
@@ -1758,6 +2120,8 @@ initializeTeamIntakeTelemetry();
1758
2120
  async function handleProCheckout() {
1759
2121
  var buyerIntent = globalThis.ThumbGateBuyerIntent;
1760
2122
  var email = document.getElementById('pro-email');
2123
+ var checkoutLink = document.getElementById('pro-checkout-link');
2124
+ trackRevenueCta(checkoutLink);
1761
2125
  var normalizedEmail = buyerIntent.normalizeBuyerEmail(email && email.value);
1762
2126
  if (!email || !buyerIntent.isValidBuyerEmail(normalizedEmail)) {
1763
2127
  email.style.border = '2px solid #f87171';
@@ -1772,16 +2136,10 @@ async function handleProCheckout() {
1772
2136
  if (globalThis.buyerJourney && typeof globalThis.buyerJourney.markEmailCaptured === 'function') {
1773
2137
  globalThis.buyerJourney.markEmailCaptured();
1774
2138
  }
1775
- var checkoutLink = document.getElementById('pro-checkout-link');
1776
2139
  var checkoutUrl = checkoutLink ? checkoutLink.href : '/checkout/pro';
1777
2140
  if (typeof plausible === 'function') {
1778
2141
  plausible('pro_email_captured', { props: { page: 'homepage', intent: 'checkout' } });
1779
2142
  }
1780
- sendGa4Event('begin_checkout', {
1781
- currency: 'USD',
1782
- value: proPriceDollars,
1783
- items: [{ item_id: 'pro_monthly', item_name: 'ThumbGate Pro Monthly' }],
1784
- });
1785
2143
  try {
1786
2144
  await buyerIntent.submitNewsletterSignup(normalizedEmail);
1787
2145
  } catch (_err) {