thumbgate 1.27.17 → 1.27.18

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 (165) hide show
  1. package/.claude-plugin/marketplace.json +85 -0
  2. package/.claude-plugin/plugin.json +3 -4
  3. package/.well-known/llms.txt +12 -33
  4. package/.well-known/mcp/server-card.json +8 -8
  5. package/README.md +30 -221
  6. package/adapters/chatgpt/openapi.yaml +1695 -0
  7. package/adapters/claude/.mcp.json +2 -2
  8. package/adapters/gemini/function-declarations.json +0 -1
  9. package/adapters/mcp/server-stdio.js +11 -263
  10. package/adapters/opencode/opencode.json +1 -1
  11. package/bench/thumbgate-bench.json +2 -2
  12. package/bin/cli.js +122 -1421
  13. package/bin/postinstall.js +27 -11
  14. package/config/gate-templates.json +0 -216
  15. package/config/gates/claim-verification.json +0 -12
  16. package/config/gates/default.json +2 -31
  17. package/config/github-about.json +2 -2
  18. package/config/mcp-allowlists.json +13 -23
  19. package/config/merge-quality-checks.json +1 -0
  20. package/config/model-candidates.json +6 -121
  21. package/openapi/openapi.yaml +0 -12
  22. package/package.json +99 -229
  23. package/public/blog.html +4 -4
  24. package/public/codex-plugin.html +20 -72
  25. package/public/compare.html +8 -31
  26. package/public/dashboard.html +166 -930
  27. package/public/federal.html +2 -2
  28. package/public/guide.html +9 -33
  29. package/public/index.html +116 -495
  30. package/public/learn.html +18 -191
  31. package/public/lessons.html +10 -168
  32. package/public/numbers.html +7 -7
  33. package/public/pro.html +11 -34
  34. package/scripts/agent-memory-lifecycle.js +0 -211
  35. package/scripts/agent-readiness.js +3 -167
  36. package/scripts/agent-reward-model.js +1 -53
  37. package/scripts/auto-promote-gates.js +10 -82
  38. package/scripts/auto-wire-hooks.js +0 -14
  39. package/scripts/billing.js +1 -93
  40. package/scripts/build-metadata.js +10 -50
  41. package/scripts/cli-feedback.js +6 -18
  42. package/scripts/cli-schema.js +0 -90
  43. package/scripts/cli-telemetry.js +1 -6
  44. package/scripts/commercial-offer.js +2 -82
  45. package/scripts/context-manager.js +6 -74
  46. package/scripts/dashboard.js +2 -68
  47. package/scripts/durability/step.js +3 -3
  48. package/scripts/export-databricks-bundle.js +1 -5
  49. package/scripts/export-dpo-pairs.js +2 -7
  50. package/scripts/feedback-loop.js +1 -145
  51. package/scripts/feedback-quality.js +0 -87
  52. package/scripts/filesystem-search.js +10 -35
  53. package/scripts/gate-stats.js +0 -89
  54. package/scripts/gates-engine.js +85 -1105
  55. package/scripts/gemini-embedding-policy.js +1 -2
  56. package/scripts/hook-runtime.js +14 -20
  57. package/scripts/hook-thumbgate-cache-updater.js +2 -18
  58. package/scripts/hybrid-feedback-context.js +7 -142
  59. package/scripts/lesson-inference.js +3 -8
  60. package/scripts/lesson-search.js +1 -17
  61. package/scripts/license.js +1 -0
  62. package/scripts/llm-client.js +9 -390
  63. package/scripts/local-model-profile.js +8 -15
  64. package/scripts/memory-scope-readiness.js +0 -159
  65. package/scripts/meta-agent-loop.js +0 -36
  66. package/scripts/operational-integrity.js +5 -39
  67. package/scripts/oss-pr-opportunity-scout.js +5 -35
  68. package/scripts/plausible-server-events.js +6 -9
  69. package/scripts/pro-local-dashboard.js +4 -4
  70. package/scripts/proxy-pointer-rag-guardrails.js +1 -42
  71. package/scripts/rate-limiter.js +13 -64
  72. package/scripts/secret-scanner.js +5 -44
  73. package/scripts/security-scanner.js +10 -260
  74. package/scripts/self-distill-agent.js +1 -3
  75. package/scripts/seo-gsd.js +2 -916
  76. package/scripts/statusline-cache-path.js +2 -17
  77. package/scripts/statusline-local-stats.js +1 -9
  78. package/scripts/statusline-meta.js +2 -28
  79. package/scripts/statusline.sh +4 -20
  80. package/scripts/telemetry-analytics.js +0 -357
  81. package/scripts/thompson-sampling.js +10 -31
  82. package/scripts/thumbgate-bench.js +1 -16
  83. package/scripts/thumbgate-search.js +19 -85
  84. package/scripts/tool-registry.js +1 -169
  85. package/scripts/vector-store.js +0 -45
  86. package/scripts/workflow-sentinel.js +53 -286
  87. package/scripts/workspace-evolver.js +2 -62
  88. package/src/api/server.js +290 -2578
  89. package/.claude/commands/dashboard.md +0 -15
  90. package/.claude/commands/thumbgate-blocked.md +0 -27
  91. package/.claude/commands/thumbgate-dashboard.md +0 -15
  92. package/.claude/commands/thumbgate-doctor.md +0 -30
  93. package/.claude/commands/thumbgate-guard.md +0 -36
  94. package/.claude/commands/thumbgate-protect.md +0 -30
  95. package/.claude/commands/thumbgate-rules.md +0 -30
  96. package/.well-known/agentic-verify.txt +0 -1
  97. package/adapters/gcp/dfcx-webhook-gate.js +0 -295
  98. package/adapters/letta/README.md +0 -41
  99. package/adapters/letta/thumbgate-letta-adapter.js +0 -133
  100. package/adapters/policy-engine/ethicore-guardian-client.js +0 -68
  101. package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +0 -260
  102. package/bench/observability-eval-suite.json +0 -26
  103. package/bin/dashboard-cli.js +0 -7
  104. package/commands/dashboard.md +0 -15
  105. package/commands/thumbgate-dashboard.md +0 -15
  106. package/config/builtin-lessons.json +0 -23
  107. package/config/gate-classifier-routing.json +0 -98
  108. package/config/post-deploy-marketing-pages.json +0 -61
  109. package/public/about.html +0 -162
  110. package/public/agent-manager.html +0 -179
  111. package/public/agents-cost-savings.html +0 -153
  112. package/public/ai-malpractice-prevention.html +0 -818
  113. package/public/assets/brand/github-social-preview.png +0 -0
  114. package/public/assets/brand/thumbgate-icon-512.png +0 -0
  115. package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
  116. package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
  117. package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
  118. package/public/assets/brand/thumbgate-logo-transparent.svg +0 -22
  119. package/public/assets/brand/thumbgate-mark-inline-v3.svg +0 -19
  120. package/public/assets/brand/thumbgate-mark-pro.svg +0 -23
  121. package/public/assets/brand/thumbgate-mark-team.svg +0 -26
  122. package/public/assets/brand/thumbgate-mark.svg +0 -21
  123. package/public/assets/brand/thumbgate-wordmark.svg +0 -20
  124. package/public/assets/claude-thumbgate-statusbar.svg +0 -8
  125. package/public/assets/codex-thumbgate-statusbar-test.svg +0 -9
  126. package/public/assets/legal-intake-control-flow.svg +0 -66
  127. package/public/brand/thumbgate-mark.svg +0 -19
  128. package/public/brand/thumbgate-og.svg +0 -16
  129. package/public/chatgpt-app.html +0 -330
  130. package/public/codex-enterprise.html +0 -123
  131. package/public/js/buyer-intent.js +0 -672
  132. package/public/pricing.html +0 -399
  133. package/scripts/action-receipts.js +0 -324
  134. package/scripts/activation-quickstart.js +0 -187
  135. package/scripts/agent-operations-planner.js +0 -621
  136. package/scripts/ai-component-inventory.js +0 -367
  137. package/scripts/async-eval-observability.js +0 -236
  138. package/scripts/audit.js +0 -65
  139. package/scripts/aws-blocks-guardrails.js +0 -228
  140. package/scripts/classifier-routing.js +0 -130
  141. package/scripts/dashboard-chat.js +0 -332
  142. package/scripts/feedback-aggregate.js +0 -281
  143. package/scripts/feedback-sanitizer.js +0 -105
  144. package/scripts/hob-pack.js +0 -591
  145. package/scripts/hook-stop-anti-claim.js +0 -301
  146. package/scripts/install-shim.js +0 -87
  147. package/scripts/mcp-oauth.js +0 -293
  148. package/scripts/noop-detect.js +0 -285
  149. package/scripts/omlx-smoke.js +0 -192
  150. package/scripts/parallel-workflow-orchestrator.js +0 -293
  151. package/scripts/plan-gate.js +0 -243
  152. package/scripts/plausible-domain-config.js +0 -99
  153. package/scripts/qa-scenario-planner.js +0 -136
  154. package/scripts/repeat-metric.js +0 -137
  155. package/scripts/secret-fixture-tokens.js +0 -61
  156. package/scripts/secret-redaction.js +0 -166
  157. package/scripts/self-harness-optimizer.js +0 -141
  158. package/scripts/self-healing-check.js +0 -193
  159. package/scripts/silent-failure-cluster.js +0 -531
  160. package/scripts/statusline-cache-read.js +0 -57
  161. package/scripts/sync-telemetry-from-prod.js +0 -374
  162. package/scripts/tool-contract-validator.js +0 -76
  163. package/scripts/trajectory-scorer.js +0 -63
  164. package/scripts/verify-marketing-pages-deployed.js +0 -195
  165. package/scripts/visitor-journey.js +0 -172
