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.
- package/.claude-plugin/marketplace.json +85 -0
- package/.claude-plugin/plugin.json +3 -4
- package/.well-known/llms.txt +12 -33
- package/.well-known/mcp/server-card.json +8 -8
- package/README.md +30 -221
- package/adapters/chatgpt/openapi.yaml +1695 -0
- package/adapters/claude/.mcp.json +2 -2
- package/adapters/gemini/function-declarations.json +0 -1
- package/adapters/mcp/server-stdio.js +11 -263
- package/adapters/opencode/opencode.json +1 -1
- package/bench/thumbgate-bench.json +2 -2
- package/bin/cli.js +122 -1421
- package/bin/postinstall.js +27 -11
- package/config/gate-templates.json +0 -216
- package/config/gates/claim-verification.json +0 -12
- package/config/gates/default.json +2 -31
- package/config/github-about.json +2 -2
- package/config/mcp-allowlists.json +13 -23
- package/config/merge-quality-checks.json +1 -0
- package/config/model-candidates.json +6 -121
- package/openapi/openapi.yaml +0 -12
- package/package.json +99 -229
- package/public/blog.html +4 -4
- package/public/codex-plugin.html +20 -72
- package/public/compare.html +8 -31
- package/public/dashboard.html +166 -930
- package/public/federal.html +2 -2
- package/public/guide.html +9 -33
- package/public/index.html +116 -495
- package/public/learn.html +18 -191
- package/public/lessons.html +10 -168
- package/public/numbers.html +7 -7
- package/public/pro.html +11 -34
- package/scripts/agent-memory-lifecycle.js +0 -211
- package/scripts/agent-readiness.js +3 -167
- package/scripts/agent-reward-model.js +1 -53
- package/scripts/auto-promote-gates.js +10 -82
- package/scripts/auto-wire-hooks.js +0 -14
- package/scripts/billing.js +1 -93
- package/scripts/build-metadata.js +10 -50
- package/scripts/cli-feedback.js +6 -18
- package/scripts/cli-schema.js +0 -90
- package/scripts/cli-telemetry.js +1 -6
- package/scripts/commercial-offer.js +2 -82
- package/scripts/context-manager.js +6 -74
- package/scripts/dashboard.js +2 -68
- package/scripts/durability/step.js +3 -3
- package/scripts/export-databricks-bundle.js +1 -5
- package/scripts/export-dpo-pairs.js +2 -7
- package/scripts/feedback-loop.js +1 -145
- package/scripts/feedback-quality.js +0 -87
- package/scripts/filesystem-search.js +10 -35
- package/scripts/gate-stats.js +0 -89
- package/scripts/gates-engine.js +85 -1105
- package/scripts/gemini-embedding-policy.js +1 -2
- package/scripts/hook-runtime.js +14 -20
- package/scripts/hook-thumbgate-cache-updater.js +2 -18
- package/scripts/hybrid-feedback-context.js +7 -142
- package/scripts/lesson-inference.js +3 -8
- package/scripts/lesson-search.js +1 -17
- package/scripts/license.js +1 -0
- package/scripts/llm-client.js +9 -390
- package/scripts/local-model-profile.js +8 -15
- package/scripts/memory-scope-readiness.js +0 -159
- package/scripts/meta-agent-loop.js +0 -36
- package/scripts/operational-integrity.js +5 -39
- package/scripts/oss-pr-opportunity-scout.js +5 -35
- package/scripts/plausible-server-events.js +6 -9
- package/scripts/pro-local-dashboard.js +4 -4
- package/scripts/proxy-pointer-rag-guardrails.js +1 -42
- package/scripts/rate-limiter.js +13 -64
- package/scripts/secret-scanner.js +5 -44
- package/scripts/security-scanner.js +10 -260
- package/scripts/self-distill-agent.js +1 -3
- package/scripts/seo-gsd.js +2 -916
- package/scripts/statusline-cache-path.js +2 -17
- package/scripts/statusline-local-stats.js +1 -9
- package/scripts/statusline-meta.js +2 -28
- package/scripts/statusline.sh +4 -20
- package/scripts/telemetry-analytics.js +0 -357
- package/scripts/thompson-sampling.js +10 -31
- package/scripts/thumbgate-bench.js +1 -16
- package/scripts/thumbgate-search.js +19 -85
- package/scripts/tool-registry.js +1 -169
- package/scripts/vector-store.js +0 -45
- package/scripts/workflow-sentinel.js +53 -286
- package/scripts/workspace-evolver.js +2 -62
- package/src/api/server.js +290 -2578
- package/.claude/commands/dashboard.md +0 -15
- package/.claude/commands/thumbgate-blocked.md +0 -27
- package/.claude/commands/thumbgate-dashboard.md +0 -15
- package/.claude/commands/thumbgate-doctor.md +0 -30
- package/.claude/commands/thumbgate-guard.md +0 -36
- package/.claude/commands/thumbgate-protect.md +0 -30
- package/.claude/commands/thumbgate-rules.md +0 -30
- package/.well-known/agentic-verify.txt +0 -1
- package/adapters/gcp/dfcx-webhook-gate.js +0 -295
- package/adapters/letta/README.md +0 -41
- package/adapters/letta/thumbgate-letta-adapter.js +0 -133
- package/adapters/policy-engine/ethicore-guardian-client.js +0 -68
- package/adapters/policy-engine/thumbgate-policy-engine-adapter.js +0 -260
- package/bench/observability-eval-suite.json +0 -26
- package/bin/dashboard-cli.js +0 -7
- package/commands/dashboard.md +0 -15
- package/commands/thumbgate-dashboard.md +0 -15
- package/config/builtin-lessons.json +0 -23
- package/config/gate-classifier-routing.json +0 -98
- package/config/post-deploy-marketing-pages.json +0 -61
- package/public/about.html +0 -162
- package/public/agent-manager.html +0 -179
- package/public/agents-cost-savings.html +0 -153
- package/public/ai-malpractice-prevention.html +0 -818
- package/public/assets/brand/github-social-preview.png +0 -0
- package/public/assets/brand/thumbgate-icon-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-pro-512.png +0 -0
- package/public/assets/brand/thumbgate-icon-team-512.png +0 -0
- package/public/assets/brand/thumbgate-logo-1200x360.png +0 -0
- package/public/assets/brand/thumbgate-logo-transparent.svg +0 -22
- package/public/assets/brand/thumbgate-mark-inline-v3.svg +0 -19
- package/public/assets/brand/thumbgate-mark-pro.svg +0 -23
- package/public/assets/brand/thumbgate-mark-team.svg +0 -26
- package/public/assets/brand/thumbgate-mark.svg +0 -21
- package/public/assets/brand/thumbgate-wordmark.svg +0 -20
- package/public/assets/claude-thumbgate-statusbar.svg +0 -8
- package/public/assets/codex-thumbgate-statusbar-test.svg +0 -9
- package/public/assets/legal-intake-control-flow.svg +0 -66
- package/public/brand/thumbgate-mark.svg +0 -19
- package/public/brand/thumbgate-og.svg +0 -16
- package/public/chatgpt-app.html +0 -330
- package/public/codex-enterprise.html +0 -123
- package/public/js/buyer-intent.js +0 -672
- package/public/pricing.html +0 -399
- package/scripts/action-receipts.js +0 -324
- package/scripts/activation-quickstart.js +0 -187
- package/scripts/agent-operations-planner.js +0 -621
- package/scripts/ai-component-inventory.js +0 -367
- package/scripts/async-eval-observability.js +0 -236
- package/scripts/audit.js +0 -65
- package/scripts/aws-blocks-guardrails.js +0 -228
- package/scripts/classifier-routing.js +0 -130
- package/scripts/dashboard-chat.js +0 -332
- package/scripts/feedback-aggregate.js +0 -281
- package/scripts/feedback-sanitizer.js +0 -105
- package/scripts/hob-pack.js +0 -591
- package/scripts/hook-stop-anti-claim.js +0 -301
- package/scripts/install-shim.js +0 -87
- package/scripts/mcp-oauth.js +0 -293
- package/scripts/noop-detect.js +0 -285
- package/scripts/omlx-smoke.js +0 -192
- package/scripts/parallel-workflow-orchestrator.js +0 -293
- package/scripts/plan-gate.js +0 -243
- package/scripts/plausible-domain-config.js +0 -99
- package/scripts/qa-scenario-planner.js +0 -136
- package/scripts/repeat-metric.js +0 -137
- package/scripts/secret-fixture-tokens.js +0 -61
- package/scripts/secret-redaction.js +0 -166
- package/scripts/self-harness-optimizer.js +0 -141
- package/scripts/self-healing-check.js +0 -193
- package/scripts/silent-failure-cluster.js +0 -531
- package/scripts/statusline-cache-read.js +0 -57
- package/scripts/sync-telemetry-from-prod.js +0 -374
- package/scripts/tool-contract-validator.js +0 -76
- package/scripts/trajectory-scorer.js +0 -63
- package/scripts/verify-marketing-pages-deployed.js +0 -195
- package/scripts/visitor-journey.js +0 -172
package/public/about.html
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta name="generator" content="ThumbGate">
|
|
5
|
-
<meta name="author" content="Igor Ganapolsky">
|
|
6
|
-
<meta charset="UTF-8">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
-
__GOOGLE_SITE_VERIFICATION_META__
|
|
9
|
-
<link rel="icon" type="image/png" href="/thumbgate-icon.png">
|
|
10
|
-
<link rel="alternate icon" type="image/svg+xml" href="/assets/brand/thumbgate-mark.svg">
|
|
11
|
-
<title>About Igor Ganapolsky — ThumbGate</title>
|
|
12
|
-
<meta name="description" content="Igor Ganapolsky — Senior AI & Mobile Engineer building ThumbGate, an agent-governance layer for Claude Code, Cursor, Codex, and Gemini. Production Stripe Connect, Agentic RAG, and React Native experience.">
|
|
13
|
-
<meta property="og:title" content="About Igor Ganapolsky — ThumbGate">
|
|
14
|
-
<meta property="og:description" content="Senior AI & Mobile Engineer. Builder of ThumbGate. Production Stripe Connect + Agentic RAG + React Native engineer for hire.">
|
|
15
|
-
<meta property="og:type" content="profile">
|
|
16
|
-
<meta property="og:url" content="https://thumbgate.ai/about">
|
|
17
|
-
<meta property="og:image" content="https://thumbgate.ai/og.png">
|
|
18
|
-
<meta name="twitter:card" content="summary_large_image">
|
|
19
|
-
<link rel="canonical" href="https://thumbgate.ai/about">
|
|
20
|
-
<link rel="alternate" type="text/markdown" title="ThumbGate LLM context" href="https://thumbgate.ai/llm-context.md">
|
|
21
|
-
|
|
22
|
-
<script type="application/ld+json">
|
|
23
|
-
{
|
|
24
|
-
"@context": "https://schema.org",
|
|
25
|
-
"@type": "Person",
|
|
26
|
-
"name": "Igor Ganapolsky",
|
|
27
|
-
"givenName": "Igor",
|
|
28
|
-
"familyName": "Ganapolsky",
|
|
29
|
-
"alternateName": ["iganapolsky", "IgorGanapolsky"],
|
|
30
|
-
"url": "https://thumbgate.ai/about",
|
|
31
|
-
"image": "https://thumbgate.ai/og.png",
|
|
32
|
-
"jobTitle": "Senior AI & Mobile Engineer",
|
|
33
|
-
"description": "Production Stripe Connect, Agentic RAG, React Native, and AI-agent governance engineer. Creator of ThumbGate — pre-action defense for AI coding agents.",
|
|
34
|
-
"knowsAbout": [
|
|
35
|
-
"Agentic RAG",
|
|
36
|
-
"Stripe Connect",
|
|
37
|
-
"Stripe Billing",
|
|
38
|
-
"React Native",
|
|
39
|
-
"Android",
|
|
40
|
-
"Claude Code",
|
|
41
|
-
"Cursor",
|
|
42
|
-
"Codex",
|
|
43
|
-
"Gemini",
|
|
44
|
-
"AI agent governance",
|
|
45
|
-
"LLM cost optimization",
|
|
46
|
-
"Pre-action checks",
|
|
47
|
-
"Workflow hardening",
|
|
48
|
-
"Context engineering",
|
|
49
|
-
"MCP servers",
|
|
50
|
-
"LangChain",
|
|
51
|
-
"LangGraph",
|
|
52
|
-
"Patchright",
|
|
53
|
-
"Playwright",
|
|
54
|
-
"OpenAI API",
|
|
55
|
-
"Anthropic API"
|
|
56
|
-
],
|
|
57
|
-
"address": {
|
|
58
|
-
"@type": "PostalAddress",
|
|
59
|
-
"addressLocality": "Coral Springs",
|
|
60
|
-
"addressRegion": "FL",
|
|
61
|
-
"addressCountry": "US"
|
|
62
|
-
},
|
|
63
|
-
"email": "iganapolsky@gmail.com",
|
|
64
|
-
"sameAs": [
|
|
65
|
-
"https://github.com/IgorGanapolsky",
|
|
66
|
-
"https://www.linkedin.com/in/igor-ganapolsky-5324b7330",
|
|
67
|
-
"https://dev.to/igorganapolsky",
|
|
68
|
-
"https://www.upwork.com/freelancers/~01b5f08ed8b1a9a3c1",
|
|
69
|
-
"https://huggingface.co/IgorGanapolsky",
|
|
70
|
-
"https://x.com/igorganapolsky"
|
|
71
|
-
],
|
|
72
|
-
"worksFor": {
|
|
73
|
-
"@type": "Organization",
|
|
74
|
-
"name": "ThumbGate",
|
|
75
|
-
"url": "https://thumbgate.ai/"
|
|
76
|
-
},
|
|
77
|
-
"owns": {
|
|
78
|
-
"@type": "SoftwareApplication",
|
|
79
|
-
"name": "ThumbGate",
|
|
80
|
-
"applicationCategory": "DeveloperApplication",
|
|
81
|
-
"description": "Pre-action defense for AI coding agents — thumbs up/down become history-aware lessons across Claude Code, Cursor, Codex, Gemini, Amp, Cline, OpenCode."
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
</script>
|
|
85
|
-
|
|
86
|
-
<style>
|
|
87
|
-
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",Inter,system-ui,sans-serif;line-height:1.6;color:#0f172a;background:#fafafa}
|
|
88
|
-
header{padding:1rem 1.5rem;border-bottom:1px solid #e5e7eb;background:#fff;display:flex;align-items:center;gap:1rem}
|
|
89
|
-
header a{color:#0f172a;text-decoration:none;font-weight:600}
|
|
90
|
-
main{max-width:780px;margin:0 auto;padding:2.5rem 1.5rem}
|
|
91
|
-
h1{font-size:2rem;margin:0 0 .25rem}
|
|
92
|
-
h2{margin-top:2rem;font-size:1.25rem}
|
|
93
|
-
.lede{font-size:1.125rem;color:#475569}
|
|
94
|
-
.chips{display:flex;flex-wrap:wrap;gap:.4rem;margin:.75rem 0 0}
|
|
95
|
-
.chip{display:inline-block;padding:.2rem .55rem;border:1px solid #e2e8f0;border-radius:9999px;font-size:.85rem;color:#334155;background:#fff}
|
|
96
|
-
ul.links{list-style:none;padding:0;margin:1rem 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem}
|
|
97
|
-
ul.links li a{display:block;padding:.6rem .8rem;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;color:#0f172a;text-decoration:none}
|
|
98
|
-
ul.links li a:hover{border-color:#0f172a}
|
|
99
|
-
.section{background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1.25rem 1.5rem;margin:1.25rem 0}
|
|
100
|
-
footer{padding:2rem 1.5rem;color:#64748b;font-size:.9rem;text-align:center}
|
|
101
|
-
</style>
|
|
102
|
-
</head>
|
|
103
|
-
<body>
|
|
104
|
-
|
|
105
|
-
<header>
|
|
106
|
-
<a href="/">ThumbGate</a>
|
|
107
|
-
<span style="color:#94a3b8">/</span>
|
|
108
|
-
<span>About</span>
|
|
109
|
-
</header>
|
|
110
|
-
|
|
111
|
-
<main>
|
|
112
|
-
|
|
113
|
-
<h1>Igor Ganapolsky</h1>
|
|
114
|
-
<p class="lede">Senior AI & Mobile Engineer. Builder of <a href="/">ThumbGate</a> — pre-action defense for AI coding agents. Available for high-leverage Stripe Connect, Agentic RAG, and React Native contract engagements.</p>
|
|
115
|
-
|
|
116
|
-
<div class="chips">
|
|
117
|
-
<span class="chip">Coral Springs, FL · US</span>
|
|
118
|
-
<span class="chip">Agentic RAG</span>
|
|
119
|
-
<span class="chip">Stripe Connect</span>
|
|
120
|
-
<span class="chip">React Native</span>
|
|
121
|
-
<span class="chip">Android</span>
|
|
122
|
-
<span class="chip">Claude Code · Cursor · Codex · Gemini</span>
|
|
123
|
-
</div>
|
|
124
|
-
|
|
125
|
-
<section class="section">
|
|
126
|
-
<h2>What I build</h2>
|
|
127
|
-
<p><strong>ThumbGate</strong> is the agent-governance layer that turns 👍 / 👎 signals into history-aware lessons across Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode. Pre-Action Checks block the next repeated mistake before the tool call runs — workflow shape, inspection evidence, token budget, and repeated-failure memory in one gate.</p>
|
|
128
|
-
<p>Outside ThumbGate, I ship production Stripe Connect marketplaces, Agentic RAG systems with LanceDB / pgvector / FAISS retrieval, React Native + Android apps, and LLM cost-instrumentation layers.</p>
|
|
129
|
-
</section>
|
|
130
|
-
|
|
131
|
-
<section class="section">
|
|
132
|
-
<h2>Recent ships</h2>
|
|
133
|
-
<ul>
|
|
134
|
-
<li><strong>Hilltown Media Group · Pretix Stripe Connect plugin</strong> — production payments + automation, 100% test coverage, milestone-funded delivery.</li>
|
|
135
|
-
<li><strong>ThumbGate v1.27</strong> — pre-action governance for AI coding agents, available on npm as <code>thumbgate</code>.</li>
|
|
136
|
-
<li><strong>Resume revenue ML stack</strong> — Thompson-sampling bandit + copy/buyer logistic regression + Agentic RAG for closed-loop UpWork bidding.</li>
|
|
137
|
-
</ul>
|
|
138
|
-
</section>
|
|
139
|
-
|
|
140
|
-
<section class="section">
|
|
141
|
-
<h2>For hire</h2>
|
|
142
|
-
<p>Available for fixed-price engagements ≥ $2K and ongoing retainers. Standard rate $120–150/hr 1099. Strong signal on Stripe Connect & Billing audits, RAG + LLM evaluation harnesses, and React Native + Android engineering. Email <a href="mailto:iganapolsky@gmail.com">iganapolsky@gmail.com</a> or reach me on <a href="https://www.upwork.com/freelancers/~01b5f08ed8b1a9a3c1">Upwork</a>.</p>
|
|
143
|
-
</section>
|
|
144
|
-
|
|
145
|
-
<h2>Links</h2>
|
|
146
|
-
<ul class="links">
|
|
147
|
-
<li><a href="https://github.com/IgorGanapolsky" rel="me">GitHub</a></li>
|
|
148
|
-
<li><a href="https://www.linkedin.com/in/igor-ganapolsky-5324b7330" rel="me">LinkedIn</a></li>
|
|
149
|
-
<li><a href="https://dev.to/igorganapolsky" rel="me">dev.to</a></li>
|
|
150
|
-
<li><a href="https://www.upwork.com/freelancers/~01b5f08ed8b1a9a3c1" rel="me">Upwork</a></li>
|
|
151
|
-
<li><a href="https://huggingface.co/IgorGanapolsky" rel="me">Hugging Face</a></li>
|
|
152
|
-
<li><a href="https://x.com/igorganapolsky" rel="me">X</a></li>
|
|
153
|
-
</ul>
|
|
154
|
-
|
|
155
|
-
</main>
|
|
156
|
-
|
|
157
|
-
<footer>
|
|
158
|
-
© 2026 ThumbGate · Built by <a href="/about">Igor Ganapolsky</a>
|
|
159
|
-
</footer>
|
|
160
|
-
|
|
161
|
-
</body>
|
|
162
|
-
</html>
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>ThumbGate for the Agent Manager — Pre-Action Checks for Claude Code, Cursor, Codex</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="Anthropic named the role that owns enterprise Claude Code: the Agent Manager. ThumbGate is the pre-action enforcement layer underneath CLAUDE.md, the plugin marketplace, permissions policy, and which skills ship.">
|
|
9
|
-
<meta property="og:title" content="ThumbGate for the Agent Manager">
|
|
10
|
-
<meta property="og:description" content="The role Anthropic named — Agent Manager — owns CLAUDE.md, the plugin marketplace, permissions, and which skills ship. ThumbGate is the runtime underneath all of that.">
|
|
11
|
-
<meta property="og:type" content="article">
|
|
12
|
-
<meta property="og:image" content="https://thumbgate.ai/og.png">
|
|
13
|
-
<link rel="canonical" href="https://thumbgate.ai/agent-manager">
|
|
14
|
-
<script type="application/ld+json">
|
|
15
|
-
{
|
|
16
|
-
"@context": "https://schema.org",
|
|
17
|
-
"@type": "TechArticle",
|
|
18
|
-
"headline": "ThumbGate for the Agent Manager",
|
|
19
|
-
"description": "Anthropic named the role that owns enterprise Claude Code rollouts: the Agent Manager. ThumbGate is the pre-action enforcement layer underneath CLAUDE.md, the plugin marketplace, permissions policy, and which skills ship.",
|
|
20
|
-
"datePublished": "2026-05-19",
|
|
21
|
-
"dateModified": "2026-05-19",
|
|
22
|
-
"author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
|
|
23
|
-
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
|
|
24
|
-
"about": [
|
|
25
|
-
{ "@type": "Thing", "name": "Agent Manager" },
|
|
26
|
-
{ "@type": "Thing", "name": "Claude Code rollout" },
|
|
27
|
-
{ "@type": "Thing", "name": "Pre-Action Checks" }
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
</script>
|
|
31
|
-
<script type="application/ld+json">
|
|
32
|
-
{
|
|
33
|
-
"@context": "https://schema.org",
|
|
34
|
-
"@type": "FAQPage",
|
|
35
|
-
"mainEntity": [
|
|
36
|
-
{
|
|
37
|
-
"@type": "Question",
|
|
38
|
-
"name": "What is the Agent Manager role?",
|
|
39
|
-
"acceptedAnswer": {
|
|
40
|
-
"@type": "Answer",
|
|
41
|
-
"text": "Anthropic named it: the Agent Manager is a hybrid PM/engineer single DRI who owns the Claude Code configuration every developer in the org actually feels — the CLAUDE.md hierarchy, the plugin marketplace, the permissions policy, and which skills ship — and is responsible for keeping them current. Without that role, enterprise Claude Code rollouts stall in phase two; with it, the model improving is no longer the bottleneck."
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"@type": "Question",
|
|
46
|
-
"name": "How does ThumbGate help the Agent Manager?",
|
|
47
|
-
"acceptedAnswer": {
|
|
48
|
-
"@type": "Answer",
|
|
49
|
-
"text": "ThumbGate is the pre-action enforcement layer underneath what the role owns. It runs PreToolUse hooks at the tool-call boundary, auto-distills prevention rules from real thumbs-down feedback and writes them into CLAUDE.md, provides an org-wide rule library and hosted dashboard, and keeps an adapter matrix current as Claude Code, Cursor, and Codex change — so the role does not have to be the operator themselves. Each block carries the rule that fired and the evidence that triggered it, so the agent can choose a safer plan."
|
|
50
|
-
}
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"@type": "Question",
|
|
54
|
-
"name": "Is ThumbGate free for the Agent Manager to start?",
|
|
55
|
-
"acceptedAnswer": {
|
|
56
|
-
"@type": "Answer",
|
|
57
|
-
"text": "Yes. npx thumbgate init in one repo is free and MIT licensed, and the gates work locally without a hosted account. The paid tier adds the hosted dashboard, the org-wide rule library, DPO/HuggingFace export, and 24x7 ops on the adapter matrix — the operational work the role would otherwise have to do itself."
|
|
58
|
-
}
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"@type": "Question",
|
|
62
|
-
"name": "Which AI coding agents does ThumbGate cover for an enterprise rollout?",
|
|
63
|
-
"acceptedAnswer": {
|
|
64
|
-
"@type": "Answer",
|
|
65
|
-
"text": "Claude Code, Cursor, Codex, Gemini, Amp, Cline, and OpenCode. One install wires every supported agent, and each adapter is version-pinned and CI-checked against the upstream runtime, so a breaking change to a hook or plugin API does not stall the rollout for a quarter."
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
]
|
|
69
|
-
}
|
|
70
|
-
</script>
|
|
71
|
-
<style>
|
|
72
|
-
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
73
|
-
:root { --bg:#0a0a0b; --card:#161618; --border:#222225; --text:#e8e8ec; --muted:#8b8b94; --cyan:#22d3ee; }
|
|
74
|
-
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
|
|
75
|
-
.container { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
|
|
76
|
-
nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display:flex; gap:1.5rem; flex-wrap:wrap; }
|
|
77
|
-
nav a { color: var(--muted); text-decoration:none; font-size:0.9rem; }
|
|
78
|
-
nav .brand { color: var(--text); font-weight:700; }
|
|
79
|
-
.pill { display:inline-block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--cyan); background:rgba(34,211,238,0.08); border:1px solid rgba(34,211,238,0.2); padding:4px 12px; border-radius:100px; margin-top:1.5rem; font-weight:600; }
|
|
80
|
-
h1 { font-size:2.2rem; line-height:1.15; margin:1rem 0 1rem; }
|
|
81
|
-
h2 { font-size:1.45rem; margin:2.2rem 0 1rem; color:var(--cyan); }
|
|
82
|
-
h3 { margin:0.6rem 0; font-size:1rem; }
|
|
83
|
-
p, li { margin-bottom:0.75rem; }
|
|
84
|
-
ul, ol { padding-left:1.25rem; }
|
|
85
|
-
.card { background: var(--card); border:1px solid var(--border); border-radius:12px; padding:1.25rem; margin:1rem 0; }
|
|
86
|
-
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin:1rem 0; }
|
|
87
|
-
.grid .card h3 { color:var(--cyan); }
|
|
88
|
-
.cta { display:inline-block; background:var(--cyan); color:#000; padding:0.8rem 1.2rem; border-radius:8px; text-decoration:none; font-weight:700; }
|
|
89
|
-
.secondary { color:var(--cyan); text-decoration:underline; margin-left:1rem; }
|
|
90
|
-
.quote { border-left:3px solid var(--cyan); padding:0.75rem 1rem; margin:1rem 0; color:var(--muted); font-style:italic; }
|
|
91
|
-
.table-clean { width:100%; border-collapse:collapse; margin:1rem 0; font-size:0.95rem; }
|
|
92
|
-
.table-clean th, .table-clean td { border-bottom:1px solid var(--border); padding:0.6rem 0.5rem; text-align:left; vertical-align:top; }
|
|
93
|
-
.table-clean th { color:var(--cyan); font-weight:600; font-size:0.85rem; text-transform:uppercase; letter-spacing:0.05em; }
|
|
94
|
-
</style>
|
|
95
|
-
</head>
|
|
96
|
-
<body>
|
|
97
|
-
<nav>
|
|
98
|
-
<a href="/" class="brand">ThumbGate</a>
|
|
99
|
-
<a href="/guide">Guide</a>
|
|
100
|
-
<a href="/dashboard">Dashboard demo</a>
|
|
101
|
-
<a href="/#workflow-sprint-intake">Workflow Hardening Sprint</a>
|
|
102
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
103
|
-
</nav>
|
|
104
|
-
<div class="container">
|
|
105
|
-
<span class="pill">Built for the Agent Manager</span>
|
|
106
|
-
<h1>You own CLAUDE.md, the plugin marketplace, permissions, and which skills ship. ThumbGate is the enforcement layer underneath.</h1>
|
|
107
|
-
<p>Anthropic named the role: the <strong>Agent Manager</strong> — a hybrid PM/engineer single DRI who owns the Claude Code configuration that every developer in the org actually feels. Without that role, enterprise rollouts stall in phase two; with it, the model improving is no longer the bottleneck. ThumbGate is the pre-action runtime that role needs at the tool-call boundary.</p>
|
|
108
|
-
|
|
109
|
-
<h2>What the Agent Manager owns, and what ThumbGate ships for each</h2>
|
|
110
|
-
<table class="table-clean">
|
|
111
|
-
<thead><tr><th>You own</th><th>ThumbGate ships</th></tr></thead>
|
|
112
|
-
<tbody>
|
|
113
|
-
<tr>
|
|
114
|
-
<td><strong>CLAUDE.md hierarchy</strong><br>Keeping the policy that the model reads on every session current and consistent across repos.</td>
|
|
115
|
-
<td>Prevention rules auto-distilled from real <code>👎</code> feedback and written into <code>CLAUDE.md</code> by <code>scripts/feedback-to-rules.js</code>. Org-wide rule library on the hosted dashboard.</td>
|
|
116
|
-
</tr>
|
|
117
|
-
<tr>
|
|
118
|
-
<td><strong>Plugin marketplace</strong><br>Deciding which Claude Code / Cursor / Codex plugins are blessed and which are not.</td>
|
|
119
|
-
<td>ThumbGate ships as a Claude Code plugin, a Cursor extension (Marketplace listing pending Cursor's review since 2026-05-19; runtime install works today via <code>npx thumbgate init --agent cursor</code>), a Codex plugin, and a Gemini CLI hook. One install, every supported agent. Adapter compatibility matrix kept current as runtimes change.</td>
|
|
120
|
-
</tr>
|
|
121
|
-
<tr>
|
|
122
|
-
<td><strong>Permissions policy</strong><br>What an agent is allowed to execute, against which surfaces, with which evidence required.</td>
|
|
123
|
-
<td>PreToolUse hooks at the tool-call boundary. Each block carries the rule that fired, the evidence that triggered it, and a reason the agent can use to choose a safer plan. No "tell the model to be more careful."</td>
|
|
124
|
-
</tr>
|
|
125
|
-
<tr>
|
|
126
|
-
<td><strong>Which skills ship</strong><br>The set of in-context skills, prompts, and snippets every developer's agent has access to.</td>
|
|
127
|
-
<td>Skill ship matrix in <code>adapters/*</code> — Claude, Cursor, Codex, Gemini, Amp, Cline, OpenCode. Each adapter is version-pinned and CI-checked against the upstream runtime.</td>
|
|
128
|
-
</tr>
|
|
129
|
-
<tr>
|
|
130
|
-
<td><strong>Keep them current</strong><br>When Claude Code ships a breaking change to hooks or to the plugin API, your rollout cannot wait a quarter.</td>
|
|
131
|
-
<td>24×7 ops on the adapter matrix. SonarCloud regressions fixed in <24h. The hosted tier is the operator the role does not have to be themselves.</td>
|
|
132
|
-
</tr>
|
|
133
|
-
</tbody>
|
|
134
|
-
</table>
|
|
135
|
-
|
|
136
|
-
<h2>Why this role exists in the first place</h2>
|
|
137
|
-
<p>Every enterprise Claude Code rollout hits the same wall: the model gets better, the setup does not, and nobody owns it. The teams that get past phase one and into actual adoption all turn out to have a single DRI behind CLAUDE.md, the plugin policy, the permissions, and the skill ship list. The teams that do not, stall.</p>
|
|
138
|
-
<div class="quote">"The minimum viable version is a DRI: one person with ownership over the Claude Code configuration, the authority to make calls on settings, permissions policy, the plugin marketplace, and CLAUDE.md conventions, and the responsibility to keep them current."</div>
|
|
139
|
-
|
|
140
|
-
<h2>The three-phase pattern, and where ThumbGate fits</h2>
|
|
141
|
-
<div class="grid">
|
|
142
|
-
<div class="card">
|
|
143
|
-
<h3>Phase 1 — Quiet investment</h3>
|
|
144
|
-
<p>Individual engineers install agents. CLAUDE.md is whatever they wrote. The Agent Manager role is unfilled or shared. ThumbGate enters as the free <code>npx thumbgate init</code> wedge — one repo, one repeated failure, one Pre-Action Check.</p>
|
|
145
|
-
</div>
|
|
146
|
-
<div class="card">
|
|
147
|
-
<h3>Phase 2 — Rollout lands</h3>
|
|
148
|
-
<p>Infrastructure is ready; the first wave finds it productive. This is where the Agent Manager becomes a named role. ThumbGate's hosted dashboard, org-wide rule library, and DPO export are what that role uses to keep CLAUDE.md and the permissions policy consistent across repos.</p>
|
|
149
|
-
</div>
|
|
150
|
-
<div class="card">
|
|
151
|
-
<h3>Phase 3 — Adoption spreads</h3>
|
|
152
|
-
<p>The team becomes the harness. The Agent Manager stops being a bottleneck because the policy enforces itself at the tool-call boundary. ThumbGate's Workflow Hardening Sprint locks down the patterns that earned trust in phase two so the next 10x of engineers do not regress them.</p>
|
|
153
|
-
</div>
|
|
154
|
-
</div>
|
|
155
|
-
|
|
156
|
-
<h2>How to start</h2>
|
|
157
|
-
<ol>
|
|
158
|
-
<li><strong>Install free.</strong> <code>npx thumbgate init</code> in one repo. Captures thumbs-up/down feedback locally; auto-promotes repeated failures into prevention rules.</li>
|
|
159
|
-
<li><strong>Wire one Pre-Action Check.</strong> Pick the most-repeated agent mistake your org has felt this month. Promote that one to a rule. Watch the next attempt get blocked at the tool-call boundary, with the rule that fired in the agent's reasoning trace.</li>
|
|
160
|
-
<li><strong>Run the Workflow Hardening Sprint.</strong> When phase 2 hits — when you need shared rules, org dashboard visibility, and adapter coverage you do not have to maintain yourself — the sprint is the path from local proof to managed rollout.</li>
|
|
161
|
-
</ol>
|
|
162
|
-
|
|
163
|
-
<div class="card">
|
|
164
|
-
<p><strong>Anthropic named the role. ThumbGate is the runtime that role needs.</strong> The free CLI is real, MIT-licensed, and the gates work locally without a hosted account. The paid tier is what we operate so the Agent Manager does not have to.</p>
|
|
165
|
-
<p>
|
|
166
|
-
<a href="/#workflow-sprint-intake" class="cta">Start the Workflow Hardening Sprint</a>
|
|
167
|
-
<a href="/checkout/pro?utm_source=website&utm_medium=agent_manager_page&utm_campaign=pro_upgrade&cta_id=agent_manager_pro_checkout&cta_placement=agent_manager_page&plan_id=pro" class="secondary">Or start Pro at $19/mo →</a>
|
|
168
|
-
</p>
|
|
169
|
-
</div>
|
|
170
|
-
|
|
171
|
-
<h2>Related reading</h2>
|
|
172
|
-
<ul>
|
|
173
|
-
<li><a href="/use-cases/platform-teams">ThumbGate for platform teams</a> — when the Agent Manager role lives in the platform org.</li>
|
|
174
|
-
<li><a href="/use-cases/regulated-workflows">ThumbGate for regulated workflows</a> — DORA / EU AI Act / HIPAA pressure on the same role.</li>
|
|
175
|
-
<li><a href="/compare/ai-experience-orchestration">Orchestration vs enforcement</a> — what the Agent Manager picks <em>under</em> a broader orchestration suite.</li>
|
|
176
|
-
</ul>
|
|
177
|
-
</div>
|
|
178
|
-
</body>
|
|
179
|
-
</html>
|
|
@@ -1,153 +0,0 @@
|
|
|
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>FinOps for AI Agents — ThumbGate prevents the spend FinOps tools just report on</title>
|
|
7
|
-
<script defer data-domain="thumbgate.ai" src="https://plausible.io/js/script.js"></script>
|
|
8
|
-
<meta name="description" content="Most FinOps platforms report on AI agent spend after it happens. ThumbGate is the runtime layer that prevents the wasted tool calls in the first place — and prints the dollar amount you saved.">
|
|
9
|
-
<meta property="og:title" content="FinOps for AI Agents — Prevention, Not Reporting">
|
|
10
|
-
<meta property="og:description" content="Cost dashboards tell you what your agents wasted last week. ThumbGate's PreToolUse gates stop the wasted tool calls before they fire — and `thumbgate cost` shows you the dollar amount.">
|
|
11
|
-
<meta property="og:type" content="article">
|
|
12
|
-
<meta property="og:image" content="https://thumbgate.ai/og.png">
|
|
13
|
-
<link rel="canonical" href="https://thumbgate.ai/agents-cost-savings">
|
|
14
|
-
<script type="application/ld+json">
|
|
15
|
-
{
|
|
16
|
-
"@context": "https://schema.org",
|
|
17
|
-
"@type": "TechArticle",
|
|
18
|
-
"headline": "FinOps for AI Agents — Prevention vs. Reporting",
|
|
19
|
-
"description": "Cost dashboards report agent spend after it happens. ThumbGate's runtime gates prevent the wasted tool calls in the first place, and `thumbgate cost` prints the dollar amount saved.",
|
|
20
|
-
"datePublished": "2026-05-21",
|
|
21
|
-
"dateModified": "2026-05-21",
|
|
22
|
-
"author": { "@type": "Person", "name": "Igor Ganapolsky", "url": "https://github.com/IgorGanapolsky" },
|
|
23
|
-
"publisher": { "@type": "Organization", "name": "ThumbGate", "url": "https://thumbgate.ai" },
|
|
24
|
-
"about": [
|
|
25
|
-
{ "@type": "Thing", "name": "FinOps for AI" },
|
|
26
|
-
{ "@type": "Thing", "name": "Agent Cost Optimization" },
|
|
27
|
-
{ "@type": "Thing", "name": "LLM Token Savings" },
|
|
28
|
-
{ "@type": "Thing", "name": "PreToolUse Gates" }
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
</script>
|
|
32
|
-
<style>
|
|
33
|
-
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
|
|
34
|
-
:root { --bg:#0a0a0b; --card:#161618; --border:#222225; --text:#e8e8ec; --muted:#8b8b94; --cyan:#22d3ee; --green:#34d399; }
|
|
35
|
-
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); line-height: 1.7; }
|
|
36
|
-
.container { max-width: 860px; margin: 0 auto; padding: 2rem 1.5rem 4rem; }
|
|
37
|
-
nav { padding: 1rem 2rem; border-bottom: 1px solid var(--border); display:flex; gap:1.5rem; flex-wrap:wrap; }
|
|
38
|
-
nav a { color: var(--muted); text-decoration:none; font-size:0.9rem; }
|
|
39
|
-
nav .brand { color: var(--text); font-weight:700; }
|
|
40
|
-
.pill { display:inline-block; font-size:0.75rem; letter-spacing:0.08em; text-transform:uppercase; color:var(--cyan); background:rgba(34,211,238,0.08); border:1px solid rgba(34,211,238,0.2); padding:4px 12px; border-radius:100px; margin-top:1.5rem; font-weight:600; }
|
|
41
|
-
h1 { font-size:2.2rem; line-height:1.15; margin:1rem 0 1rem; }
|
|
42
|
-
h2 { font-size:1.45rem; margin:2.2rem 0 1rem; color:var(--cyan); }
|
|
43
|
-
h3 { margin:0.6rem 0; font-size:1rem; }
|
|
44
|
-
p, li { margin-bottom:0.75rem; }
|
|
45
|
-
ul, ol { padding-left:1.25rem; }
|
|
46
|
-
.card { background: var(--card); border:1px solid var(--border); border-radius:12px; padding:1.25rem; margin:1rem 0; }
|
|
47
|
-
.grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:1rem; margin:1rem 0; }
|
|
48
|
-
.grid .card h3 { color:var(--cyan); }
|
|
49
|
-
.cta { display:inline-block; background:var(--cyan); color:#000; padding:0.8rem 1.2rem; border-radius:8px; text-decoration:none; font-weight:700; }
|
|
50
|
-
.secondary { color:var(--cyan); text-decoration:underline; margin-left:1rem; }
|
|
51
|
-
.quote { border-left:3px solid var(--cyan); padding:0.75rem 1rem; margin:1rem 0; color:var(--muted); font-style:italic; }
|
|
52
|
-
code, pre { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; background:#0f0f11; border:1px solid var(--border); border-radius:6px; padding:0.15rem 0.4rem; font-size:0.9rem; }
|
|
53
|
-
pre { padding:0.85rem 1rem; overflow-x:auto; }
|
|
54
|
-
.footer-links { margin-top:2.5rem; padding-top:1.25rem; border-top:1px solid var(--border); color:var(--muted); font-size:0.9rem; }
|
|
55
|
-
.footer-links a { color:var(--cyan); text-decoration:none; }
|
|
56
|
-
table.compare { width:100%; border-collapse:collapse; margin:1rem 0; }
|
|
57
|
-
table.compare th, table.compare td { padding:0.6rem 0.8rem; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
|
|
58
|
-
table.compare th { color:var(--cyan); font-size:0.85rem; text-transform:uppercase; letter-spacing:0.05em; }
|
|
59
|
-
.savings-num { color:var(--green); font-weight:700; }
|
|
60
|
-
</style>
|
|
61
|
-
</head>
|
|
62
|
-
<body>
|
|
63
|
-
<nav>
|
|
64
|
-
<a href="/" class="brand">ThumbGate</a>
|
|
65
|
-
<a href="/guide">Guide</a>
|
|
66
|
-
<a href="/agent-manager">Agent Manager</a>
|
|
67
|
-
<a href="/codex-enterprise">Codex Enterprise</a>
|
|
68
|
-
<a href="/dashboard">Dashboard demo</a>
|
|
69
|
-
<a href="https://github.com/IgorGanapolsky/ThumbGate" target="_blank" rel="noopener">GitHub</a>
|
|
70
|
-
</nav>
|
|
71
|
-
<div class="container">
|
|
72
|
-
<span class="pill">FinOps for AI agents</span>
|
|
73
|
-
<h1>Cost dashboards tell you what your agents wasted last week. ThumbGate stops the waste before it fires.</h1>
|
|
74
|
-
<p>Most AI-spend platforms — Finout, Vantage, the new "AI FinOps Assistant" wave — focus on <em>showing you the bill after the agent ran</em>: cost allocation, anomaly detection, unit economics finance can trust. A few (Helicone's rate limits, Revenium's Economic Control) add coarse runtime enforcement keyed off $ thresholds or request counts. None of them stop the wasted tool call by understanding <em>why</em> it would have failed.</p>
|
|
75
|
-
<p>That's the layer ThumbGate occupies. Every PreToolUse gate that fires is a Claude / GPT call your agent <em>did not</em> make — input tokens you didn't spend, output tokens you didn't spend, retry loop you didn't trigger. The savings are computable, conservative, and now surfaced as a number on your CLI.</p>
|
|
76
|
-
|
|
77
|
-
<div class="quote">"74% of CIOs say their role will be at risk if their company does not deliver measurable business gains from AI within the next two years." — <a href="https://www.cio.com/article/4172555/how-it-teams-are-putting-ai-agents-to-work.html" target="_blank" rel="noopener" style="color:var(--cyan);font-style:normal;">CIO Online, 2026</a></div>
|
|
78
|
-
<p>"Measurable" is the operative word. A token-spend dashboard tells finance how much got burned; it doesn't tell the CIO board what was averted. <code>thumbgate cost</code> prints a single conservative dollar figure backed by the gate-block count from <em>your</em> machine — not "what enterprises like you saved." That's the artifact that survives a 2026 budget review.</p>
|
|
79
|
-
|
|
80
|
-
<h2>One command, one number</h2>
|
|
81
|
-
<p>Once ThumbGate is installed and gates have been firing, this is what an operator sees:</p>
|
|
82
|
-
<pre><code>$ thumbgate cost
|
|
83
|
-
|
|
84
|
-
💰 ThumbGate cost-savings — cumulative
|
|
85
|
-
──────────────────────────────────────────────────
|
|
86
|
-
Tool calls blocked : 247
|
|
87
|
-
Tool calls warned : 12
|
|
88
|
-
Tool calls passed : 3,401
|
|
89
|
-
Top blocker : no-mocked-db (138 blocks)
|
|
90
|
-
|
|
91
|
-
Tokens you did NOT spend
|
|
92
|
-
Input : 494K
|
|
93
|
-
Output : 148K
|
|
94
|
-
Total : 642K
|
|
95
|
-
|
|
96
|
-
Estimated <span class="savings-num">$ saved : $3.95</span></code></pre>
|
|
97
|
-
<p>The methodology is intentionally conservative: 2,000 input + 600 output tokens per blocked call, a Sonnet-heavy model mix (80% Sonnet 4.5, 15% Opus 4.6, 5% Haiku 4.5), Anthropic published prices. The goal is "you almost certainly saved at least this much" — not "let's flatter ourselves." Override the mix with <code>--mix '{"claude-sonnet-4-5":1.0}'</code> if your stack is different.</p>
|
|
98
|
-
|
|
99
|
-
<h2>Prevention vs. reporting</h2>
|
|
100
|
-
<table class="compare">
|
|
101
|
-
<thead>
|
|
102
|
-
<tr><th>Capability</th><th>Reporting-layer FinOps</th><th>ThumbGate (runtime gates)</th></tr>
|
|
103
|
-
</thead>
|
|
104
|
-
<tbody>
|
|
105
|
-
<tr><td>See what agents spent last week</td><td>✅</td><td>Partial (via dashboard)</td></tr>
|
|
106
|
-
<tr><td>Allocate spend to teams / features</td><td>✅</td><td>Per-gate breakdown via <code>byGate</code></td></tr>
|
|
107
|
-
<tr><td>Stop a known-bad tool call before it hits the model</td><td>❌</td><td>✅ — PreToolUse gate fires, no API call made</td></tr>
|
|
108
|
-
<tr><td>Promote a one-off failure into a permanent gate</td><td>❌</td><td>✅ — feedback loop + lesson DB</td></tr>
|
|
109
|
-
<tr><td>Surface gate candidates from <em>silent</em> failures (where no human ever gave thumbs-down)</td><td>❌</td><td>✅ — unsupervised silent-failure clustering, on by default</td></tr>
|
|
110
|
-
<tr><td>Print conservative $ saved per day</td><td>❌</td><td>✅ — <code>thumbgate cost</code></td></tr>
|
|
111
|
-
<tr><td>K8s pod-level allocation, finance-grade reporting</td><td>✅ (that's their core)</td><td>❌ (not our layer)</td></tr>
|
|
112
|
-
</tbody>
|
|
113
|
-
</table>
|
|
114
|
-
<p>The two layers compose. ThumbGate prevents the wasted spend; a reporting FinOps tool tells finance what the remaining spend was for. Picking ThumbGate doesn't mean you don't also need cost visibility — it means the visibility number gets smaller.</p>
|
|
115
|
-
|
|
116
|
-
<h2>Why the savings are real, not theoretical</h2>
|
|
117
|
-
<ol>
|
|
118
|
-
<li><strong>Every block is one fewer round trip.</strong> A blocked tool call doesn't reach the model. There's no "ThumbGate intercepted but the request still cost you" — the agent's tool-call execution is replaced with the gate's verdict, and the agent's next reasoning step takes the verdict as context instead of the failed result.</li>
|
|
119
|
-
<li><strong>The avoided retry loop is the bulk of the saving.</strong> Failed tool calls don't just cost the call — they cost the model's next reasoning turn (which sees the failure and tries again), and often a third turn (which tries a different approach). Conservative 2k input + 600 output assumes one retry; in practice it's often more.</li>
|
|
120
|
-
<li><strong>The numbers come from your local <code>gate-stats.json</code>.</strong> Not from a marketing model, not from "what enterprises like you saved." Your machine, your gates, your blocks.</li>
|
|
121
|
-
<li><strong>You don't have to give thumbs-down for the system to learn.</strong> ThumbGate's unsupervised <em>silent-failure clustering</em> runs by default — it mines your conversation logs for tool calls that failed (non-zero exit code or matched error patterns) but never got an explicit thumbs-down, clusters them by tool + argument shape, and surfaces them as gate candidates. The same false-positive-rate guardrail that vets human-feedback candidates vets these. Lazy users still get the savings. Opt out with <code>THUMBGATE_SILENT_FAILURE_CLUSTERING=0</code> if you want HITL-only.</li>
|
|
122
|
-
</ol>
|
|
123
|
-
|
|
124
|
-
<h2>Get the number on your machine</h2>
|
|
125
|
-
<pre><code>npx thumbgate init # wire the PreToolUse hook
|
|
126
|
-
# ...let your agent run for a few hours...
|
|
127
|
-
npx thumbgate cost # see what the gates were worth</code></pre>
|
|
128
|
-
<p>Or as JSON, if you want to ship it to a dashboard:</p>
|
|
129
|
-
<pre><code>npx thumbgate cost --json | jq .savings.dollarsSaved</code></pre>
|
|
130
|
-
|
|
131
|
-
<div class="quote">"The category isn't 'FinOps for AI' — it's 'gates that stop the spend so FinOps has less to report on.' One sits behind the other."</div>
|
|
132
|
-
|
|
133
|
-
<div class="card">
|
|
134
|
-
<p><strong>The free CLI is real. The paid tier is the hosted dashboard, org-wide rule library, and the operator the Agent Manager doesn't have to be themselves.</strong></p>
|
|
135
|
-
<p>
|
|
136
|
-
<a href="/#workflow-sprint-intake?utm_source=website&utm_medium=agents_cost_savings_page&utm_campaign=finops_sprint&cta_id=agents_cost_savings_sprint_intake&cta_placement=agents_cost_savings_page" class="cta">Start the Workflow Hardening Sprint</a>
|
|
137
|
-
<a href="/checkout/pro?utm_source=website&utm_medium=agents_cost_savings_page&utm_campaign=pro_upgrade&cta_id=agents_cost_savings_pro_checkout&cta_placement=agents_cost_savings_page&plan_id=pro" class="secondary">Or start Pro at $19/mo →</a>
|
|
138
|
-
</p>
|
|
139
|
-
</div>
|
|
140
|
-
|
|
141
|
-
<h2>Related reading</h2>
|
|
142
|
-
<ul>
|
|
143
|
-
<li><a href="/codex-enterprise">ThumbGate for Codex in the Enterprise</a> — the same prevention story for the OpenAI×Dell distribution wave.</li>
|
|
144
|
-
<li><a href="/agent-manager">ThumbGate for the Agent Manager</a> — the role inside the org that owns "what are our agents costing us."</li>
|
|
145
|
-
<li><a href="/dashboard">Dashboard demo</a> — the $ saved number rendered against demo data, so you can see the shape before installing.</li>
|
|
146
|
-
</ul>
|
|
147
|
-
|
|
148
|
-
<div class="footer-links">
|
|
149
|
-
Built for teams who watched their Claude bill spike, installed a FinOps dashboard, and realized the dashboard only told them <em>which</em> failed agent loop ran the meter — not how to stop it.
|
|
150
|
-
</div>
|
|
151
|
-
</div>
|
|
152
|
-
</body>
|
|
153
|
-
</html>
|