thumbgate 1.18.0 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,375 @@
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
+ __GOOGLE_SITE_VERIFICATION_META__
7
+ <title>ThumbGate for Federal Agencies | Auditable pre-action gates for AI coding agents</title>
8
+ <meta name="description" content="ThumbGate is a pre-action enforcement layer for AI coding agents used inside federal agencies. Auditable agent behavior, agency-owned policy, vendor-neutral. Pilot-ready posture mapped to NIST 800-53 and OMB M-24-10.">
9
+ <meta property="og:title" content="ThumbGate for Federal Agencies">
10
+ <meta property="og:description" content="Auditable pre-action gates for AI coding agents inside federal agencies. Maps to NIST 800-53 (AC-3, AU-2/3/12, CM-3, IR-4, SI-4) and OMB M-24-10. Air-gapped deployment via ThumbGate-Core gov mode.">
11
+ <meta property="og:type" content="website">
12
+ <meta property="og:url" content="__APP_ORIGIN__/federal">
13
+ <link rel="canonical" href="__APP_ORIGIN__/federal">
14
+ <link rel="icon" type="image/png" href="/thumbgate-icon.png">
15
+ <link rel="apple-touch-icon" href="/assets/brand/thumbgate-mark.svg">
16
+ <meta property="og:image" content="/og.png">
17
+ <meta name="keywords" content="ThumbGate federal, AI agent governance federal, NIST 800-53 AI agent, OMB M-24-10, EO 14110, FedRAMP AI coding agent, federal AI use case inventory, agent audit log, agency AI policy enforcement, Bedrock GovCloud, Azure Government AI, SBIR AI governance">
18
+
19
+ <script defer data-domain="thumbgate-production.up.railway.app" src="https://plausible.io/js/script.js"></script>
20
+ __GA_BOOTSTRAP__
21
+
22
+ <script>
23
+ const gaMeasurementId = '__GA_MEASUREMENT_ID__';
24
+ const serverVisitorId = '__SERVER_VISITOR_ID__';
25
+ const serverSessionId = '__SERVER_SESSION_ID__';
26
+ const serverAcquisitionId = '__SERVER_ACQUISITION_ID__';
27
+ const serverTelemetryCaptured = '__SERVER_TELEMETRY_CAPTURED__' === 'true';
28
+ </script>
29
+
30
+ <script type="application/ld+json">
31
+ {
32
+ "@context": "https://schema.org",
33
+ "@type": "SoftwareApplication",
34
+ "name": "ThumbGate for Federal Agencies",
35
+ "applicationCategory": "DeveloperApplication",
36
+ "operatingSystem": "Cross-platform, Node.js >=18.18.0",
37
+ "description": "Pre-action enforcement layer for AI coding agents used inside federal agencies. Produces auditable agent behavior evidence mapped to NIST 800-53 Rev 5 and OMB M-24-10. Vendor-neutral across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode.",
38
+ "url": "__APP_ORIGIN__/federal",
39
+ "dateModified": "2026-05-13",
40
+ "creator": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
41
+ "audience": { "@type": "Audience", "audienceType": "Federal agency AI use-case owners, CIOs, CTOs, SBIR program managers, federal systems integrators" }
42
+ }
43
+ </script>
44
+
45
+ <script type="application/ld+json">
46
+ {
47
+ "@context": "https://schema.org",
48
+ "@type": "FAQPage",
49
+ "mainEntity": [
50
+ { "@type": "Question", "name": "Is ThumbGate FedRAMP authorized?", "acceptedAnswer": { "@type": "Answer", "text": "Not yet. ThumbGate has a pilot-ready posture and is targeting FedRAMP Low baseline via agency sponsorship. ThumbGate-Core gov mode supports on-prem and government cloud deployment for pilot work in research enclaves and innovation labs." } },
51
+ { "@type": "Question", "name": "Does ThumbGate require sending agency data to a public LLM?", "acceptedAnswer": { "@type": "Answer", "text": "No. ThumbGate-Core gov mode routes all model calls through Bedrock GovCloud or Azure Government. Air-gapped installs are supported with no telemetry and no auto-update. The enforcement engine itself runs locally and does not require any model call to make a gate decision." } },
52
+ { "@type": "Question", "name": "Which NIST 800-53 controls does ThumbGate produce evidence for?", "acceptedAnswer": { "@type": "Answer", "text": "AC-3, AC-6, AU-2, AU-3, AU-12, CM-3, CM-7, IR-4, RA-5, SI-4, and SI-7. Full mapping is published in the public docs/FEDERAL.md document on GitHub." } },
53
+ { "@type": "Question", "name": "How does ThumbGate align with OMB M-24-10?", "acceptedAnswer": { "@type": "Answer", "text": "Gate-decision telemetry produces a continuous AI use-case inventory required under §5(a). Pre-action evidence gates enforce minimum risk-management practices required under §5(c) for safety- and rights-impacting AI. Structured audit logs are exportable for the §5(d) annual disclosure cycle." } },
54
+ { "@type": "Question", "name": "Does using ThumbGate inside an agency affect open-source contributors?", "acceptedAnswer": { "@type": "Answer", "text": "No. Federal capabilities are an additive Core deployment profile, not a fork. The open-source ThumbGate that developers install from npm is byte-identical regardless of any federal work happening in ThumbGate-Core. Five architectural invariants protecting the dev product are pinned by regression tests." } },
55
+ { "@type": "Question", "name": "What does a pilot look like?", "acceptedAnswer": { "@type": "Answer", "text": "A 30-minute scoping call to identify one agent workflow inside the agency. ThumbGate-Core gov mode installed in an isolated environment. Two weeks of monitored gate decisions on a real workflow. A written report covering captured behavior, blocked actions, and NIST control evidence produced. No procurement vehicle required for Phase 0/1." } },
56
+ { "@type": "Question", "name": "Is there a federal RAG product?", "acceptedAnswer": { "@type": "Answer", "text": "Not yet, and not on speculation. RAG over agency policy or document corpora will be built when a pilot agency names a specific use case. The supporting pieces (vector store, embeddings, reranker, hallucination detector) already exist as agency-neutral building blocks." } }
57
+ ]
58
+ }
59
+ </script>
60
+
61
+ <style>
62
+ *, *::before, *::after { box-sizing: border-box; }
63
+ :root {
64
+ --bg: #0a0a0b;
65
+ --bg-raised: #111113;
66
+ --bg-card: #161618;
67
+ --border: #232327;
68
+ --text: #ececf1;
69
+ --text-muted: #9a9aa6;
70
+ --cyan: #22d3ee;
71
+ --cyan-dim: rgba(34, 211, 238, 0.12);
72
+ --cyan-glow: rgba(34, 211, 238, 0.22);
73
+ --green: #4ade80;
74
+ --green-dim: rgba(74, 222, 128, 0.12);
75
+ --amber: #fbbf24;
76
+ --amber-dim: rgba(251, 191, 36, 0.12);
77
+ --red: #f87171;
78
+ --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Inter', Roboto, sans-serif;
79
+ --mono: 'SF Mono', 'Cascadia Code', 'JetBrains Mono', 'Fira Code', Consolas, monospace;
80
+ }
81
+ html { scroll-behavior: smooth; }
82
+ body {
83
+ margin: 0;
84
+ font-family: var(--font);
85
+ background:
86
+ radial-gradient(circle at top, rgba(34, 211, 238, 0.16) 0%, rgba(34, 211, 238, 0) 28%),
87
+ linear-gradient(180deg, #0a0a0b 0%, #0d1016 48%, #0a0a0b 100%);
88
+ color: var(--text);
89
+ line-height: 1.6;
90
+ -webkit-font-smoothing: antialiased;
91
+ }
92
+ a { color: inherit; }
93
+ .container { max-width: 1040px; margin: 0 auto; padding: 0 24px; }
94
+ nav {
95
+ position: sticky; top: 0; z-index: 50;
96
+ backdrop-filter: blur(12px);
97
+ background: rgba(10, 10, 11, 0.86);
98
+ border-bottom: 1px solid rgba(35, 35, 39, 0.92);
99
+ }
100
+ nav .container { min-height: 68px; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
101
+ .nav-logo { font-size: 15px; font-weight: 700; letter-spacing: -0.02em; text-decoration: none; display: inline-flex; align-items: center; gap: 8px; }
102
+ .nav-logo .logo-mark { width: 28px; height: 28px; display: block; }
103
+ .nav-logo span { color: var(--cyan); }
104
+ .nav-links { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; }
105
+ .nav-links a { color: var(--text-muted); text-decoration: none; font-size: 13px; }
106
+ .nav-links a:hover { color: var(--text); }
107
+
108
+ header.hero { padding: 80px 0 56px; }
109
+ .eyebrow {
110
+ display: inline-block;
111
+ color: var(--cyan);
112
+ background: var(--cyan-dim);
113
+ border: 1px solid rgba(34, 211, 238, 0.3);
114
+ padding: 6px 12px;
115
+ border-radius: 999px;
116
+ font-size: 12px;
117
+ font-weight: 600;
118
+ letter-spacing: 0.04em;
119
+ text-transform: uppercase;
120
+ margin-bottom: 20px;
121
+ }
122
+ h1 { font-size: 44px; line-height: 1.1; letter-spacing: -0.02em; margin: 0 0 20px; }
123
+ h1 .accent { color: var(--cyan); }
124
+ .lede { font-size: 18px; color: var(--text-muted); max-width: 720px; margin: 0 0 28px; }
125
+ .cta-row { display: flex; gap: 12px; flex-wrap: wrap; }
126
+ .btn-primary, .btn-secondary {
127
+ display: inline-flex; align-items: center; gap: 8px;
128
+ padding: 12px 20px; border-radius: 8px; font-weight: 600; font-size: 14px;
129
+ text-decoration: none; transition: transform 80ms ease, box-shadow 80ms ease;
130
+ }
131
+ .btn-primary { background: var(--cyan); color: #001016; box-shadow: 0 8px 24px var(--cyan-glow); }
132
+ .btn-primary:hover { transform: translateY(-1px); }
133
+ .btn-secondary { border: 1px solid var(--border); color: var(--text); background: var(--bg-raised); }
134
+ .btn-secondary:hover { border-color: var(--cyan); color: var(--cyan); }
135
+
136
+ section { padding: 56px 0; border-top: 1px solid var(--border); }
137
+ section h2 { font-size: 28px; letter-spacing: -0.015em; margin: 0 0 12px; }
138
+ section h2 .accent { color: var(--cyan); }
139
+ section p.section-lede { color: var(--text-muted); font-size: 15px; max-width: 760px; margin: 0 0 28px; }
140
+
141
+ .grid-3 { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; }
142
+ .card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; }
143
+ .card h3 { font-size: 16px; margin: 0 0 8px; color: var(--cyan); letter-spacing: -0.01em; }
144
+ .card p { font-size: 14px; color: var(--text-muted); margin: 0; }
145
+
146
+ table.compliance { width: 100%; border-collapse: collapse; font-size: 14px; margin-top: 8px; }
147
+ table.compliance th, table.compliance td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
148
+ table.compliance th { color: var(--text-muted); font-weight: 600; font-size: 12px; letter-spacing: 0.04em; text-transform: uppercase; background: var(--bg-raised); }
149
+ table.compliance code { font-family: var(--mono); color: var(--cyan); font-size: 12px; }
150
+ .status-ok { color: var(--green); font-weight: 600; }
151
+ .status-partial { color: var(--amber); font-weight: 600; }
152
+ .status-pending { color: var(--text-muted); font-weight: 600; }
153
+
154
+ .deployment-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
155
+ @media (max-width: 720px) { .deployment-grid { grid-template-columns: 1fr; } h1 { font-size: 34px; } }
156
+ .deployment-card { background: var(--bg-card); border: 1px solid var(--border); border-radius: 12px; padding: 24px; }
157
+ .deployment-card.gov { border-color: rgba(34, 211, 238, 0.4); }
158
+ .deployment-card h3 { font-size: 18px; margin: 0 0 12px; }
159
+ .deployment-card ul { padding-left: 18px; color: var(--text-muted); font-size: 14px; margin: 0; }
160
+ .deployment-card li { margin: 6px 0; }
161
+
162
+ .callout {
163
+ background: var(--bg-raised);
164
+ border: 1px solid var(--border);
165
+ border-left: 3px solid var(--cyan);
166
+ border-radius: 8px;
167
+ padding: 18px 20px;
168
+ color: var(--text-muted);
169
+ font-size: 14px;
170
+ }
171
+ .callout strong { color: var(--text); }
172
+
173
+ footer { padding: 40px 0 80px; text-align: center; color: var(--text-muted); font-size: 13px; }
174
+ footer a { color: var(--cyan); text-decoration: none; }
175
+ </style>
176
+ </head>
177
+ <body>
178
+
179
+ <nav>
180
+ <div class="container">
181
+ <a class="nav-logo" href="/">
182
+ <img class="logo-mark" src="/assets/brand/thumbgate-mark.svg" alt="" />
183
+ ThumbGate <span>/ federal</span>
184
+ </a>
185
+ <div class="nav-links">
186
+ <a href="#capabilities">Capabilities</a>
187
+ <a href="#compliance">Compliance</a>
188
+ <a href="#deployment">Deployment</a>
189
+ <a href="#engage">Pilot</a>
190
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Docs</a>
191
+ </div>
192
+ </div>
193
+ </nav>
194
+
195
+ <header class="hero">
196
+ <div class="container">
197
+ <span class="eyebrow">For Federal Agencies</span>
198
+ <h1>Auditable <span class="accent">pre-action gates</span> for AI coding agents inside federal agencies.</h1>
199
+ <p class="lede">
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
+ </p>
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>
204
+ <a class="btn-secondary" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Read the technical brief</a>
205
+ </div>
206
+ </div>
207
+ </header>
208
+
209
+ <section id="capabilities">
210
+ <div class="container">
211
+ <h2>What an agency actually gets</h2>
212
+ <p class="section-lede">
213
+ ThumbGate is a behavioral enforcement layer between AI agents and the tools they invoke. It is not a model, not a model-output evaluator, and not a federal data RAG system. It is the gate that decides whether a tool call leaves the agent's environment.
214
+ </p>
215
+ <div class="grid-3">
216
+ <div class="card">
217
+ <h3>Auditable agent behavior</h3>
218
+ <p>Every gate decision is logged with the action attempted, the policy invoked, the evidence required, and the outcome. PII redaction is built in. Logs are exportable in JSON Lines for ingestion into the agency SIEM.</p>
219
+ </div>
220
+ <div class="card">
221
+ <h3>Agency-owned policy</h3>
222
+ <p>Generic LLM guardrails are vendor-controlled and opaque. ThumbGate policies live in version control inside the agency boundary, are written as code, and are enforced locally before a tool call leaves the dev environment.</p>
223
+ </div>
224
+ <div class="card">
225
+ <h3>Repeated-failure prevention</h3>
226
+ <p>A thumbs-down from an agency engineer becomes a permanent prevention rule. The same risky action never reaches the model on the next attempt — relevant for cost control and for documenting "we did not let the agent do X" in incident review.</p>
227
+ </div>
228
+ <div class="card">
229
+ <h3>Vendor-neutral</h3>
230
+ <p>Works with Claude Code, Cursor, Codex, Gemini CLI, Amp, Cline, OpenCode, and any MCP-compatible agent. No lock-in to a single model vendor. Bedrock GovCloud and Azure Government routing supported in gov mode.</p>
231
+ </div>
232
+ <div class="card">
233
+ <h3>Continuous AI use-case inventory</h3>
234
+ <p>Gate-decision telemetry produces a real-time inventory of which AI tools are actively used, by whom, on what — directly supporting OMB M-24-10 §5(a) and EO 14110 §10.1(b) inventory and risk-categorization requirements.</p>
235
+ </div>
236
+ <div class="card">
237
+ <h3>Air-gap supported</h3>
238
+ <p>ThumbGate-Core gov mode runs without telemetry, without auto-update, and without any outbound call to thumbgate.ai. Agency keeps the data; ThumbGate provides the enforcement engine and the policy framework.</p>
239
+ </div>
240
+ </div>
241
+ </div>
242
+ </section>
243
+
244
+ <section id="compliance">
245
+ <div class="container">
246
+ <h2>Compliance posture — <span class="accent">the honest current state</span></h2>
247
+ <p class="section-lede">
248
+ No FedRAMP marketing badge until authorization is real. Here is what is true today and what the path forward looks like.
249
+ </p>
250
+ <table class="compliance">
251
+ <thead>
252
+ <tr><th>Item</th><th>Status</th><th>Notes</th></tr>
253
+ </thead>
254
+ <tbody>
255
+ <tr><td>FedRAMP authorization</td><td class="status-pending">Not yet</td><td>Targeting Low baseline via agency sponsorship. Open to civilian agency sponsor conversations.</td></tr>
256
+ <tr><td>FISMA / NIST 800-53 Rev 5</td><td class="status-partial">Partial mapping</td><td>11 controls directly supported (see below). Public SaaS inherits Railway's controls; Core gov mode runs on-prem.</td></tr>
257
+ <tr><td>FIPS 140-2/3 validated crypto</td><td class="status-partial">In Core gov mode</td><td>Public ThumbGate uses Node.js native crypto; Core gov mode routes to a FIPS-validated provider on <code>THUMBGATE_DEPLOY=gov</code>.</td></tr>
258
+ <tr><td>Section 508 accessibility</td><td class="status-partial">Dashboard audit pending</td><td>CLI output and landing pages are screen-reader friendly; full WCAG 2.1 AA audit pending.</td></tr>
259
+ <tr><td>US persons + US data residency</td><td class="status-ok">Core gov deployments</td><td>Public SaaS runs in US Railway regions; Core gov mode is on-prem or government cloud only.</td></tr>
260
+ <tr><td>SBOM + supply chain provenance</td><td class="status-ok">Per release</td><td>SBOM and dependency report published with every npm release in <code>proof/</code>.</td></tr>
261
+ <tr><td>Third-party LLM calls</td><td class="status-partial">Public uses Claude directly</td><td>Core gov mode replaces direct Claude calls with Bedrock GovCloud / Azure Government routing.</td></tr>
262
+ </tbody>
263
+ </table>
264
+
265
+ <h2 style="margin-top:48px">NIST 800-53 Rev 5 — controls ThumbGate produces evidence for</h2>
266
+ <table class="compliance">
267
+ <thead>
268
+ <tr><th>Family</th><th>Control</th><th>How ThumbGate supports it</th></tr>
269
+ </thead>
270
+ <tbody>
271
+ <tr><td>AC</td><td><code>AC-3</code> Access Enforcement</td><td>PreToolUse hook blocks tool calls that violate policy regardless of operator intent.</td></tr>
272
+ <tr><td>AC</td><td><code>AC-6</code> Least Privilege</td><td>Per-gate scopes bind agent actions to declared task scope.</td></tr>
273
+ <tr><td>AU</td><td><code>AU-2 / AU-3 / AU-12</code> Audit Logging</td><td>Every gate decision logged with full payload, PII-redacted, exportable to agency SIEM.</td></tr>
274
+ <tr><td>CM</td><td><code>CM-3</code> Configuration Change Control</td><td>Branch governance gate requires <code>releaseVersion</code> declaration before release/publish actions.</td></tr>
275
+ <tr><td>CM</td><td><code>CM-7</code> Least Functionality</td><td>MCP allowlists constrain reachable agent tools per deployment profile.</td></tr>
276
+ <tr><td>IR</td><td><code>IR-4</code> Incident Handling</td><td>Hallucination detector + claim verification produces evidence trails for post-incident review.</td></tr>
277
+ <tr><td>RA</td><td><code>RA-5</code> Vulnerability Monitoring</td><td>Security scan surfaces known-bad patterns from the prevention rule library.</td></tr>
278
+ <tr><td>SI</td><td><code>SI-4 / SI-7</code> System Integrity</td><td>Continuous gate telemetry + integrity-checkable prevention rule corpus.</td></tr>
279
+ </tbody>
280
+ </table>
281
+ </div>
282
+ </section>
283
+
284
+ <section id="deployment">
285
+ <div class="container">
286
+ <h2>Two deployment profiles. <span class="accent">One codebase.</span></h2>
287
+ <p class="section-lede">
288
+ Federal capabilities are an additive Core deployment profile, not a fork. The open-source ThumbGate developers install from npm is byte-identical regardless of federal work — pinned by regression tests.
289
+ </p>
290
+ <div class="deployment-grid">
291
+ <div class="deployment-card">
292
+ <h3>Public ThumbGate <span style="color:var(--text-muted);font-size:13px">— open source</span></h3>
293
+ <ul>
294
+ <li><code>npm install thumbgate</code> → local CLI enforcement</li>
295
+ <li>Railway SaaS dashboard</li>
296
+ <li>Direct Claude API integration</li>
297
+ <li>Best for: SBIR Phase I prototyping, agency open-source experimentation, contractor evaluation</li>
298
+ <li>License: MIT</li>
299
+ </ul>
300
+ </div>
301
+ <div class="deployment-card gov">
302
+ <h3>ThumbGate-Core <span style="color:var(--cyan);font-size:13px">— gov mode</span></h3>
303
+ <ul>
304
+ <li>Activated by <code>THUMBGATE_DEPLOY=gov</code></li>
305
+ <li>On-prem, AWS GovCloud, or Azure Government install</li>
306
+ <li>Bedrock GovCloud / Azure Gov LLM routing — no public-internet model calls</li>
307
+ <li>FIPS-validated crypto provider</li>
308
+ <li>Audit log sink configurable to agency SIEM</li>
309
+ <li>Air-gapped install supported</li>
310
+ <li>Best for: production agency dev environments, ATO-bound deployments</li>
311
+ </ul>
312
+ </div>
313
+ </div>
314
+
315
+ <div class="callout" style="margin-top:24px">
316
+ <strong>Why the boundary matters.</strong> Federal expansion runs through ThumbGate-Core. The public open-source product is the protected invariant: <code>npm i thumbgate</code> on a fresh machine works with zero federal env vars set, public CI passes with Core absent, and no federal code path is reachable without explicit opt-in. Five architectural invariants are pinned by regression tests in <code>tests/public-core-boundary.test.js</code>.
317
+ </div>
318
+ </div>
319
+ </section>
320
+
321
+ <section id="engage">
322
+ <div class="container">
323
+ <h2>What a pilot actually looks like</h2>
324
+ <p class="section-lede">
325
+ A 30-minute scoping call. One agent workflow inside the agency. Two weeks of monitored gate decisions. A written report with captured behavior, blocked actions, and NIST control evidence. No procurement vehicle required for Phase 0 or Phase 1.
326
+ </p>
327
+ <div class="grid-3">
328
+ <div class="card">
329
+ <h3>Phase 0 — Now</h3>
330
+ <p>Public technical brief, NIST control mapping, this page. No agency commitment required. Read the docs, evaluate the open-source release.</p>
331
+ </div>
332
+ <div class="card">
333
+ <h3>Phase 1 — On first call</h3>
334
+ <p>One-page CIS tailored to the agency authorization boundary. SBOM walkthrough. Air-gapped install rehearsal in a clean VM.</p>
335
+ </div>
336
+ <div class="card">
337
+ <h3>Phase 2 — On signed pilot</h3>
338
+ <p>Core gov mode install. Bedrock GovCloud / Azure Gov routing. FIPS crypto. Agency SIEM audit-log sink. Two-week monitored evaluation on one workflow.</p>
339
+ </div>
340
+ <div class="card">
341
+ <h3>Phase 3 — On sponsor commitment</h3>
342
+ <p>FedRAMP Low baseline package preparation. 3PAO engagement. ATO documentation set.</p>
343
+ </div>
344
+ <div class="card">
345
+ <h3>Phase 4 — On named demand</h3>
346
+ <p>Federal RAG over agency policy corpora. Multimodal retrieval for screenshot / PDF / diagram evidence. Built when an agency names the use case — not on speculation.</p>
347
+ </div>
348
+ <div class="card">
349
+ <h3>Engagement vehicles</h3>
350
+ <p>SBIR / STTR Phase I and II. Agency innovation pilots. Prime / SI partnership for inclusion in a larger AI governance offering. GSA Schedule path open under agency sponsorship.</p>
351
+ </div>
352
+ </div>
353
+
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>
356
+ <a class="btn-secondary" href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Read the full technical brief</a>
357
+ </div>
358
+ </div>
359
+ </section>
360
+
361
+ <footer>
362
+ <div class="container">
363
+ ThumbGate is built and maintained by <a href="https://github.com/IgorGanapolsky">Igor Ganapolsky</a>.
364
+ Open source under MIT. Federal capabilities ship via the licensed ThumbGate-Core component.
365
+ <br>
366
+ <a href="/">← Back to thumbgate.ai</a>
367
+ &nbsp;·&nbsp;
368
+ <a href="https://github.com/IgorGanapolsky/ThumbGate">GitHub</a>
369
+ &nbsp;·&nbsp;
370
+ <a href="https://github.com/IgorGanapolsky/ThumbGate/blob/main/docs/FEDERAL.md">Federal docs</a>
371
+ </div>
372
+ </footer>
373
+
374
+ </body>
375
+ </html>
package/public/guide.html CHANGED
@@ -353,8 +353,8 @@ npx thumbgate init --agent gemini</code></pre>
353
353
  <pre><code>npx thumbgate init</code></pre>
354
354
  <p>One command. Works with Claude Code, Cursor, Codex, Gemini, Amp, and OpenCode. Claude Code can also call Codex for review, adversarial review, and second-pass handoffs through the repo-local bridge plugin.</p>
355
355
  <a href="https://thumbgate.ai/checkout/pro?utm_source=guide&utm_medium=cta_button&utm_campaign=pro_pack" class="cta">Get Pro — $19/mo or $149/yr</a>
356
- <a href="https://buy.stripe.com/00w14neyUcXA5pL5e33sI0e" class="cta cta-secondary">Pay $499 diagnostic</a>
357
- <a href="https://buy.stripe.com/fZu9AT76saPsg4pbCr3sI0f" class="cta cta-secondary">Pay $1500 sprint</a>
356
+ <a rel="nofollow noopener noreferrer" target="_blank" href="https://buy.stripe.com/00w14neyUcXA5pL5e33sI0e" class="cta cta-secondary">Pay $499 diagnostic</a>
357
+ <a rel="nofollow noopener noreferrer" target="_blank" href="https://buy.stripe.com/fZu9AT76saPsg4pbCr3sI0f" class="cta cta-secondary">Pay $1500 sprint</a>
358
358
  <a href="https://thumbgate.ai/#workflow-sprint-intake" class="cta cta-secondary">Send workflow first</a>
359
359
  <p style="color:var(--muted); font-size:0.85rem;">Free: unlimited captures, 5 active prevention rules, hook blocking. Pro: dashboard, recall, lesson search, unlimited rules, DPO export. Team: intake first, then $49/seat/mo with a 3-seat minimum.</p>
360
360
 
package/public/index.html CHANGED
@@ -19,7 +19,7 @@ __GOOGLE_SITE_VERIFICATION_META__
19
19
  <meta property="og:image" content="https://thumbgate-production.up.railway.app/og.png">
20
20
  <meta name="twitter:card" content="summary_large_image">
21
21
  <meta name="twitter:image" content="https://thumbgate-production.up.railway.app/og.png">
22
- <meta name="thumbgate-version" content="1.18.0">
22
+ <meta name="thumbgate-version" content="1.20.0">
23
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">
24
24
  <link rel="apple-touch-icon" href="/apple-touch-icon.png">
25
25
 
@@ -40,6 +40,28 @@ __GA_BOOTSTRAP__
40
40
  const workflowSprintPriceDollars = Number('__WORKFLOW_SPRINT_PRICE_DOLLARS__') || 1500;
41
41
  </script>
42
42
 
43
+ <script type="application/ld+json">
44
+ {
45
+ "@context": "https://schema.org",
46
+ "@type": "Organization",
47
+ "name": "ThumbGate",
48
+ "alternateName": "thumbgate",
49
+ "url": "https://thumbgate-production.up.railway.app",
50
+ "logo": "https://thumbgate-production.up.railway.app/assets/brand/thumbgate-logo-1200x360.png",
51
+ "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.",
52
+ "founder": {
53
+ "@type": "Person",
54
+ "name": "Igor Ganapolsky",
55
+ "url": "https://github.com/IgorGanapolsky"
56
+ },
57
+ "sameAs": [
58
+ "https://github.com/IgorGanapolsky/ThumbGate",
59
+ "https://www.npmjs.com/package/thumbgate",
60
+ "https://github.com/IgorGanapolsky"
61
+ ]
62
+ }
63
+ </script>
64
+
43
65
  <script type="application/ld+json">
44
66
  {
45
67
  "@context": "https://schema.org",
@@ -672,7 +694,8 @@ __GA_BOOTSTRAP__
672
694
  <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>
673
695
  <div class="nav-links">
674
696
  <a href="#how-it-works">How It Works</a>
675
- <a href="#pricing">Pricing</a>
697
+ <a href="/pricing">Pricing</a>
698
+ <a href="/case-studies">Case Studies</a>
676
699
  <a href="/guides/autoresearch-agent-safety">Autoresearch</a>
677
700
  <a href="#faq">FAQ</a>
678
701
  <a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
@@ -710,7 +733,7 @@ __GA_BOOTSTRAP__
710
733
  <span class="copy-hint">click to copy</span>
711
734
  </div>
712
735
  <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>
713
- <a href="/go/pro?utm_source=website&amp;utm_medium=hero_cta&amp;utm_campaign=pro_upgrade&amp;cta_id=hero_go_pro&amp;cta_placement=hero&amp;plan_id=pro&amp;landing_path=%2F" onclick="try{posthog.capture('hero_pro_click',{cta:'go_pro'})}catch(_){};sendFirstPartyTelemetry('hero_pro_checkout_started',{ctaId:'hero_go_pro',ctaPlacement:'hero',planId:'pro',price:19});sendGa4Event('begin_checkout',{currency:'USD',value:19,items:[{item_id:'pro',item_name:'ThumbGate Pro'}]});" class="btn-pro-page hero-pro">Get Pro$19/mo</a>
736
+ <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>
714
737
  </div>
715
738
 
716
739
  <div class="hero-trust-bar">
@@ -720,6 +743,10 @@ __GA_BOOTSTRAP__
720
743
  <span>Works with MCP-compatible agents</span>
721
744
  <span>Verification evidence in GitHub</span>
722
745
  </div>
746
+ <figure style="max-width:760px;margin:32px auto 0;padding:20px 24px;border-left:3px solid var(--cyan);background:rgba(34,211,238,0.04);border-radius:0 8px 8px 0;">
747
+ <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>
748
+ <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>
749
+ </figure>
723
750
  <div class="first-check-card" id="first-check">
724
751
  <div class="section-label" style="text-align:left;margin-bottom:8px;">First-Dollar Activation Path</div>
725
752
  <h2>Block your first repeated AI mistake in 5 minutes.</h2>
@@ -995,6 +1022,7 @@ __GA_BOOTSTRAP__
995
1022
  </div>
996
1023
  <div style="display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:18px;">
997
1024
  <a class="btn-team" href="/compare/ai-experience-orchestration">Compare orchestration vs enforcement →</a>
1025
+ <a class="btn-free" href="/guides/ai-deployment-readiness" style="display:inline-flex;align-items:center;">AI deployment readiness →</a>
998
1026
  <a class="btn-free" href="/use-cases/platform-teams" style="display:inline-flex;align-items:center;">Platform team rollout →</a>
999
1027
  <a class="btn-free" href="/use-cases/regulated-workflows" style="display:inline-flex;align-items:center;">Regulated workflow pattern →</a>
1000
1028
  </div>
@@ -1021,6 +1049,7 @@ __GA_BOOTSTRAP__
1021
1049
  <a href="/guides/claude-code-skills-guardrails">Claude Code skills</a>
1022
1050
  <a href="/guides/long-running-agent-context-management">Long-running agent context</a>
1023
1051
  <a href="/guides/reasoning-compression-guardrails">Reasoning compression</a>
1052
+ <a href="/guides/ai-deployment-readiness">AI deployment readiness</a>
1024
1053
  <a href="/guides/browser-automation-safety">Browser automation safety</a>
1025
1054
  <a href="/guides/native-messaging-host-security">Native messaging host security</a>
1026
1055
  <a href="/guides/ai-search-topical-presence">AI search topical presence</a>
@@ -1289,6 +1318,11 @@ __GA_BOOTSTRAP__
1289
1318
  </div>
1290
1319
  <span class="team-intake-badge">30-minute intake</span>
1291
1320
  </div>
1321
+ <details style="border:1px solid var(--border);border-radius:14px;padding:18px 22px;background:var(--bg-raised);margin:18px 0;">
1322
+ <summary style="cursor:pointer;font-size:16px;font-weight:600;color:var(--cyan);list-style:none;display:flex;align-items:center;gap:8px;">
1323
+ <span style="display:inline-block;transition:transform 0.15s;">▸</span>
1324
+ Need consulting, a one-off diagnostic, or a hardening sprint? View paid services &amp; kits
1325
+ </summary>
1292
1326
  <div class="team-paid-path" data-sprint-paid-path aria-label="Paid workflow hardening options">
1293
1327
  <div class="team-paid-card">
1294
1328
  <div>
@@ -1327,10 +1361,11 @@ __GA_BOOTSTRAP__
1327
1361
  </div>
1328
1362
  <div>
1329
1363
  <div class="team-paid-price">$97</div>
1330
- <a class="team-paid-link" href="https://buy.stripe.com/bJe14naiE9Lo7xT49Z3sI12" onclick="sendFirstPartyTelemetry('openclaw_governance_kit_checkout_started',{ctaId:'team_openclaw_governance_kit_checkout',ctaPlacement:'team_paid_path',planId:'digital_kit',offer:'openclaw_agent_governance_kit',price:97});sendGa4Event('begin_checkout',{currency:'USD',value:97,items:[{item_id:'openclaw_agent_governance_kit',item_name:'OpenClaw Agent Governance Kit'}]});">Buy kit</a>
1364
+ <a rel="nofollow noopener noreferrer" target="_blank" class="team-paid-link" href="https://buy.stripe.com/bJe14naiE9Lo7xT49Z3sI12" onclick="sendFirstPartyTelemetry('openclaw_governance_kit_checkout_started',{ctaId:'team_openclaw_governance_kit_checkout',ctaPlacement:'team_paid_path',planId:'digital_kit',offer:'openclaw_agent_governance_kit',price:97});sendGa4Event('begin_checkout',{currency:'USD',value:97,items:[{item_id:'openclaw_agent_governance_kit',item_name:'OpenClaw Agent Governance Kit'}]});">Buy kit</a>
1331
1365
  </div>
1332
1366
  </div>
1333
1367
  </div>
1368
+ </details>
1334
1369
  <div class="team-intake-recovery" aria-label="Checkout recovery path for workflow sprint buyers">
1335
1370
  <div>
1336
1371
  <strong>Not ready to pay from a checkout page?</strong>
@@ -1465,7 +1500,7 @@ __GA_BOOTSTRAP__
1465
1500
  <a href="https://www.linkedin.com/in/igorganapolsky" target="_blank" rel="noopener">LinkedIn</a>
1466
1501
  <a href="/blog">Blog</a>
1467
1502
  </div>
1468
- <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.18.0</span>
1503
+ <span class="footer-copy">© 2026 ThumbGate · MIT License · npm v1.20.0</span>
1469
1504
  </div>
1470
1505
  </footer>
1471
1506
 
@@ -1811,6 +1846,27 @@ async function handleProCheckout() {
1811
1846
  }
1812
1847
  globalThis.location.assign(checkoutUrl);
1813
1848
  }
1849
+
1850
+ // Conversion-path safety: /services redirects to /#workflow-sprint-intake.
1851
+ // Modern browsers auto-open a <details> containing the hash target, but
1852
+ // older Safari/Firefox/Chrome (<2020) do not. Force-open any ancestor
1853
+ // <details> of the hash target so high-intent buyers always see the
1854
+ // paid intake content on arrival.
1855
+ function openDetailsForHash() {
1856
+ var hash = globalThis.location.hash;
1857
+ if (!hash || hash.length < 2) return;
1858
+ var target;
1859
+ try { target = document.querySelector(hash); } catch (_) { return; }
1860
+ if (!target) return;
1861
+ var el = target;
1862
+ while (el && el !== document.body) {
1863
+ if (el.tagName === 'DETAILS') { el.open = true; }
1864
+ el = el.parentElement;
1865
+ }
1866
+ target.scrollIntoView({ behavior: 'auto', block: 'start' });
1867
+ }
1868
+ globalThis.addEventListener('DOMContentLoaded', openDetailsForHash);
1869
+ globalThis.addEventListener('hashchange', openDetailsForHash);
1814
1870
  </script>
1815
1871
  </body>
1816
1872
  </html>
package/public/learn.html CHANGED
@@ -73,6 +73,12 @@
73
73
  {
74
74
  "@type": "ListItem",
75
75
  "position": 6,
76
+ "url": "https://thumbgate.ai/learn/from-prototype-to-production",
77
+ "name": "From git init to v1.17.0 in 70 days: an honest ThumbGate build log"
78
+ },
79
+ {
80
+ "@type": "ListItem",
81
+ "position": 7,
76
82
  "url": "https://thumbgate.ai/guides/stop-repeated-ai-agent-mistakes",
77
83
  "name": "How to Stop AI Coding Agents From Repeating Mistakes"
78
84
  },
@@ -123,6 +129,12 @@
123
129
  "position": 14,
124
130
  "url": "https://thumbgate.ai/guides/relational-knowledge-ai-recommendations",
125
131
  "name": "Relational Knowledge in AI Recommendations"
132
+ },
133
+ {
134
+ "@type": "ListItem",
135
+ "position": 15,
136
+ "url": "https://thumbgate.ai/guides/ai-deployment-readiness",
137
+ "name": "AI Deployment Readiness Before Production Rollout"
126
138
  }
127
139
  ]