package/public/index.html CHANGED
@@ -11,23 +11,20 @@ __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 — 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.">
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.">
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:url" content="__APP_ORIGIN__/">
20
- <meta property="og:image" content="https://thumbgate.ai/og.png">
19
+ <meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
21
20
  <meta name="twitter:card" content="summary_large_image">
22
- <meta name="twitter:image" content="https://thumbgate.ai/og.png">
23
- <meta name="thumbgate-version" content="1.27.17">
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">
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">
27
24
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
28
25
 
29
26
  <!-- Privacy-friendly analytics by Plausible -->
30
- <script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.tagged-events.js"></script>
27
+ <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
31
28
  __GA_BOOTSTRAP__
32
29
 
33
30
  <script>
@@ -39,41 +36,14 @@ __GA_BOOTSTRAP__
39
36
  const proPriceDollars = Number('__PRO_PRICE_DOLLARS__') || 19;
40
37
  </script>
41
38
 
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
-
69
39
  <script type="application/ld+json">
70
40
  {
71
41
  "@context": "https://schema.org",
72
42
  "@type": "Organization",
73
43
  "name": "ThumbGate",
74
44
  "alternateName": "thumbgate",
75
- "url": "https://thumbgate.ai",
76
- "logo": "https://thumbgate.ai/assets/brand/thumbgate-logo-1200x360.png",
45
+ "url": "https://thumbgate-production.up.railway.app",
46
+ "logo": "https://thumbgate-production.up.railway.app/assets/brand/thumbgate-logo-1200x360.png",
77
47
  "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.",
78
48
  "founder": {
79
49
  "@type": "Person",
@@ -116,7 +86,6 @@ __GA_BOOTSTRAP__
116
86
  "ThumbGate GPT for ChatGPT — preflight risky commands, refunds, deploys, and PR actions, capture typed thumbs-up/down lessons, and route users into local enforcement",
117
87
  "Workflow Sentinel — score blast radius before PR, merge, release, and publish actions fire",
118
88
  "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",
120
89
  "Environment inspection evidence — require read-before-write, screenshots, API response checks, tests, or output validation for open-ended agent loops",
121
90
  "Parallel branch budgets — prevent agent desktops and fan-out workflows from silently multiplying token spend",
122
91
  "Docker Sandboxes routing — move high-risk local runs into isolated microVM-backed execution",
@@ -143,10 +112,11 @@ __GA_BOOTSTRAP__
143
112
  },
144
113
  {
145
114
  "@type": "Offer",
146
- "name": "Enterprise",
115
+ "name": "Team",
116
+ "price": "49",
147
117
  "priceCurrency": "USD",
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"
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"
150
120
  },
151
121
  {
152
122
  "@type": "Offer",
@@ -154,7 +124,7 @@ __GA_BOOTSTRAP__
154
124
  "price": "19",
155
125
  "priceCurrency": "USD",
156
126
  "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",
157
- "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F"
127
+ "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F"
158
128
  },
159
129
  {
160
130
  "@type": "Offer",
@@ -162,7 +132,7 @@ __GA_BOOTSTRAP__
162
132
  "price": "149",
163
133
  "priceCurrency": "USD",
164
134
  "description": "Annual Pro for individual operators who want personal enforcement proof, the local dashboard, and proof-ready exports",
165
- "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2F"
135
+ "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&billing_cycle=annual&landing_path=%2F"
166
136
  }
167
137
  ],
