thumbgate 1.35.0 → 1.37.1

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 (196) hide show
  1. package/.agents/skills/cyberstrike-compare-not-clone/SKILL.md +36 -0
  2. package/.agents/skills/gitlab-sandbox-allowlist-not-trust/SKILL.md +77 -0
  3. package/.agents/skills/jit-harness-compare-not-clone/SKILL.md +34 -0
  4. package/.agents/skills/openui-catalog-compose-honesty/SKILL.md +64 -0
  5. package/.agents/skills/zvec-grep-compare-not-clone/SKILL.md +34 -0
  6. package/.claude-plugin/plugin.json +1 -1
  7. package/.well-known/llms.txt +1 -0
  8. package/.well-known/mcp/server-card.json +1 -1
  9. package/CONTRIBUTING.md +95 -0
  10. package/README.md +195 -632
  11. package/THIRD_PARTY_NOTICES.md +89 -0
  12. package/adapters/claude/.mcp.json +2 -2
  13. package/adapters/forge/forge.yaml +3 -3
  14. package/adapters/future-agi/.mcp.json +8 -0
  15. package/adapters/future-agi/FUTURE_AGI.md +23 -0
  16. package/adapters/future-agi/config.toml +3 -0
  17. package/adapters/future-agi/future-agi-bridge.js +9 -0
  18. package/adapters/future-agi/opencode.json +8 -0
  19. package/adapters/herdr/herdr-plugin.toml +18 -0
  20. package/adapters/mcp/server-stdio.js +238 -25
  21. package/adapters/opencode/opencode.json +1 -1
  22. package/adapters/workos/WORKOS.md +52 -0
  23. package/bin/cli.js +336 -3
  24. package/bin/futureagi-bridge +9 -0
  25. package/config/gate-templates.json +581 -4
  26. package/config/gates/actor-critic-audit.json +34 -0
  27. package/config/gates/default.json +9 -3
  28. package/config/gates/five-walls-governance.json +34 -0
  29. package/config/gates/future-agi-guardrails.json +34 -0
  30. package/config/gates/radware-threat-defense-2026.json +61 -0
  31. package/config/gates/simatree-data-governance.json +33 -0
  32. package/config/mcp-allowlists.json +4 -0
  33. package/config/merge-quality-checks.json +6 -0
  34. package/config/model-candidates.json +312 -29
  35. package/config/model-tiers.json +18 -0
  36. package/config/post-deploy-marketing-pages.json +10 -0
  37. package/config/progressive/01-wire-only.json +11 -0
  38. package/config/progressive/02-dashboard-empty-ok.json +10 -0
  39. package/config/progressive/03-one-lesson.json +10 -0
  40. package/config/progressive/04-warn-fires.json +11 -0
  41. package/config/progressive/05-strict-optional.json +11 -0
  42. package/config/progressive/README.md +15 -0
  43. package/config/schemas/broker-execution-receipt.schema.json +139 -0
  44. package/config/schemas/provider-execution-attestation-v1.schema.json +58 -0
  45. package/conformance/provider-attestation/vectors.json +320 -0
  46. package/docs/specs/provider-execution-attestation-v1.md +69 -0
  47. package/openapi/openapi.yaml +15 -0
  48. package/package.json +390 -148
  49. package/public/about.html +2 -2
  50. package/public/ai-malpractice-prevention.html +7 -7
  51. package/public/blog/a-10-dollar-vps-is-not-a-computer.html +143 -0
  52. package/public/blog/a-receipt-is-not-world-state.html +388 -0
  53. package/public/blog/git-at-agent-scale.html +374 -0
  54. package/public/blog/no-llm-in-the-gate.html +133 -0
  55. package/public/blog.html +80 -0
  56. package/public/case-studies.html +16 -1
  57. package/public/compare.html +28 -0
  58. package/public/diagnostic.html +216 -7
  59. package/public/docs/connectors.html +39 -0
  60. package/public/federal.html +2 -2
  61. package/public/founders.html +639 -0
  62. package/public/index.html +87 -9
  63. package/public/install.html +8 -8
  64. package/public/learn.html +39 -0
  65. package/public/numbers.html +2 -2
  66. package/public/peter.html +310 -0
  67. package/public/platform-partners.html +119 -0
  68. package/public/pricing.html +24 -3
  69. package/public/privacy.html +117 -0
  70. package/public/pro.html +17 -0
  71. package/public/support.html +62 -0
  72. package/public/terms.html +130 -0
  73. package/public/third-party-notices.html +95 -0
  74. package/public/yt.html +351 -0
  75. package/scripts/action-receipts.js +133 -3
  76. package/scripts/adaptive-governance-arena.js +349 -0
  77. package/scripts/admin-override.js +205 -0
  78. package/scripts/agent-action-inventory.js +869 -0
  79. package/scripts/agent-audit-trace.js +42 -2
  80. package/scripts/agent-egress-policy.js +1117 -0
  81. package/scripts/agent-memory-lifecycle.js +141 -2
  82. package/scripts/agent-operations-planner.js +441 -1
  83. package/scripts/agent-readiness.js +68 -0
  84. package/scripts/agent-security-central.js +647 -0
  85. package/scripts/allowlist-bridge-honesty.js +417 -0
  86. package/scripts/async-job-runner.js +102 -11
  87. package/scripts/audit-trail.js +212 -0
  88. package/scripts/billing.js +1 -1
  89. package/scripts/broker-execution-receipts.js +719 -0
  90. package/scripts/budget-aware-gates-proof.js +423 -0
  91. package/scripts/claude-feedback-sync.js +29 -3
  92. package/scripts/claw-harness-production.js +237 -0
  93. package/scripts/cli-schema.js +163 -1
  94. package/scripts/codex-runbook-flywheel.js +318 -0
  95. package/scripts/context-footprint.js +186 -0
  96. package/scripts/contextfs.js +143 -61
  97. package/scripts/dashboard.js +251 -32
  98. package/scripts/deepseek-v4-runtime-guardrails.js +72 -6
  99. package/scripts/docker-sandbox-planner.js +18 -0
  100. package/scripts/double-blind-eval-protocol.js +252 -0
  101. package/scripts/edotenv-rl-gateway.js +259 -0
  102. package/scripts/ensure-production-search-corpus.js +162 -0
  103. package/scripts/eval-holdout.js +311 -0
  104. package/scripts/feedback-aggregate.js +21 -2
  105. package/scripts/feedback-loop.js +87 -5
  106. package/scripts/feedback-quality.js +9 -0
  107. package/scripts/file-ledger-lock.js +4 -1
  108. package/scripts/financial-control-plane.js +41 -1
  109. package/scripts/find-dormant-requires.js +118 -0
  110. package/scripts/fs-utils.js +84 -8
  111. package/scripts/gates-engine.js +810 -63
  112. package/scripts/generate-case-study-outreach.js +24 -15
  113. package/scripts/git-at-scale.js +628 -0
  114. package/scripts/governance-conflict-audit.js +1650 -0
  115. package/scripts/governance-difficulty-curriculum.js +328 -0
  116. package/scripts/graphrag-retrieval.js +275 -0
  117. package/scripts/gurobi-optimizer.js +324 -0
  118. package/scripts/gurobi_optimizer.py +485 -0
  119. package/scripts/harness-selector.js +82 -1
  120. package/scripts/hidden-entry-points.js +284 -0
  121. package/scripts/human-escalation.js +199 -1
  122. package/scripts/hybrid-feedback-context.js +152 -19
  123. package/scripts/intent-governed-execution.js +602 -0
  124. package/scripts/intervention-policy.js +123 -20
  125. package/scripts/jit-harness-compose.js +628 -0
  126. package/scripts/jsonl-watcher.js +10 -0
  127. package/scripts/lesson-embedding-index.js +95 -12
  128. package/scripts/lesson-retrieval.js +105 -19
  129. package/scripts/local-model-profile.js +19 -2
  130. package/scripts/mailer/resend-mailer.js +1 -1
  131. package/scripts/matryoshka-embedding.js +235 -0
  132. package/scripts/mcp-oauth.js +42 -4
  133. package/scripts/mcp-session-handles.js +1016 -0
  134. package/scripts/mcp-wiring-doctor.js +314 -0
  135. package/scripts/memory-firewall.js +115 -2
  136. package/scripts/memory-scope-readiness.js +299 -0
  137. package/scripts/memory-vs-rag-route.js +161 -0
  138. package/scripts/model-tier-router.js +148 -21
  139. package/scripts/nvidia-specdecode-al-doctor.js +536 -0
  140. package/scripts/openui-catalog-compose-honesty.js +593 -0
  141. package/scripts/operational-integrity.js +19 -1
  142. package/scripts/override-audit.js +213 -0
  143. package/scripts/package-manager-honesty-doctor.js +458 -0
  144. package/scripts/pr-manager.js +63 -1
  145. package/scripts/prove-herdr-adapter.js +52 -0
  146. package/scripts/prove-memory-pyramid-and-symbolic-canvas.js +95 -0
  147. package/scripts/prove-workos.js +73 -0
  148. package/scripts/provider-attestation-conformance.js +192 -0
  149. package/scripts/provider-receipt-contract.js +136 -0
  150. package/scripts/qwen38-max-cost-optimizer.js +401 -0
  151. package/scripts/radware-threat-defense.js +280 -0
  152. package/scripts/rag-embedding-identity.js +221 -0
  153. package/scripts/rag-precision-guardrails.js +112 -2
  154. package/scripts/remote-feedback-capture.js +159 -0
  155. package/scripts/research-agent-harness.js +256 -0
  156. package/scripts/rsi-safety-hillclimb.js +200 -0
  157. package/scripts/rule-sprawl.js +188 -0
  158. package/scripts/schedule-manager.js +147 -0
  159. package/scripts/self-heal.js +8 -0
  160. package/scripts/session-lease.js +415 -0
  161. package/scripts/simatree-data-governance.js +347 -0
  162. package/scripts/slo-alert-engine.js +172 -7
  163. package/scripts/solver-parity.js +539 -0
  164. package/scripts/stealth-memory-injection-gate.js +333 -0
  165. package/scripts/switchyard-router.js +366 -0
  166. package/scripts/telemetry-analytics.js +84 -27
  167. package/scripts/temporal-decay-weighting.js +138 -0
  168. package/scripts/test-all.js +165 -0
  169. package/scripts/token-savings.js +42 -0
  170. package/scripts/tool-kpi-tracker.js +108 -5
  171. package/scripts/tool-registry.js +193 -5
  172. package/scripts/universal-claim-evaluator.js +14 -2
  173. package/scripts/vector-store.js +279 -9
  174. package/scripts/workflow-notebook.js +391 -0
  175. package/scripts/workflow-sentinel.js +111 -12
  176. package/scripts/workos-production-guard.js +260 -0
  177. package/scripts/workspace-search-route.js +515 -0
  178. package/server.json +2 -2
  179. package/src/agent-identity-boundary.js +76 -0
  180. package/src/agent-retrieval-cache.js +155 -0
  181. package/src/alert-noise-ledger.js +502 -0
  182. package/src/api/server.js +724 -153
  183. package/src/git-fast-cache.js +220 -0
  184. package/src/git-wal-sync.js +156 -0
  185. package/src/hash-anchored-edit.js +82 -0
  186. package/src/hermes-platform-protocol.js +475 -0
  187. package/src/hermes-sync-plane.js +241 -0
  188. package/src/index.js +30 -1
  189. package/src/iso42001-compliance-guard.js +97 -0
  190. package/src/latency-budget.js +244 -0
  191. package/src/mcp-writeguard.js +316 -0
  192. package/src/miminions-adapter.js +106 -0
  193. package/src/pipeline-compass.js +104 -0
  194. package/src/ppl-alert-pipeline.js +284 -0
  195. package/src/rendezvous-router.js +90 -0
  196. package/src/security-questionnaire.js +195 -0