128
140
  }
@@ -254,6 +266,13 @@
254
266
  <span class="article-tag">PreToolUse</span>
255
267
  <span class="article-tag">Technical</span>
256
268
  </a>
269
+ <a href="/learn/ai-agent-governance" class="article-card">
270
+ <h3>AI Agent Governance — The Four Layers Pattern</h3>
271
+ <p>AI agent governance has four layers: prompt rules, decorator wrappers, pre-action hooks, sandbox isolation. Each catches a different failure mode. Pick the layer that matches your stack — and understand why prompt rules alone fail.</p>
272
+ <span class="article-tag">Governance</span>
273
+ <span class="article-tag">Architecture</span>
274
+ <span class="article-tag">Pattern</span>
275
+ </a>
257
276
  <a href="/learn/agent-harness-pattern" class="article-card">
258
277
  <h3>The Agent Harness Pattern: Why Your AI Needs a Seatbelt</h3>
259
278
  <p>Tsinghua researchers formalized agent harnesses as first-class objects with contracts, verification checks, and durable state. ThumbGate implements this pattern in production today.</p>
@@ -262,6 +281,14 @@
262
281
  <span class="article-tag">NLAH</span>
263
282
  </a>
264
283
 
284
+ <a href="/learn/agent-swarms-shared-gates" class="article-card">
285
+ <h3>Agent Swarms: One Gate Layer, Every Model</h3>
286
+ <p>A 5-agent swarm without shared memory pays 5&times; the tokens on every repeated mistake. Here is how a single MCP gate layer makes Opus, GPT, and Gemini fail the same way only once.</p>
287
+ <span class="article-tag">Agent Swarms</span>
288
+ <span class="article-tag">Multi-Agent</span>
289
+ <span class="article-tag">Shared Memory</span>
290
+ </a>
291
+
265
292
  <a href="/learn/ai-agent-persistent-memory" class="article-card">