168
138
  "potentialAction": [
@@ -171,7 +141,7 @@ __GA_BOOTSTRAP__
171
141
  "name": "Install ThumbGate Free",
172
142
  "target": {
173
143
  "@type": "EntryPoint",
174
- "urlTemplate": "https://thumbgate.ai/guide",
144
+ "urlTemplate": "https://thumbgate-production.up.railway.app/guide",
175
145
  "actionPlatform": [
176
146
  "https://schema.org/DesktopWebPlatform"
177
147
  ]
@@ -182,7 +152,7 @@ __GA_BOOTSTRAP__
182
152
  "name": "Start ThumbGate Pro",
183
153
  "target": {
184
154
  "@type": "EntryPoint",
185
- "urlTemplate": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F",
155
+ "urlTemplate": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F",
186
156
  "actionPlatform": [
187
157
  "https://schema.org/DesktopWebPlatform"
188
158
  ]
@@ -192,7 +162,7 @@ __GA_BOOTSTRAP__
192
162
  "name": "Pro Monthly",
193
163
  "price": "19",
194
164
  "priceCurrency": "USD",
195
- "url": "https://thumbgate.ai/checkout/pro?plan_id=pro&landing_path=%2F"
165
+ "url": "https://thumbgate-production.up.railway.app/checkout/pro?plan_id=pro&landing_path=%2F"
196
166
  }
197
167
  },
198
168
  {
@@ -200,7 +170,7 @@ __GA_BOOTSTRAP__
200
170
  "name": "Start Workflow Hardening Sprint intake",
201
171
  "target": {
202
172
  "@type": "EntryPoint",
203
- "urlTemplate": "https://thumbgate.ai/#workflow-sprint-intake",
173
+ "urlTemplate": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
204
174
  "actionPlatform": [
205
175
  "https://schema.org/DesktopWebPlatform"
206
176
  ]
@@ -219,21 +189,21 @@ __GA_BOOTSTRAP__
219
189
  "provider": {
220
190
  "@type": "Organization",
221
191
  "name": "ThumbGate",
222
- "url": "https://thumbgate.ai"
192
+ "url": "https://thumbgate-production.up.railway.app"
223
193
  },
224
- "url": "https://thumbgate.ai/#workflow-sprint-intake",
194
+ "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
225
195
  "description": "Founder-led workflow hardening for one AI-agent workflow that needs approval boundaries, rollback safety, and rollout proof before wider team rollout.",
226
196
  "offers": {
227
197
  "@type": "Offer",
228
198
  "name": "Workflow Hardening Sprint intake",
229
- "url": "https://thumbgate.ai/#workflow-sprint-intake"
199
+ "url": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake"
230
200
  },
231
201
  "potentialAction": {
232
202
  "@type": "CommunicateAction",
233
203
  "name": "Book a workflow hardening intake",
234
204
  "target": {
235
205
  "@type": "EntryPoint",
236
- "urlTemplate": "https://thumbgate.ai/#workflow-sprint-intake",
206
+ "urlTemplate": "https://thumbgate-production.up.railway.app/#workflow-sprint-intake",
237
207
  "actionPlatform": [
238
208
  "https://schema.org/DesktopWebPlatform"
239
209
  ]
@@ -337,7 +307,7 @@ __GA_BOOTSTRAP__
337
307
  "name": "How does ThumbGate reduce host blast radius for high-risk local runs?",
338
308
  "acceptedAnswer": {
339
309
  "@type": "Answer",
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."
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."
341
311
  }
342
312
  },
343
313
  {
@@ -348,14 +318,6 @@ __GA_BOOTSTRAP__
348
318
  "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."
349
319
  }
350
320
  },
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
- },
359
321
  {
360
322
  "@type": "Question",
361
323
  "name": "How does ThumbGate prevent AI slop and protect brand authenticity?",
@@ -411,9 +373,10 @@ __GA_BOOTSTRAP__
411
373
  /* NAV */
412
374
  nav { position: sticky; top: 0; z-index: 50; background: rgba(10,10,11,0.85); backdrop-filter: blur(12px); border-bottom: 1px solid var(--border); padding: 14px 0; }
413
375
  nav .container { display: flex; justify-content: space-between; align-items: center; }
414
- .nav-logo { color: var(--text); text-decoration: none; display: inline-flex; align-items: center; flex: 0 0 auto; }
415
- .nav-logo .logo-mark { width: 220px; height: 66px; display: block; flex: 0 0 auto; object-fit: contain; }
416
- .nav-logo .logo-text { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
376
+ .nav-logo { font-weight: 700; font-size: 15px; letter-spacing: -0.02em; color: var(--text); text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
377
+ .nav-logo .logo-mark { width: 28px; height: 28px; display: block; }
378
+ .nav-logo .logo-text { color: var(--text); }
379
+ .nav-logo span { color: var(--cyan); }
417
380
  .nav-links { display: flex; gap: 24px; align-items: center; }
418
381
  .nav-links a { color: var(--text-muted); text-decoration: none; font-size: 13px; transition: color 0.15s; }
419
382
  .nav-links a:hover { color: var(--text); }
@@ -446,20 +409,9 @@ __GA_BOOTSTRAP__
446
409
  .hero-actions { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 12px; margin: 0 auto 16px; max-width: 900px; }
447
410
  .hero-actions a, .hero-actions .hero-install { min-height: 48px; border-radius: 8px; }
448
411
  .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; }
449
- .hero-actions .btn-install-hero { font-size: 17px; padding: 14px 24px; font-weight: 800; background: var(--cyan); color: var(--bg); border: 1px solid rgba(34,211,238,0.65); box-shadow: 0 0 0 1px rgba(34,211,238,0.28), 0 12px 32px rgba(34,211,238,0.18); }
412
+ .hero-actions .btn-install-hero { font-size: 16px; padding: 14px 22px; }
450
413
  .hero-actions .hero-diagnostic { font-size: 16px; padding: 14px 22px; background: var(--green); color: #06120a; font-weight: 800; box-shadow: none; }
451
- .offer-router{max-width:940px;margin:18px auto 22px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;text-align:left}
452
- .offer-route{border:1px solid rgba(34,211,238,.18);background:rgba(17,17,19,.72);border-radius:8px;padding:14px}
453
- .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}
454
- .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)}
455
- .repeat-proof-strip { max-width: 760px; margin: 0 auto 24px; display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: stretch; text-align: left; }
456
- .repeat-proof-step { border: 1px solid rgba(34,211,238,0.18); background: rgba(17,17,19,0.76); border-radius: 8px; padding: 12px 14px; min-height: 74px; }
457
- .repeat-proof-step strong { display: block; color: var(--text); font-size: 13px; margin-bottom: 4px; }
458
- .repeat-proof-step code { display: block; color: var(--text-muted); font-family: var(--mono); font-size: 12px; line-height: 1.45; white-space: normal; }
459
- .repeat-proof-step.blocked { border-color: rgba(248,113,113,0.34); background: rgba(248,113,113,0.08); }
460
- .repeat-proof-arrow { display: flex; align-items: center; justify-content: center; color: var(--cyan); font-weight: 800; }
461
414
  .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; }
462
- .btn-pro-page.hero-secondary { background: rgba(17,17,19,0.72); color: var(--cyan); border: 1px solid rgba(34,211,238,0.32); box-shadow: none; }
463
415
  .btn-pro-page:hover { opacity: 0.9; transform: translateY(-1px); }
464
416
  .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; }
465
417
  .btn-gpt-page:hover { opacity: 0.92; transform: translateY(-1px); }
@@ -502,12 +454,12 @@ __GA_BOOTSTRAP__
502
454
  /* COMPATIBILITY */
503
455
  .compatibility { padding: 0 0 80px; }
504
456
  .compatibility-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
505
- .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; }
506
- .compat-card:hover, .cycle-card:hover { border-color: rgba(34,211,238,0.3); transform: translateY(-2px); }
507
- .compat-card h3, .cycle-card h3 { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 10px; }
508
- .compat-card .card-arrow, .cycle-card .card-arrow { font-size: 13px; color: var(--cyan); margin-top: 12px; font-weight: 500; }
509
- .compat-card p, .cycle-card p { font-size: 14px; color: var(--text-muted); line-height: 1.6; }
510
- .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; }
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; }
511
463
 
512
464
  /* CHATGPT GPT PATH */
513
465
  .gpt-path { padding: 0 0 80px; }
@@ -606,15 +558,6 @@ __GA_BOOTSTRAP__
606
558
  .price-card li { font-size: 14px; color: var(--text-muted); padding: 6px 0; display: flex; align-items: flex-start; gap: 8px; }
607
559
  .price-card li::before { content: "✓"; color: var(--cyan); font-weight: 700; flex-shrink: 0; }
608
560
  .price-card.pro li::before { color: var(--cyan); }
609
- .pricing-matrix { max-width: 1080px; margin: 24px auto 0; overflow-x: auto; border: 1px solid var(--border); border-radius: 12px; background: var(--bg-card); }
610
- .pricing-matrix table { width: 100%; min-width: 760px; border-collapse: collapse; }
611
- .pricing-matrix caption { text-align: left; padding: 18px 18px 0; color: var(--text); font-weight: 800; font-size: 16px; }
612
- .pricing-matrix th,
613
- .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); }
614
- .pricing-matrix th { color: var(--cyan); background: rgba(34,211,238,0.06); font-weight: 800; }
615
- .pricing-matrix tr:last-child td { border-bottom: 0; }
616
- .pricing-matrix strong { color: var(--text); }
617
- .pricing-note { max-width: 880px; margin: 14px auto 0; color: var(--text-muted); font-size: 12px; line-height: 1.55; text-align: center; }
618
561
  .btn-free,
619
562
  .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; }
620
563
  .btn-free:hover,
@@ -711,9 +654,6 @@ __GA_BOOTSTRAP__
711
654
  .hero { padding: 72px 0 56px; }
712
655
  .hero-actions { flex-direction: column; }
713
656
  .hero-actions a { width: 100%; }
714
- .offer-router { grid-template-columns: 1fr; }
715
- .repeat-proof-strip { grid-template-columns: 1fr; }
716
- .repeat-proof-arrow { min-height: 20px; }
717
657
  .hero-paid-actions { justify-content: center; }
718
658
  .hero-paid-actions a { width: 100%; }
719
659
  .nav-links a:not(.nav-cta) { display: none; }
@@ -738,7 +678,7 @@ __GA_BOOTSTRAP__
738
678
  <!-- NAV -->
739
679
  <nav>
740
680
  <div class="container">
741
- <a href="/" class="nav-logo" aria-label="ThumbGate home"><img src="/assets/brand/thumbgate-logo-transparent.svg?v=20260623-transparent-wordmark-nav" alt="" class="logo-mark" width="220" height="66"><span class="logo-text">ThumbGate</span></a>
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>
742
682
  <div class="nav-links">
743
683
  <a href="#how-it-works">How It Works</a>
744
684
  <a href="/pricing">Pricing</a>
@@ -755,7 +695,7 @@ __GA_BOOTSTRAP__
755
695
  <a href="#claude-code-section" class="nav-claude" onclick="posthog.capture('nav_claude_click')" style="display:none;">Claude</a>
756
696
  <a href="#workflow-sprint-intake" onclick="posthog.capture('workflow_sprint')" style="display:none;">Start Sprint</a>
757
697
  <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>
758
- <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>
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>
759
699
  </div>