@@ -273,6 +273,27 @@
273
273
  <p><a href="/compare/rein" class="cta">Read ThumbGate vs Rein</a></p>
274
274
  </div>
275
275
 
276
+ <div class="card">
277
+ <h3>Evaluating Agoragentic?</h3>
278
+ <p>Agoragentic is an agent OS plus marketplace (mandate, budget, receipts). ThumbGate is the coding-agent PreToolUse firewall. Adjacent layers. A receipt is not world-state proof.</p>
279
+ <p><a href="/compare/agoragentic" class="cta">Read ThumbGate vs Agoragentic</a></p>
280
+ <h3>Evaluating Dirac?</h3>
281
+ <p>Dirac is a token-efficient coding agent (hash-anchored edits, AST batching). ThumbGate is the PreToolUse firewall. Adjacent layers. Their 64.8% cheaper figure is their eval table, not ours.</p>
282
+ <p><a href="/compare/dirac" class="cta">Read ThumbGate vs Dirac</a></p>
283
+ </div>
284
+
285
+ <div class="card">
286
+ <h3>Rolling out Tailscale Aperture?</h3>
287
+ <p>Aperture is Tailscale&rsquo;s identity-aware AI gateway: model access over the tailnet without distributing API keys, with project tool permissions and audit. ThumbGate is the PreToolUse gate on the tool calls those agents emit. Adjacent layers that compose.</p>
288
+ <p><a href="/compare/aperture" class="cta">Read ThumbGate vs Tailscale Aperture</a></p>
289
+ </div>
290
+
291
+ <div class="card">
292
+ <h3>Running OpenMono’s local agent?</h3>
293
+ <p>OpenMono already has a Docker sandbox, a 12-step pipeline, and a fixed 3× doom-loop abort. Those controls are static and per-run. ThumbGate is the learning layer so Monday’s failure becomes Tuesday’s block — complementary, not a substitute.</p>
294
+ <p><a href="/compare/openmono" class="cta">Read ThumbGate vs OpenMono</a></p>
295
+ </div>
296
+
276
297
  <h2>All ThumbGate comparisons</h2>