266
293
  <h3>How to Give Your AI Coding Agent Persistent Memory Across Sessions</h3>
267
294
  <p>Your agent forgets everything when the session ends. Here is how to give Claude Code, Cursor, Codex, and Gemini memory that survives restarts — without retraining.</p>
@@ -269,11 +296,27 @@
269
296
  <span class="article-tag">SQLite+FTS5</span>
270
297
  <span class="article-tag">Session Persistence</span>
271
298
  </a>
299
+
300
+ <a href="/learn/from-prototype-to-production" class="article-card">
301
+ <h3>From git init to v1.17.0 in 70 days: an honest ThumbGate build log</h3>
302
+ <p>70 days, 112 commits, 17 minor releases, 6k npm downloads, $0 cold-traffic revenue. The unedited story of taking ThumbGate from a one-line repo init to live production — including the part that's still broken.</p>
303
+ <span class="article-tag">Build Log</span>
304
+ <span class="article-tag">Indie SaaS</span>
305
+ <span class="article-tag">Shipping in Public</span>
306
+ </a>
272
307
  </div>
273
308
 
274
309
  <h2>Popular buyer questions</h2>
275
310
  <p class="section-intro">These are the high-intent guides for buyers who already know the pain and want to understand where ThumbGate fits fast.</p>
276
311
  <div class="article-grid">
312
+ <a href="/guides/ai-deployment-readiness" class="article-card">
313
+ <h3>AI Deployment Readiness Before Production Rollout</h3>
314
+ <p>Use one priority workflow to map tools, data, controls, pre-action gates, and proof before an AI deployment team ships into production.</p>
315
+ <span class="article-tag">Deployment</span>
316
+ <span class="article-tag">Readiness</span>
317
+ <span class="article-tag">Sprint</span>
318
+ </a>
319
+
277
320
  <a href="/guides/ai-search-topical-presence" class="article-card">
278
321
  <h3>AI Search Topical Presence</h3>
279
322
  <p>Why AI assistants recommend the tools they repeatedly see tied to a buyer problem, and how ThumbGate builds that association with proof-backed pages.</p>