760
700
  </div>
761
701
  </nav>
@@ -763,55 +703,24 @@ __GA_BOOTSTRAP__
763
703
  <!-- HERO -->
764
704
  <section class="hero">
765
705
  <div class="container">
766
- <div class="hero-badge">For AI coders who already corrected the same agent twice</div>
767
- <h1>Stop repeated AI agent mistakes before they run again.</h1>
768
- <p class="hero-lede">ThumbGate turns one thumbs-down into a local pre-action check. If Claude Code, Cursor, Codex, Gemini CLI, or another MCP-capable agent tries the same unsafe command, edit, deploy, retry loop, or API call again, ThumbGate blocks it before execution and records why.</p>
769
-
770
- <div class="hero-signals" aria-label="Repeated agent mistakes ThumbGate stops">
771
- <a class="signal-pill signal-down" href="#first-check">Repeated command</a>
772
- <a class="signal-pill" href="#first-check">Runaway retry loop</a>
773
- <a class="signal-pill" href="#first-check">Rejected edit returns</a>
774
- <a class="signal-pill signal-up" href="#pricing">Upgrade after proof</a>
775
- </div>
776
-
777
- <div class="repeat-proof-strip" aria-label="ThumbGate thumbs-down to blocked repeat example">
778
- <div class="repeat-proof-step">
779
- <strong>1. You reject it once</strong>
780
- <code>thumbs down: never force-push main without explicit approval</code>
781
- </div>
782
- <div class="repeat-proof-arrow">→</div>
783
- <div class="repeat-proof-step blocked">
784
- <strong>2. The repeat is stopped</strong>
785
- <code>agent: git push --force origin main<br>BLOCKED before execution</code>
786
- </div>
787
- </div>
788
-
789
- <div class="hero-proof-card" aria-label="ThumbGate blocking dangerous AI agent commands in real time">
790
- <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" />
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>
791
714
  </div>
792
715
 
793
716
  <div class="hero-actions">
794
- <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>
795
- <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 hero-secondary">Upgrade after one blocked repeat</a>
796
- <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 hero-secondary">Team workflow intake →</a>
797
- </div>
798
-
799
- <div class="offer-router" aria-label="Choose the right ThumbGate path">
800
- <div class="offer-route primary">
801
- <strong>Start here: Free CLI</strong>
802
- <p>2 captures/day, 3 active rules. Enough to prove one blocked repeat in your repo.</p>
803
- <button data-router-install onclick="copyInstall(this)"><span class="copy-hint">Copy npx thumbgate init</span></button>
804
- </div>
805
- <div class="offer-route">
806
- <strong>After it blocks a repeat: Pro</strong>
807
- <p>Unlimited rules, recall, sync, dashboard proof, and exports for one operator.</p>
808
- <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);">Upgrade to Pro →</a>
809
- </div>
810
- <div class="offer-route">
811
- <strong>Team has the same failure: intake</strong>
812
- <p>One repeated workflow, one owner, one proof plan before a wider rollout.</p>
813
- <a href="#workflow-sprint-intake" onclick="sendFirstPartyTelemetry('workflow_sprint_intake_started',{ctaId:'router_workflow_sprint',ctaPlacement:'offer_router',offer:'workflow_sprint'});">Send workflow first →</a>
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>
814
721
  </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>
815
724
  </div>
816
725
 
817
726
  <div class="hero-trust-bar">
@@ -825,11 +734,6 @@ __GA_BOOTSTRAP__
825
734
  <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>
826
735
  <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>
827
736
  </figure>
828
- <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;">
829
- <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>
830
- <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>
831
- <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>
832
- </figure>
833
737
  <div class="first-check-card" id="first-check">
834
738
  <div class="section-label" style="text-align:left;margin-bottom:8px;">First-Dollar Activation Path</div>
835
739
  <h2>Block your first repeated AI mistake in 5 minutes.</h2>
@@ -859,6 +763,7 @@ __GA_BOOTSTRAP__
859
763
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/THUMBGATE_BENCH.md" target="_blank" rel="noopener">ThumbGate Bench</a>
860
764
  <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/RELEASE_CONFIDENCE.md" target="_blank" rel="noopener">Release confidence</a>
861
765
  <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>
862
767
  <a href="#compatibility">Claude Code · Cursor · Codex · Gemini · Amp · Cline · OpenCode</a>
863
768
  </nav>
864
769
  <div class="marketing-test-copy" hidden>
@@ -866,7 +771,7 @@ __GA_BOOTSTRAP__
866
771
  <a class="signal-pill signal-up">Thumbs-down once, blocked forever</a>
867
772
  <a class="signal-pill signal-down">Block repeat hallucinations before the model sees them</a>
868
773
  <p class="hero-persona">For consultancies, platform teams, and AI product teams that want workflow governance, CLI-first rollout, and a reliable operator.</p>
869
- <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>
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>
870
775
  <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>
871
776
  <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>
872
777
  <!--
@@ -879,84 +784,13 @@ __GA_BOOTSTRAP__
879
784
  <div hidden aria-hidden="true" data-thumbgate-test-anchors style="display:none">
880
785
  <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>
881
786
  <span data-anchor="dashboard-preview">dashboard-preview What your Pro dashboard looks like check:no-force-push</span>
882
- <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>
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>
883
788
  <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>
884
789
  </div>
885
790
  </div>
886
791
  </div>
887
792
  </section>
888
793
 
889
- <section class="compatibility" id="why-not-diy" aria-label="Why not write your own hooks">
890
- <div class="container">
891
- <h2>“Why not just write my own PreToolUse hooks?”</h2>
892
- <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>
893
- <p><a href="/compare/claude-code-hooks">See ThumbGate vs. hand-written hooks →</a></p>
894
- </div>
895
- </section>
896
-
897
- <section class="compatibility" id="june-2026-proof">
898
- <div class="container">
899
- <div class="section-label">June 2026 Market Signal</div>
900
- <h2 class="section-title">The market moved from “agents can code” to “who is allowed to let agents act?”</h2>
901
- <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>
902
- <div class="agent-grid">
903
- <div class="agent-card">
904
- <h3>MCP and tool lockdown</h3>
905
- <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>
906
- </div>
907
- <div class="agent-card">
908
- <h3>Managed agents need receipts</h3>
909
- <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>
910
- </div>
911
- <div class="agent-card">
912
- <h3>Tokenmaxxing backlash</h3>
913
- <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>
914
- </div>
915
- <div class="agent-card">
916
- <h3>Production code by AI</h3>
917
- <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>
918
- </div>
919
- </div>
920
- <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);">
921
- <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.
922
- </div>
923
- </div>
924
- </section>
925
-
926
- <section class="compatibility" id="agentic-development-cycle">
927
- <div class="container">
928
- <div class="section-label">Agentic Development Cycle</div>
929
- <h2 class="section-title">Guide, Generate, Verify, Solve still needs an execution gate.</h2>
930
- <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>
931
- <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">
932
- <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(_){}">
933
- <h3>Guide</h3>
934
- <p>Rules, standards, past thumbs-downs, workflow boundaries, and approval policies are loaded as concrete operating context instead of vague prompt advice.</p>
935
- <div class="card-arrow">See how feedback becomes rules →</div>
936
- </a>
937
- <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(_){}">
938
- <h3>Generate</h3>
939
- <p>Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode, and MCP-compatible agents keep generating plans, edits, and tool calls.</p>
940
- <div class="card-arrow">Open the agent setup guide →</div>
941
- </a>
942
- <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(_){}">
943
- <h3>Verify</h3>
944
- <p>Pre-Action Checks require inspection evidence, tests, CI, screenshots, API responses, or human approval before high-risk actions proceed.</p>
945
- <div class="card-arrow">Read the AC/DC map →</div>
946
- </a>
947
- <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(_){}">
948
- <h3>Solve</h3>
949
- <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>
950
- <div class="card-arrow">Explore the lessons →</div>
951
- </a>
952
- </div>
953
- <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);">
954
- <strong style="display:block;color:var(--green);margin-bottom:6px;">ThumbGate's role: the pre-action gate between generated intent and executed action.</strong>
955
- <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>
956
- </div>
957
- </div>
958
- </section>
959
-
960
794
  <!-- CODE EXAMPLE — moved up for conversion: show the product immediately after hero -->