277
298
  <p style="color:var(--muted);">Every head-to-head in one place. ThumbGate is the local-first, learning enforcement layer at the tool-call boundary — most of these tools sit at a different layer and are complementary.</p>
278
299
  <ul class="compare-index">
@@ -283,9 +304,14 @@
283
304
  <li><a href="/compare/bumblebee">ThumbGate vs Bumblebee</a> — runtime enforcement pairs with static inventory</li>
284
305
  <li><a href="/compare/anthropic-containment">ThumbGate vs Anthropic's Claude Containment</a> — an IDE-agent extension of Anthropic's published architecture</li>
285
306
  <li><a href="/compare/oak-and-sparrow-gatekeeper">ThumbGate vs Gatekeeper (Oak &amp; Sparrow)</a> — agent-action gate pairs with a workforce-input gate</li>
307
+ <li><a href="/compare/cloudflare-writeguard">ThumbGate vs Cloudflare WriteGuard</a> — runtime tool-call gate pairs with a portal MCP gate</li>
286
308
  <li><a href="/compare/fallow">ThumbGate vs Fallow</a> — static analysis vs agent-action enforcement</li>
287
309
  <li><a href="/compare/heidi">ThumbGate vs HEIDI</a> — behavior enforcement vs supply-chain scanning</li>