961
795
  <section class="code-section">
962
796
  <div class="container">
@@ -982,38 +816,6 @@ __GA_BOOTSTRAP__
982
816
  </div>
983
817
  </section>
984
818
 
985
- <section class="compatibility" id="deterministic-prevention">
986
- <div class="container">
987
- <div class="section-label">Deterministic Prevention</div>
988
- <h2 class="section-title">Native thumbs are a black box. ThumbGate is the inspectable control layer.</h2>
989
- <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>
990
- <div class="agent-grid">
991
- <div class="agent-card">
992
- <h3>Black-box memory</h3>
993
- <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>
994
- </div>
995
- <div class="agent-card">
996
- <h3>Inspectable ThumbGate memory</h3>
997
- <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>
998
- </div>
999
- <div class="agent-card">
1000
- <h3>Rules before execution</h3>
1001
- <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>
1002
- </div>
1003
- </div>
1004
- <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;">
1005
- <h3 style="margin:0 0 10px;color:var(--text);font-size:18px;">Why this matters now</h3>
1006
- <ul style="margin:0;padding-left:20px;color:var(--text-muted);line-height:1.7;">
1007
- <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>
1008
- <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>
1009
- <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>
1010
- <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>
1011
- </ul>
1012
- <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>
1013
- </div>
1014
- </div>
1015
- </section>
1016
-
1017
819
  <section class="marketing-deep-dive" style="padding:28px 0 10px;">
1018
820
  <div class="container" style="max-width:1240px;">
1019
821
  <div class="section-label">Status bar proof</div>
@@ -1101,7 +903,7 @@ __GA_BOOTSTRAP__
1101
903
  <div class="compatibility-grid">
1102
904
  <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%);">
1103
905
  <h3>🧩 Claude Desktop Extension</h3>
1104
- <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>
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>
1105
907
  <div class="card-arrow" style="color:#d97706;">Download .mcpb bundle →</div>
1106
908
  </a>
1107
909
  <a class="compat-card seo-card" href="/guides/claude-code-prevent-repeated-mistakes" rel="noopener">
@@ -1114,21 +916,6 @@ __GA_BOOTSTRAP__
1114
916
  <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>
1115
917
  <div class="card-arrow">Open the setup guide →</div>
1116
918
  </a>
1117
- <a class="compat-card seo-card" href="/guides/hermes-agent-guardrails" rel="noopener">
1118
- <h3>☤ Hermes Agent guardrails</h3>
1119
- <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>
1120
- <div class="card-arrow">Read the Hermes guardrails guide →</div>
1121
- </a>
1122
- <a class="compat-card seo-card" href="/guides/vllm-serving-guardrails" rel="noopener">
1123
- <h3>vLLM serving guardrails</h3>
1124
- <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>
1125
- <div class="card-arrow">Read the vLLM guardrails guide →</div>
1126
- </a>
1127
- <a class="compat-card seo-card" href="/guides/agent-context-governance" rel="noopener">
1128
- <h3>Context and tool governance</h3>
1129
- <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>
1130
- <div class="card-arrow">Read the context governance guide →</div>
1131
- </a>
1132
919
  <a class="compat-card seo-card" href="/guides/gcp-mcp-guardrails" rel="noopener">
1133
920
  <h3>☁️ Google Data Agent Kit</h3>
1134
921
  <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>
@@ -1140,8 +927,8 @@ __GA_BOOTSTRAP__
1140
927
  <div class="card-arrow">Open the Codex install page →</div>
1141
928
  </a>
1142
929
  <a class="compat-card" href="/guides/cursor-prevent-repeated-mistakes" rel="noopener">
1143
- <h3>🎯 Cursor plugin <span style="font-size:12px;font-weight:500;color:var(--text-muted);">(Marketplace review pending)</span></h3>
1144
- <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>
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>
1145
932
  <div class="card-arrow">Read the Cursor guide →</div>
1146
933
  </a>
1147
934
  <a class="compat-card" href="/guide" rel="noopener">
@@ -1163,8 +950,7 @@ __GA_BOOTSTRAP__
1163
950
  </div>
1164
951
  </section>
1165
952
 
1166
- <section class="compatibility" id="demo">
1167
- <a id="social-proof" aria-hidden="true"></a>
953
+ <section class="compatibility" id="social-proof">
1168
954
  <div class="container">
1169
955
  <div class="section-label">See It In Action</div>
1170
956
  <h2 class="section-title">See the enforcement before you buy anything</h2>
@@ -1179,7 +965,7 @@ __GA_BOOTSTRAP__
1179
965
  <p>Every block explains why: which pattern matched, what evidence triggered it, and whether the rule came from your own corrections.</p>
1180
966
  </div>
1181
967
  <div class="agent-card">
1182
- <h3>📊 Org Dashboard</h3>
968
+ <h3>📊 Org Dashboard (Team)</h3>
1183
969
  <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>
1184
970
  </div>
1185
971
  <div class="agent-card">
@@ -1202,28 +988,6 @@ __GA_BOOTSTRAP__
1202
988
  </div>
1203
989
  </section>
1204
990
 
1205
- <section class="compatibility" id="governance-not-logging">
1206
- <div class="container">
1207
- <div class="section-label">Governance, Not Logging</div>
1208
- <h2 class="section-title">Logs describe the damage. ThumbGate blocks the risky action before it runs.</h2>
1209
- <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>
1210
- <div class="agent-grid">
1211
- <div class="agent-card">
1212
- <h3>Pre-action enforcement</h3>
1213
- <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>
1214
- </div>
1215
- <div class="agent-card">
1216
- <h3>Reviewable decision trail</h3>
1217
- <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>
1218
- </div>
1219
- <div class="agent-card">
1220
- <h3>Enterprise governance mode</h3>
1221
- <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>
1222
- </div>
1223
- </div>
1224
- </div>
1225
- </section>
1226
-
1227
991
  <section class="compatibility" id="orchestration-layer">
1228
992
  <div class="container">
1229
993
  <div class="section-label">Positioning</div>
@@ -1248,7 +1012,6 @@ __GA_BOOTSTRAP__
1248
1012
  <a class="btn-free" href="/guides/ai-deployment-readiness" style="display:inline-flex;align-items:center;">AI deployment readiness →</a>
1249
1013
  <a class="btn-free" href="/use-cases/platform-teams" style="display:inline-flex;align-items:center;">Platform team rollout →</a>
1250
1014
  <a class="btn-free" href="/use-cases/regulated-workflows" style="display:inline-flex;align-items:center;">Regulated workflow pattern →</a>
1251
- <a class="btn-free" href="/agent-manager" style="display:inline-flex;align-items:center;">Built for the Agent Manager →</a>
1252
1015
  </div>
1253
1016
  </div>
1254
1017
  </section>
@@ -1259,14 +1022,9 @@ __GA_BOOTSTRAP__
1259
1022
  <div style="color:var(--cyan);font-weight:700;">Compare ThumbGate with other agent-safety approaches</div>
1260
1023
  <div style="display:flex;flex-wrap:wrap;gap:10px;margin-top:14px;font-size:13px;line-height:1.4;">
1261
1024
  <a href="/learn">Browse the guide library</a>
1262
- <a href="/compare/claude-code-hooks" title="ThumbGate vs native Claude Code hooks and free community repos">Claude Code hooks</a>
1263
- <a href="/compare/arcjet">Arcjet</a>
1264
- <a href="/compare/bumblebee">Bumblebee</a>
1265
- <a href="/compare/anthropic-containment">Claude Containment</a>
1266
1025
  <a href="/compare/speclock">SpecLock</a>
1267
1026
  <a href="/compare/mem0">Mem0</a>
1268
1027
  <a href="/compare/fallow">Fallow</a>
1269
- <a href="/compare" style="font-weight:700;color:var(--cyan);">Compare all &rarr;</a>
1270
1028
  <a href="/guides/pre-action-checks">Pre-action checks</a>
1271
1029
  <a href="/guides/agent-harness-optimization">Agent harness optimization</a>
1272
1030
  <a href="/guides/code-knowledge-graph-guardrails">Code graph guardrails</a>