288
310
  <li><a href="/compare/rein">ThumbGate vs Rein</a> — coding-agent governance vs generic decorator governance</li>
311
+ <li><a href="/compare/openmono">ThumbGate vs OpenMono</a> — learning firewall vs static local-agent sandbox</li>
312
+ <li><a href="/compare/agoragentic">ThumbGate vs Agoragentic</a> — coding-agent PreToolUse gate vs agent OS + marketplace</li>
313
+ <li><a href="/compare/dirac">ThumbGate vs Dirac</a> — coding-agent PreToolUse gate vs token-efficient coding agent</li>
314
+ <li><a href="/compare/aperture">ThumbGate vs Tailscale Aperture</a> — tool-call gate vs identity-aware AI gateway on the tailnet</li>
289
315
  <li><a href="/compare/anthropic-claude-for-legal">ThumbGate vs Claude for Legal</a> — runtime gate pairs with Anthropic's practice-area plugins</li>
290
316
  <li><a href="/compare/mem0">ThumbGate vs Mem0</a> — enforcement vs memory for AI agents</li>
291
317
  <li><a href="/compare/speclock">ThumbGate vs SpecLock</a> — thumbs-feedback enforcement vs manual specs</li>
@@ -297,6 +323,8 @@
297
323
  <li><a href="/compare/databricks-unity-ai-gateway">ThumbGate vs Databricks Unity AI Gateway</a> — enterprise gateway vs local pre-action gates</li>
298
324
  <li><a href="/compare/hermes-everos-memory">ThumbGate vs Hermes and EverOS</a> — local-first behavior gates vs passive agent memory stores</li>
299
325
  <li><a href="/compare/far-ai">ThumbGate vs FAR.AI</a> — runtime agent enforcement vs frontier safety research and evaluation</li>
326
+ <li><a href="/compare/edotenv">ThumbGate vs EdotEnv</a> — runtime research-cycle gates vs RSI RL environments (harder-next-round transfer)</li>
327
+ <li><a href="/compare/langfuse-langsmith-observability">ThumbGate vs Langfuse / LangSmith / Braintrust / Arize</a> — pre-action enforcement vs LLM observability and eval platforms</li>
300
328
  </ul>
301
329
 
302
330
  <h2>How It Works</h2>
@@ -182,10 +182,72 @@ section {
182
182
  }
183
183
  .box h3 { margin: 0 0 8px; }
184
184
  .box p { margin: 0; color: var(--muted); }
185
+ .pain-grid, .steps {
186
+ display: grid;
187
+ grid-template-columns: repeat(3, minmax(0, 1fr));
188
+ gap: 14px;
189
+ }
190
+ .pain, .step {
191
+ min-height: 140px;
192
+ padding: 18px;
193
+ border: 1px solid var(--line);
194
+ border-radius: 8px;
195
+ background: var(--panel-2);
196
+ }
197
+ .pain h3, .step h3 { margin: 0 0 8px; font-size: 17px; }
198
+ .pain p, .step p { margin: 0; color: var(--muted); font-size: 14px; }
199
+ .step-num { color: var(--cyan); font-weight: 900; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; }
200
+ .table-wrap {
201
+ overflow-x: auto;
202
+ border: 1px solid var(--line);
203
+ border-radius: 8px;
204
+ background: var(--panel);
205
+ }
206
+ table.compare {
207
+ width: 100%;
208
+ border-collapse: collapse;
209
+ min-width: 640px;
210
+ font-size: 14px;
211
+ }
212
+ table.compare th, table.compare td {
213
+ padding: 12px 14px;
214
+ border-bottom: 1px solid var(--line);
215
+ text-align: left;
216
+ vertical-align: top;
217
+ }
218
+ table.compare th { background: #0b1114; color: var(--cyan); }
219
+ table.compare td:last-child { color: var(--green); font-weight: 800; }
220
+ .faq-item { border-bottom: 1px solid var(--line); }
221
+ .faq-q {
222
+ width: 100%;
223
+ border: 0;
224
+ background: transparent;
225
+ color: var(--text);
226
+ text-align: left;
227
+ padding: 16px 0;
228
+ font: inherit;
229
+ font-weight: 800;
230
+ cursor: pointer;
231
+ }
232
+ .faq-a { display: none; padding: 0 0 16px; color: var(--muted); }
233
+ .faq-item.open .faq-a { display: block; }
234
+ .cta-band {
235
+ margin-top: 22px;
236
+ padding: 20px;
237
+ border: 1px solid var(--line);
238
+ border-radius: 8px;
239
+ background: var(--panel);
240
+ display: flex;
241
+ flex-wrap: wrap;
242
+ gap: 12px;
243
+ align-items: center;
244
+ justify-content: space-between;
245
+ }
246
+ .cta-band p { margin: 0; color: var(--muted); }
185
247
  footer { padding: 32px 0 44px; color: var(--muted); }
186
248
  @media (max-width: 860px) {
187
249
  header { align-items: flex-start; flex-direction: column; }
188
- .hero, .grid, .proof-strip { grid-template-columns: 1fr; }
250
+ .hero, .grid, .proof-strip, .pain-grid, .steps { grid-template-columns: 1fr; }
189
251
  h1 { font-size: 42px; }
190
252
  }
191
253
  </style>
@@ -210,7 +272,7 @@ footer { padding: 32px 0 44px; color: var(--muted); }
210
272
  }
211
273
  </script>
212
274
  </head>
213
- <body>
275
+ <body id="top">
214
276
  <header>
215
277
  <a class="brand" href="/">
216
278
  <img class="mark" src="/assets/brand/thumbgate-mark-inline-v3.svg" alt="ThumbGate" width="28" height="28" />
@@ -218,6 +280,7 @@ footer { padding: 32px 0 44px; color: var(--muted); }
218
280
  </a>
219
281
  <nav aria-label="Primary">
220
282
  <a href="/">Home</a>
283
+ <a href="/founders">Founders</a>
221
284
  <a href="/pricing">Pricing</a>
222
285
  <a href="/llm-context.md">LLM Context</a>
223
286
  </nav>
@@ -226,8 +289,8 @@ footer { padding: 32px 0 44px; color: var(--muted); }
226
289
  <div class="hero">
227
290
  <div>
228
291
  <div class="eyebrow">Enterprise Workflow Gate · $499 entry offer</div>
229
- <h1>Turn one repeated AI-agent failure into a gate you can prove.</h1>
230
- <p class="lede">Send the workflow that keeps failing. ThumbGate configures what should allow, warn, or deny before an agent writes, sends, deploys, or spends—and adds the regression proof.</p>
292
+ <h1>Your agents did the wrong thing again, and you found out afterward.</h1>
293
+ <p class="lede">Wrong customer email sent. Branch force-pushed. Deploy shipped past approval. You run agents across lead gen, content, sales, and ops, and every one of them is one bad tool call from work you undo by hand. Your agent team needs a firewall: ThumbGate configures what should allow, warn, or deny before the agent writes, sends, deploys, or spends—and adds the regression proof.</p>
231
294
  <div class="actions">
232
295
  <form class="diagnostic-pay-form" action="/go/diagnostic-pay" method="POST" data-diagnostic-pay-form>
233
296
  <input type="hidden" name="utm_source" value="diagnostic_page">
@@ -277,6 +340,58 @@ footer { padding: 32px 0 44px; color: var(--muted); }
277
340
  <p class="hint" data-diagnostic-payment-hint>Ready to pay now? Use the $499 managed-gate checkout above. If the workflow is not a supported fit, we refund the order instead of opening a larger consulting scope.</p>
278
341
  </form>
279
342
  </div>