@@ -1282,12 +1040,10 @@ __GA_BOOTSTRAP__
1282
1040
  <a href="/guides/browser-automation-safety">Browser automation safety</a>
1283
1041
  <a href="/guides/native-messaging-host-security">Native messaging host security</a>
1284
1042
  <a href="/guides/ai-search-topical-presence">AI search topical presence</a>
1285
- <a href="/guides/agentic-web-governance">Agentic web governance</a>
1286
1043
  <a href="/guides/best-tools-stop-ai-agents-breaking-production">Stop agents breaking production</a>
1287
1044
  <a href="/guides/relational-knowledge-ai-recommendations">Relational knowledge</a>
1288
1045
  <a href="/guides/claude-code-feedback">Claude Code feedback</a>
1289
1046
  <a href="/guides/autoresearch-agent-safety">Autoresearch safety</a>
1290
- <a href="/guides/aws-blocks-agent-guardrails">AWS Blocks guardrails</a>
1291
1047
  </div>
1292
1048
  </div>
1293
1049
  </div>
@@ -1310,12 +1066,12 @@ __GA_BOOTSTRAP__
1310
1066
  </div>
1311
1067
  <div class="autoresearch-card">
1312
1068
  <h3>Ship into CI</h3>
1313
- <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>
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>
1314
1070
  </div>
1315
1071
  </div>
1316
1072
  <div class="autoresearch-cta">
1317
1073
  <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>
1318
- <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>
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>
1319
1075
  </div>
1320
1076
  </div>
1321
1077
  </div>
@@ -1346,9 +1102,8 @@ __GA_BOOTSTRAP__
1346
1102
  <!-- HOW IT WORKS -->
1347
1103
  <section class="how-it-works" id="how-it-works">
1348
1104
  <div class="container">
1349
- <div class="section-label">Self-improving enforcement</div>
1105
+ <div class="section-label">Current release</div>
1350
1106
  <h2 class="section-title">Three steps to stop repeated AI failures</h2>
1351
- <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>
1352
1107
  <div class="steps">
1353
1108
  <div class="step">
1354
1109
  <div class="step-num">1</div>
@@ -1491,42 +1246,15 @@ __GA_BOOTSTRAP__
1491
1246
  <div class="container">
1492
1247
  <div class="section-label">Pricing</div>
1493
1248
  <h2 class="section-title">Stop paying for agent mistakes you already fixed.</h2>
1494
-
1495
- <!-- At-a-glance comparison so buyers see plan differences without parsing the cards below. -->
1496
- <div class="plan-matrix-wrap" style="max-width:1080px;margin:8px auto 28px;overflow-x:auto;">
1497
- <table class="plan-matrix" style="width:100%;border-collapse:collapse;font-size:14px;min-width:640px;">
1498
- <thead>
1499
- <tr>
1500
- <th style="text-align:left;padding:12px 14px;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);"></th>
1501
- <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>
1502
- <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>
1503
- <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>
1504
- </tr>
1505
- </thead>
1506
- <tbody>
1507
- <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>
1508
- <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>
1509
- <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>
1510
- <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>
1511
- <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>
1512
- <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>
1513
- <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>
1514
- <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>
1515
- <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>
1516
- <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>
1517
- </tbody>
1518
- </table>
1519
- </div>
1520
-
1521
1249
  <div class="pricing-grid">
1522
1250
  <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;">
1523
1251
  <div class="tier" style="color:var(--cyan);">Free</div>
1524
1252
  <div class="price">$0</div>
1525
1253
  <div class="price-sub">Block repeated mistakes daily. Forever free for solo devs.</div>
1526
- <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>
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>
1527
1255
  <ul>
1528
- <li><strong>2 feedback captures/day</strong> — 10 total on Free, then Pro for unlimited</li>
1529
- <li>Up to 3 active auto-promoted prevention rules</li>
1256
+ <li><strong>Unlimited feedback captures</strong> — every thumbs-down, every session</li>
1257
+ <li>Up to 5 active auto-promoted prevention rules</li>
1530
1258
  <li>No recall or lesson search</li>
1531
1259
  <li>No exports (DPO, Databricks, HuggingFace)</li>
1532
1260
  <li>All MCP integrations (Claude Code, Cursor, Codex, Gemini, Amp, any MCP agent)</li>
@@ -1543,9 +1271,9 @@ __GA_BOOTSTRAP__
1543
1271
  <div class="price-card pro" data-price-dollars="19">
1544
1272
  <div class="tier">Pro</div>
1545
1273
  <div class="price">$19<span style="font-size:16px;color:var(--text-dim)">/mo</span></div>
1546
- <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>
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>
1547
1275
  <ul>
1548
- <li><strong>Block every repeat mistake</strong> — unlimited feedback captures and prevention rules (Free caps at 3 active rules)</li>
1276
+ <li><strong>Block every repeat mistake</strong> — unlimited feedback captures and prevention rules (Free caps at 5 active rules)</li>
1549
1277
  <li><strong>Never re-explain a correction</strong> — lesson recall and search across sessions on every agent surface</li>
1550
1278
  <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>
1551
1279
  <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>
@@ -1553,96 +1281,54 @@ __GA_BOOTSTRAP__
1553
1281
  <li><strong>Audit-ready enforcement proof</strong> — Personal local dashboard for the individual operator with auditable block history</li>
1554
1282
  <li><strong>Ship hardened agents to production</strong> — Model Hardening Advisor plus HuggingFace dataset export</li>
1555
1283
  <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>
1556
- <li><strong>Hand off without re-onboarding</strong> — Lesson export/import for handoff or migration</li>
1284
+ <li><strong>Hand off without re-onboarding</strong> — Team lesson export/import for handoff or migration</li>
1557
1285
  </ul>
1558
1286
  <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);">
1559
1287
  <div style="font-size:12px;color:var(--text-muted);margin-bottom:4px;">What your Pro dashboard looks like</div>
1560
1288
  <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>
1561
1289
  </div>
1562
1290
  <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>
1563
- <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>
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>
1564
1292
  <p style="font-size:11px;color:var(--text-muted);margin-top:8px;text-align:center;">Billed today · cancel anytime.</p>
1565
1293
  <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;">
1566
1294
  </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>
1567
1311
  </div>
1568
- <div class="pricing-matrix" aria-label="Plan capability comparison">
1569
- <table>
1570
- <caption>Compare plans at a glance</caption>
1571
- <thead>
1572
- <tr>
1573
- <th scope="col">Capability</th>
1574
- <th scope="col">Free</th>
1575
- <th scope="col">Pro</th>
1576
- <th scope="col">Enterprise</th>
1577
- </tr>
1578
- </thead>
1579
- <tbody>
1580
- <tr>
1581
- <td><strong>Best for</strong></td>
1582
- <td>Solo proof that a repeat mistake can be blocked</td>
1583
- <td>One operator who wants hosted sync, dashboard proof, and exports</td>
1584
- <td>Teams &amp; regulated orgs — one person's correction protects every seat; banking, insurance, healthcare, public sector, audited workflows</td>
1585
- </tr>
1586
- <tr>
1587
- <td><strong>Price</strong></td>
1588
- <td>$0</td>
1589
- <td>$19/mo or $149/yr</td>
1590
- <td>Custom — scoped after intake</td>
1591
- </tr>
1592
- <tr>
1593
- <td><strong>Feedback captures</strong></td>
1594
- <td>2/day, 10 total</td>
1595
- <td>Unlimited</td>
1596
- <td>Unlimited, shared across the org; custom retention and evidence policy</td>
1597
- </tr>
1598
- <tr>
1599
- <td><strong>Active prevention rules</strong></td>
1600
- <td>3 active rules</td>
1601
- <td>Unlimited personal rules</td>
1602
- <td>Shared org rules, policy templates, approvals, and audit export</td>
1603
- </tr>
1604
- <tr>
1605
- <td><strong>Dashboard and proof</strong></td>
1606
- <td>Local CLI evidence</td>
1607
- <td>Personal dashboard, check debugger, DPO/HF exports</td>
1608
- <td>Org dashboard, hosted review views, rollout proof, SIEM-ready decision trail and compliance evidence</td>
1609
- </tr>
1610
- <tr>
1611
- <td><strong>How to start</strong></td>
1612
- <td><code>npx thumbgate init</code></td>
1613
- <td>Self-serve Stripe checkout</td>
1614
- <td>Send one repeated workflow failure first — intake before checkout</td>
1615
- </tr>
1616
- </tbody>
1617
- </table>
1618
- </div>
1619
- <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>
1620
1312
  <div style="max-width:1080px;margin:24px auto 0;">