343
+ <section data-oceans-pain>
344
+ <h2>You didn't hire AI agents to manage calendars of incidents.</h2>
345
+ <p class="lede" style="font-size:17px;">Every repeat costs you twice: once when the agent gets it wrong, and again when you stop your own work to find it, undo it, and re-explain the rule that was already written down.</p>
346
+ <div class="pain-grid">
347
+ <div class="pain">
348
+ <h3>Drowning in operational agent tasks</h3>
349
+ <p>Repeat failures eat strategic time: bad diffs, wrong sends, unsafe deploys, spend without proof.</p>
350
+ </div>
351
+ <div class="pain">
352
+ <h3>Tried prompts before — quality drifts</h3>
353
+ <p>Rules in markdown get skipped when the agent looks competent. You need a check before the tool runs.</p>
354
+ </div>
355
+ <div class="pain">
356
+ <h3>US hires and GRC suites are slow capital</h3>
357
+ <p>Months of process for a dashboard. The $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ offer hardens one concrete workflow in two business days after access.</p>
358
+ </div>
359
+ </div>
360
+ </section>
361
+ <section data-oceans-process>
362
+ <h2>From first call to a proved gate</h2>
363
+ <p class="lede" style="font-size:17px;">We'll tell you if ThumbGate is the wrong fit. If you already paid and it is not a supported gate, we refund.</p>
364
+ <div class="steps">
365
+ <div class="step">
366
+ <div class="step-num">01 · Discovery</div>
367
+ <h3>Fit check (15–60 min)</h3>
368
+ <p>Map the repeated failure to a PreToolUse boundary. Submit the form above if you want fit before checkout.</p>
369
+ </div>
370
+ <div class="step">
371
+ <div class="step-num">02 · Install</div>
372
+ <h3>Configure ALLOW / WARN / DENY</h3>
373
+ <p>One local gate on the agreed workflow — not a multi-system rewrite.</p>
374
+ </div>
375
+ <div class="step">
376
+ <div class="step-num">03 · Proof</div>
377
+ <h3>Two business days after access</h3>
378
+ <p>Regression test plus rollout and rollback evidence for the next similar action.</p>
379
+ </div>
380
+ </div>
381
+ </section>
382
+ <section data-diagnostic-qualification>
383
+ <h2>Before you go further, check whether this is actually yours.</h2>
384
+ <div class="grid">
385
+ <div class="box">
386
+ <h3>This is for you if</h3>
387
+ <p>You run one or more AI agents that take real actions — writing code, sending mail, updating records, deploying, spending. One specific action has gone wrong more than once. You can name the command, tool call, repo, or destination involved. You want the boundary enforced at the tool call, not restated in a prompt. You want to delegate more to your agents, not less, and you need a check you can point at before you do.</p>
388
+ </div>
389
+ <div class="box">
390
+ <h3>This is not for you if</h3>
391
+ <p>The failure is a one-off you cannot reproduce. The problem is model quality rather than a risky action — a gate blocks a bad send, it does not make the draft better. You want an org-wide hosted policy, SSO, a shared audit dashboard, or a compliance certificate; those are separate scope and hosted Enterprise capabilities are not generally available. You want someone to run the workflow for you. ThumbGate constrains agents, it does not replace them.</p>
392
+ </div>
393
+ </div>
394
+ </section>
280
395
  <section>
281
396
  <h2>Exactly what the $499 Enterprise Workflow Gate includes</h2>
282
397
  <p class="lede" style="font-size:17px;">One workflow, one 60-minute working review, one configured local gate and regression test, plus rollout and rollback proof within two business days after access and the agreed workflow materials are available.</p>
@@ -296,8 +411,8 @@ footer { padding: 32px 0 44px; color: var(--muted); }
296
411
  </div>
297
412
  <div class="intake-card" style="margin-top:16px;" data-diagnostic-fit-terms>
298
413
  <h3 style="margin-top:0;">Fit and refund boundary</h3>
299
- <p>If the repeated failure cannot be reduced to one supported ThumbGate gate, the $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ order is refunded instead of being silently converted into a larger service.</p>
300
- <p class="hint">This is the enterprise entry offer for one workflow. Multi-workflow rollout, ongoing monitoring, shared hosting, compliance work, and hosted Enterprise capabilities are not included or generally available.</p>
414
+ <p>If the repeated failure cannot be reduced to one supported ThumbGate gate, the $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ order is refunded instead of being silently converted into a larger service. This fence matches the <a href="/terms">Terms of Service</a> Module B deliverable and refund language exactly.</p>
415
+ <p class="hint">This is the enterprise entry offer for one workflow. Multi-workflow rollout, ongoing monitoring, shared hosting, compliance work, and hosted Enterprise capabilities are not included or generally available. Legal summaries: <a href="/privacy">Privacy</a> · <a href="/security">Security</a> · <a href="/legal">Legal index</a>.</p>
301
416
  </div>
302
417
  </section>
303
418
  <section>
@@ -333,11 +448,94 @@ footer { padding: 32px 0 44px; color: var(--muted); }
333
448
  </div>
334
449
  </div>
335
450
  </section>
451
+ <section data-oceans-compare>
452
+ <h2>How ThumbGate stacks up</h2>
453
+ <p class="lede" style="font-size:17px;">Same problem, four ways to pay for it. Compare on what you spend before the first hard boundary exists.</p>
454
+ <div class="table-wrap">
455
+ <table class="compare">
456
+ <thead>
457
+ <tr>
458
+ <th></th>
459
+ <th>DIY prompts</th>
460
+ <th>US full-time platform hire</th>
461
+ <th>Typical VA / freelance ops</th>
462
+ <th>ThumbGate diagnostic</th>
463
+ </tr>
464
+ </thead>
465
+ <tbody>
466
+ <tr>
467
+ <td>Starting cost</td>
468
+ <td>Model + review time</td>
469
+ <td>$5,500–7,000+/mo loaded</td>
470
+ <td>$2,500–5,000/mo</td>
471
+ <td>$__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ once</td>
472
+ </tr>
473
+ <tr>
474
+ <td>Time to first hard boundary</td>
475
+ <td>Manual upkeep</td>
476
+ <td>2–4 months</td>
477
+ <td>1–5 weeks (varies)</td>
478
+ <td>2 business days after access</td>
479
+ </tr>
480
+ <tr>
481
+ <td>If the match is wrong</td>
482
+ <td>You keep thrashing</td>
483
+ <td>Costly to replace</td>
484
+ <td>Restart search</td>
485
+ <td>Refund if not a supported fit</td>
486
+ </tr>
487
+ </tbody>
488
+ </table>
489
+ </div>
490
+ </section>
491
+ <section data-oceans-faq>
492
+ <h2>Questions before you book checkout</h2>
493
+ <div class="faq">
494
+ <div class="faq-item">
495
+ <button class="faq-q" type="button" aria-expanded="false">How fast can I get started?</button>
496
+ <div class="faq-a">Checkout or fit form today. Managed delivery is two business days after access and agreed workflow materials. Free evaluate: <code>npx thumbgate init</code>.</div>
497
+ </div>
498
+ <div class="faq-item">
499
+ <button class="faq-q" type="button" aria-expanded="false">What if the workflow is not the right fit?</button>
500
+ <div class="faq-a">We refund the $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__ order instead of expanding into open consulting. Bad matches stay rare because the fence is one supported local gate.</div>
501
+ </div>
502
+ <div class="faq-item">
503
+ <button class="faq-q" type="button" aria-expanded="false">Is this a long-term contract?</button>
504
+ <div class="faq-a">No. Diagnostic is one-time. Pro is $19/mo optional. Multi-workflow enterprise scope is separate after proof.</div>
505
+ </div>
506
+ <div class="faq-item">
507
+ <button class="faq-q" type="button" aria-expanded="false">How is this different from Upwork or hiring ops talent?</button>
508
+ <div class="faq-a">Those add humans. ThumbGate hardens the agents you already run with a pre-action gate, regression test, and written proof. Humans stay for exceptions.</div>
509
+ </div>
510
+ </div>
511
+ <div class="cta-band">
512
+ <div>
513
+ <p><strong>Two paths from here.</strong></p>
514
+ <p><strong>Path one:</strong> close this tab and keep paying for the same repeat — you find it after it lands, you undo it by hand, and the rule stays written in a file the agent can skip.<br>
515
+ <strong>Path two:</strong> send the one workflow that keeps failing and get it back as a configured gate with a regression test and written rollout and rollback proof, two business days after access.</p>
516
+ <p class="hint" style="margin-top:10px;">Refunded if the failure cannot be reduced to one supported ThumbGate gate. Runs locally on your machine. Want the free path first? <code>npx thumbgate init</code> — no account, nothing sent to us. See the <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/VERIFICATION_EVIDENCE.md" target="_blank" rel="noopener">verification evidence</a>.</p>
517
+ </div>
518
+ <div class="actions">
519
+ <a class="button primary" href="#top" data-revenue-cta data-cta-id="diagnostic_bottom_buy" data-cta-placement="bottom_band">Harden my workflow — $__SPRINT_DIAGNOSTIC_PRICE_DOLLARS__</a>
520
+ </div>
521
+ </div>
522
+ </section>
336
523
  </main>
337
524
  <footer>
338
- ThumbGate is local-first agent governance. <a href="/pricing">Buy the managed workflow gate</a> or submit one workflow above for a fit check.
525
+ ThumbGate is local-first agent governance. <a href="/pricing">Buy the managed workflow gate</a>, see the <a href="/founders">founders conversion page</a>, or submit one workflow above for a fit check.
526
+ · <a href="/terms">Terms</a> · <a href="/privacy">Privacy</a> · <a href="/security">Security</a> · <a href="/legal">Legal</a>
339
527
  </footer>
340
528
  <script>
529
+ 'use strict';
530
+ document.querySelectorAll('.faq-q').forEach((button) => {
531
+ button.addEventListener('click', () => {
532
+ const item = button.closest('.faq-item');
533
+ const open = item.classList.toggle('open');
534
+ button.setAttribute('aria-expanded', open ? 'true' : 'false');
535
+ });
536
+ });
537
+ </script>
538
+ <script>
341
539
  (function () {
342
540
  const search = new URLSearchParams(window.location.search);
343
541
  const paidForm = document.querySelector('[data-diagnostic-pay-form]');
@@ -382,7 +580,18 @@ footer { padding: 32px 0 44px; color: var(--muted); }
382
580
  }
383
581
  }
384
582
 