1621
- <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;">
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;">
1622
1314
  <div style="display:flex;flex-wrap:wrap;align-items:flex-start;gap:24px;justify-content:space-between;">
1623
1315
  <div style="flex:1 1 420px;min-width:280px;">
1624
- <div class="tier" style="color:var(--cyan);">Enterprise</div>
1625
- <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>
1626
- <div style="font-size:18px;color:var(--text);margin-bottom:6px;font-weight:700;">Shared enforcement for teams &amp; regulated workflows — custom pricing</div>
1627
- <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>
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>
1628
1320
  <ul style="margin-bottom:0;">
1629
- <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>
1630
- <li><strong>Org dashboard</strong> — active agents, check hit-rates, and risk surfaces across the whole team</li>
1631
- <li><strong>Shared enforcement memory</strong> — approval boundaries and rollback safety applied org-wide, not per machine</li>
1632
1321
  <li><strong>Audit-grade decision trail</strong> — every PreToolUse evaluation logged with the rule that fired, ready for SIEM export</li>
1633
1322
  <li><strong>Immutable rule provenance</strong> — each prevention rule traceable to the feedback event that generated it</li>
1634
1323
  <li><strong>Self-managed deployment</strong> — air-gapped or VPC-hosted; no agent state leaves your boundary</li>
1635
- <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>
1636
- <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>
1637
1324
  <li><strong>DORA / EU AI Act evidence packaging</strong> — machine-readable reports aligned to Article 6, 28, and high-risk provider monitoring obligations</li>
1638
1325
  <li><strong>SSO + role separation</strong> — operator, reviewer, and auditor roles enforced at the gate layer</li>
1639
- <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>
1640
1326
  <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>
1641
1327
  <li><strong>Quarterly red-team review</strong> — prompt-injection and policy-bypass exercises with written findings</li>
1642
1328
  </ul>
1643
1329
  </div>
1644
1330
  <div style="flex:0 0 260px;min-width:240px;display:flex;flex-direction:column;gap:10px;">
1645
- <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>
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>
1646
1332
  <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>
1647
1333
  <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>
1648
1334
  </div>
@@ -1654,21 +1340,21 @@ __GA_BOOTSTRAP__
1654
1340
 
1655
1341
  <section class="compatibility" id="workflow-sprint-intake">
1656
1342
  <div class="container">
1657
- <div class="section-label">Enterprise Pilot</div>
1343
+ <div class="section-label">Team Pilot</div>
1658
1344
  <h2 class="section-title">Start the AI Agent Governance Sprint with one repeat failure</h2>
1659
1345
  <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>
1660
1346
  <div class="team-intake-panel">
1661
1347
  <div class="team-intake-panel-head">
1662
1348
  <div>
1663
1349
  <h3>Tell us the workflow. Get a proof plan.</h3>
1664
- <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>
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>
1665
1351
  </div>
1666
1352
  <span class="team-intake-badge">30-minute intake</span>
1667
1353
  </div>
1668
1354
  <div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
1669
1355
  <div>
1670
- <strong>Enterprise checkout happens after scope.</strong>
1671
- <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>
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>
1672
1358
  </div>
1673
1359
  <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>
1674
1360
  </div>
@@ -1688,7 +1374,7 @@ __GA_BOOTSTRAP__
1688
1374
  <textarea class="full" name="blocker" placeholder="What repeat mistake, rollout blocker, or team handoff failure keeps happening?" required></textarea>
1689
1375
  <textarea class="full" name="note" placeholder="Optional context: team size, repos involved, target rollout date, or what you need to prove internally."></textarea>
1690
1376
  <div class="full">
1691
- <button type="submit" class="btn-team">Start Enterprise Pilot Intake</button>
1377
+ <button type="submit" class="btn-team">Start Team Pilot Intake</button>
1692
1378
  </div>
1693
1379
  </form>
1694
1380
  </div>
@@ -1719,7 +1405,7 @@ __GA_BOOTSTRAP__
1719
1405
  </div>
1720
1406
  <div class="faq-item">
1721
1407
  <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>
1722
- <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>
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>
1723
1409
  </div>
1724
1410
  <div class="faq-item">
1725
1411
  <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>
@@ -1731,15 +1417,15 @@ __GA_BOOTSTRAP__
1731
1417
  </div>
1732
1418
  <div class="faq-item">
1733
1419
  <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>
1734
- <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>
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>
1735
1421
  </div>
1736
1422
  <div class="faq-item">
1737
1423
  <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>
1738
- <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>
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>
1739
1425
  </div>
1740
1426
  <div class="faq-item">
1741
1427
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">Do I need a cloud account?</div>
1742
- <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>
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>
1743
1429
  </div>
1744
1430
  <div class="faq-item">
1745
1431
  <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>
@@ -1749,21 +1435,9 @@ __GA_BOOTSTRAP__
1749
1435
  <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>
1750
1436
  <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>
1751
1437
  </div>
1752
- <div class="faq-item">
1753
- <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>
1754
- <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>
1755
- </div>
1756
1438
  <div class="faq-item">
1757
1439
  <div class="faq-q" role="button" tabindex="0" aria-expanded="false" onclick="toggleFaq(this)" onkeydown="handleFaqKeydown(event)">What does Pro cost?</div>
1758
- <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>
1759
- </div>
1760
- <div class="faq-item">
1761
- <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>
1762
- <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>
1763
- </div>
1764
- <div class="faq-item">
1765
- <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>
1766
- <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>
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>
1767
1441
  </div>
1768
1442
  </div>
1769
1443
  </div>
@@ -1798,7 +1472,7 @@ __GA_BOOTSTRAP__
1798
1472
  </div>
1799
1473
  <div style="display:flex;gap:10px;justify-content:center;flex-wrap:wrap;align-items:center;margin-top:12px;opacity:0.7;">
1800
1474
  <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>
1801
- <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>
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>
1802
1476
  <a href="#workflow-sprint-intake" class="btn-team" style="padding:8px 16px;font-size:12px;">Start Workflow Hardening Sprint</a>
1803
1477
  </div>
1804
1478
  </div>
@@ -1815,19 +1489,19 @@ __GA_BOOTSTRAP__
1815
1489
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1816
1490
  <a href="/blog">Blog</a>
1817
1491
  </div>
1818
- <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.27.17</span>
1492
+ <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.20.0</span>
1819
1493
  </div>
1820
1494
  </footer>
1821
1495
 
1822
1496
  <!-- STICKY BOTTOM CTA -->
1823
1497
  <div class="sticky-cta" id="sticky-cta">
1824
- <span class="sticky-cta-text"><strong>Pro unlocks recall, sync, exports</strong> — free CLI is capped at 2 captures/day</span>
1498
+ <span class="sticky-cta-text"><strong>npx thumbgate init</strong> — free CLI, zero friction</span>
1825
1499
  <div class="hero-install" onclick="copyInstall(this)" title="Click to copy" style="margin-bottom:0;padding:8px 16px;font-size:13px;">
1826
1500
  <span class="prompt">$</span>
1827
1501
  <span class="cmd">npx thumbgate init</span>
1828
1502
  <span class="copy-hint">copy</span>
1829
1503
  </div>
1830
- <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>
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>
1831
1505
  </div>
1832
1506
  <script>
1833
1507
  (function() {
@@ -1905,53 +1579,6 @@ function sendGa4Event(eventName, params) {
1905
1579
  globalThis.gtag('event', eventName, params || {});
1906
1580
  }
1907
1581
 
1908
- function readRevenueCtaMeta(el) {
1909
- var label = (el && el.textContent ? el.textContent : '').trim().substring(0, 80);
1910
- var section = el && el.closest ? el.closest('section') : null;
1911
- var fallbackPlacement = section ? (section.id || String(section.className || '').split(' ')[0] || 'unknown') : 'unknown';
1912
- return {
1913
- ctaId: (el && el.dataset && el.dataset.ctaId) || 'pro_checkout',
1914
- ctaPlacement: (el && el.dataset && el.dataset.ctaPlacement) || fallbackPlacement,
1915
- tier: (el && el.dataset && el.dataset.tier) || 'pro',
1916
- planId: (el && el.dataset && el.dataset.planId) || 'pro',
1917
- price: Number((el && el.dataset && el.dataset.price) || proPriceDollars || 19),
1918
- billing: (el && el.dataset && el.dataset.billing) || 'monthly',
1919
- label: label,
1920
- };
1921
- }
1922
-
1923
- function trackRevenueCta(el) {
1924
- var meta = readRevenueCtaMeta(el);
1925
- var plausibleProps = {
1926
- cta: meta.ctaId,
1927
- cta_id: meta.ctaId,
1928
- section: meta.ctaPlacement,
1929
- tier: meta.tier,
1930
- plan_id: meta.planId,
1931
- price: meta.price,
1932
- billing: meta.billing,
1933
- label: meta.label,
1934
- };
1935
- if (typeof plausible === 'function') {
1936
- plausible('pricing_cta_click', { props: plausibleProps });
1937
- plausible('checkout_start', { props: plausibleProps });
1938
- }
1939
- sendFirstPartyTelemetry('cta_click', {
1940
- ctaId: meta.ctaId,
1941
- ctaPlacement: meta.ctaPlacement,
1942
- planId: meta.planId,
1943
- tier: meta.tier,
1944
- price: meta.price,
1945
- billing: meta.billing,
1946
- label: meta.label,
1947
- });
1948
- sendGa4Event('begin_checkout', {
1949
- currency: 'USD',
1950
- value: meta.price,
1951
- items: [{ item_id: 'pro_monthly', item_name: 'ThumbGate Pro Monthly' }],
1952
- });
1953
- }
1954
-
1955
1582
  function initializeTeamIntakeTelemetry() {
1956
1583
  document.querySelectorAll('[data-team-intake-form]').forEach(function(form) {
1957
1584
  var started = false;
@@ -2042,15 +1669,8 @@ function copyInstall(el) {
2042
1669
  toggleFaq(event.currentTarget);
2043
1670
  }
2044
1671
 
2045
- // Hoist FAQ handlers to window scope so the inline `onclick="toggleFaq(this)"`
2046
- // attributes on every FAQ question can resolve them. Without this, every FAQ
2047
- // click silently throws ReferenceError — all 13 FAQ items on the landing
2048
- // page are dead. Discovered by comprehensive E2E coverage in this PR.
2049
- window.toggleFaq = toggleFaq;
2050
- window.handleFaqKeydown = handleFaqKeydown;
2051
-
2052
1672
  /* CTA clicks */
2053
- trackClick('.btn-pro:not([data-revenue-cta])', 'checkout_start', { tier: 'pro', price: 19, billing: 'monthly' });
1673
+ trackClick('.btn-pro', 'checkout_start', { tier: 'pro', price: 19, billing: 'monthly' });
2054
1674
  trackClick('.btn-gpt-page:not(.btn-install-hero)', 'chatgpt_gpt_click', { tier: 'free', source: 'homepage_gpt' });
2055
1675
  trackClick('.btn-install-hero', 'install_guide_click', { tier: 'free', source: 'hero_install' });
2056
1676
  trackClick('.btn-pro-page:not(.btn-install-link)', 'pro_page_click', { tier: 'pro', source: 'hero' });
@@ -2058,13 +1678,12 @@ function copyInstall(el) {
2058
1678
  trackClick('.btn-team', 'workflow_sprint_intake_click', { tier: 'team', offer: 'workflow_hardening_sprint' });
2059
1679
  trackClick('.btn-free', 'install_click', { tier: 'free' });
2060
1680
  trackClick('.btn-demo-link', 'demo_click', { source: 'homepage' });
2061
- trackClick('.nav-cta:not([data-revenue-cta])', 'chatgpt_gpt_click', { tier: 'free', source: 'nav' });
1681
+ trackClick('.nav-cta', 'chatgpt_gpt_click', { tier: 'free', source: 'nav' });
2062
1682
 
2063
- /* Pricing CTA conversion tracking — fires on every Get Started / Pro / Enterprise button click
1683
+ /* Pricing CTA conversion tracking — fires on every Get Started / Pro / Team button click
2064
1684
  with section context so we can distinguish pricing section vs final CTA section clicks */
2065
1685
  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) {
2066
1686
  el.addEventListener('click', function() {
2067
- if (el.hasAttribute('data-revenue-cta')) return;
2068
1687
  var section = el.closest('section');
2069
1688
  var sectionId = section ? (section.id || section.className.split(' ')[0] || 'unknown') : 'unknown';
2070
1689
  var tier = resolvePricingClickTier(el);
@@ -2123,10 +1742,8 @@ function copyInstall(el) {
2123
1742
  ctaImpressions: [
2124
1743
  { selector: '#pro-checkout-link', ctaId: 'pricing_pro_checkout', ctaPlacement: 'pricing', planId: 'pro' },
2125
1744
  { selector: '.price-card.pro .btn-pro', ctaId: 'pricing_pro_monthly', ctaPlacement: 'pricing', planId: 'pro' },
2126
- { selector: '.nav-cta[data-revenue-cta]', ctaId: 'nav_start_pro', ctaPlacement: 'nav', planId: 'pro' },
2127
- { selector: '.hero-actions .hero-pro-primary', ctaId: 'hero_start_pro', ctaPlacement: 'hero', planId: 'pro' },
2128
- { selector: '.hero-actions .btn-pro-page:not(.hero-pro-primary)', ctaId: 'hero_workflow_intake', ctaPlacement: 'hero', planId: 'team' },
2129
- { selector: '.hero-actions .hero-pro:not(.hero-pro-primary)', ctaId: 'hero_workflow_sprint_recovery_intake', ctaPlacement: 'hero', planId: 'team' },
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' },
2130
1747
  { selector: '.sticky-cta .btn-pro', ctaId: 'sticky_go_pro', ctaPlacement: 'sticky_cta', planId: 'pro' },
2131
1748
  { selector: '.price-card.team .btn-team', ctaId: 'team_workflow_sprint', ctaPlacement: 'pricing', planId: 'team' },
2132
1749
  { selector: '#team-pilot-intake-form', ctaId: 'workflow_sprint_intake', ctaPlacement: 'team_visible_intake', planId: 'team' }
@@ -2141,8 +1758,6 @@ initializeTeamIntakeTelemetry();
2141
1758
  async function handleProCheckout() {
2142
1759
  var buyerIntent = globalThis.ThumbGateBuyerIntent;
2143
1760
  var email = document.getElementById('pro-email');
2144
- var checkoutLink = document.getElementById('pro-checkout-link');
2145
- trackRevenueCta(checkoutLink);
2146
1761
  var normalizedEmail = buyerIntent.normalizeBuyerEmail(email && email.value);
2147
1762
  if (!email || !buyerIntent.isValidBuyerEmail(normalizedEmail)) {
2148
1763
  email.style.border = '2px solid #f87171';
@@ -2157,10 +1772,16 @@ async function handleProCheckout() {
2157
1772
  if (globalThis.buyerJourney && typeof globalThis.buyerJourney.markEmailCaptured === 'function') {
2158
1773
  globalThis.buyerJourney.markEmailCaptured();
2159
1774
  }
1775
+ var checkoutLink = document.getElementById('pro-checkout-link');
2160
1776
  var checkoutUrl = checkoutLink ? checkoutLink.href : '/checkout/pro';
2161
1777
  if (typeof plausible === 'function') {
2162
1778
  plausible('pro_email_captured', { props: { page: 'homepage', intent: 'checkout' } });
2163
1779
  }
1780
+ sendGa4Event('begin_checkout', {
1781
+ currency: 'USD',
1782
+ value: proPriceDollars,
1783
+ items: [{ item_id: 'pro_monthly', item_name: 'ThumbGate Pro Monthly' }],
1784
+ });
2164
1785
  try {
2165
1786
  await buyerIntent.submitNewsletterSignup(normalizedEmail);
2166
1787
  } catch (_err) {