583
+ function privacySignalOptOut() {
584
+ try {
585
+ return navigator.globalPrivacyControl === true
586
+ || navigator.doNotTrack === '1'
587
+ || window.doNotTrack === '1';
588
+ } catch (_) {
589
+ return false;
590
+ }
591
+ }
592
+
385
593
  function telemetry(eventName, props) {
594
+ if (privacySignalOptOut()) return;
386
595
  try {
387
596
  navigator.sendBeacon && navigator.sendBeacon('/v1/telemetry/ping', JSON.stringify({
388
597
  event: eventName,
@@ -0,0 +1,39 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Remote MCP Connector Documentation — ThumbGate</title>
7
+ <meta name="description" content="Remote MCP Connector documentation for ThumbGate, OAuth 2.1 PKCE flow, and read-only reviewer credentials.">
8
+ <link rel="canonical" href="https://thumbgate.ai/docs/connectors">
9
+ <style>
10
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; line-height: 1.6; max-width: 800px; margin: 40px auto; padding: 0 20px; color: #111; }
11
+ h1 { color: #000; font-size: 2rem; border-bottom: 2px solid #eaeaea; padding-bottom: 12px; }
12
+ code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; }
13
+ pre { background: #f4f4f4; padding: 16px; border-radius: 6px; overflow-x: auto; }
14
+ footer { margin-top: 40px; border-top: 1px solid #eaeaea; padding-top: 20px; font-size: 0.9em; color: #666; }
15
+ </style>
16
+ </head>
17
+ <body>
18
+ <header>
19
+ <a href="/">ThumbGate Home</a> · <a href="/pricing">Pricing</a> · <a href="/support">Support</a>
20
+ </header>
21
+ <main>
22
+ <h1>Remote MCP Connector Documentation</h1>
23
+ <p>ThumbGate provides secure, direct remote Model Context Protocol (MCP) connectivity for autonomous AI agents, enterprise IDEs, and agentic workflows.</p>
24
+
25
+ <h2>Connector Endpoint & Connection URL</h2>
26
+ <p>Connect your MCP-compliant client or agent harness to the canonical endpoint at <code>/mcp</code>:</p>
27
+ <pre><code>https://thumbgate-production.up.railway.app/mcp</code></pre>
28
+
29
+ <h2>Authentication & OAuth 2.1 PKCE Flow</h2>
30
+ <p>Remote connections require authentication via <strong>OAuth 2.1 PKCE</strong> (Proof Key for Code Exchange) to ensure state-integrity and prevent authorization-code interception attacks. Interactive sessions redirect to authorize scopes before materializing transient bearer tokens.</p>
31
+
32
+ <h2>Reviewer Credential Policy</h2>
33
+ <p>For automated evaluation, security audits, and zero-trust verification loops, ThumbGate provides a read-only <strong>reviewer credential</strong>. The reviewer credential permits diagnostic evaluation (<code>SELECT</code>, <code>DESCRIBE</code>, gate telemetry readout) without granting mutation or admin access.</p>
34
+ </main>
35
+ <footer>
36
+ <p><a href="/">ThumbGate</a> · <a href="/terms">Terms of Service</a> · <a href="/privacy">Privacy Policy</a> · <a href="/support">Support</a> · Contact: <a href="mailto:support@thumbgate.ai">support@thumbgate.ai</a></p>
37
+ </footer>
38
+ </body>
39
+ </html>
@@ -200,7 +200,7 @@ __GA_BOOTSTRAP__
200
200
  Every gate decision is logged with timestamp, actor, action, policy, and evidence — the artifact OMB M-24-10 and EO 14110 ask for, generated continuously. Agency-owned policy. Vendor-neutral across Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode. On-prem or government cloud deployment via ThumbGate-Core gov mode.
201
201
  </p>
202
202
  <div class="cta-row">
203
- <a class="btn-primary" href="mailto:iganapolsky@gmail.com?subject=ThumbGate%20federal%20pilot%20scoping">Start a 30-minute scoping call →</a>
203
+ <a class="btn-primary" href="mailto:support@thumbgate.ai?subject=ThumbGate%20federal%20pilot%20scoping">Start a 30-minute scoping call →</a>
204
204
  <a class="btn-secondary" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Read the technical brief</a>
205
205
  </div>
206
206
  </div>
@@ -352,7 +352,7 @@ __GA_BOOTSTRAP__
352
352
  </div>
353
353
 
354
354
  <div style="margin-top:32px;display:flex;gap:12px;flex-wrap:wrap">
355
- <a class="btn-primary" href="mailto:iganapolsky@gmail.com?subject=ThumbGate%20federal%20pilot%20scoping">Email for a scoping call →</a>
355
+ <a class="btn-primary" href="mailto:support@thumbgate.ai?subject=ThumbGate%20federal%20pilot%20scoping">Email for a scoping call →</a>
356
356
  <a class="btn-secondary" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Read the full technical brief</a>
357
357
  </div>
358
358
  </div>