clawmoat 0.7.0 → 1.0.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.
- package/.dockerignore +9 -0
- package/CHANGELOG.md +18 -0
- package/CONTRIBUTING.md +4 -2
- package/DEMO.md +87 -0
- package/Dockerfile +5 -18
- package/README.md +294 -8
- package/SECURITY.md +58 -10
- package/THREAT_MODEL.md +129 -0
- package/agent/README.md +131 -0
- package/agent/index.js +471 -0
- package/agent/install-service.sh +94 -0
- package/agent/openclaw-hook.js +453 -0
- package/agent/provider-setup.js +649 -0
- package/agent/setup.js +274 -0
- package/assets/BADGE-USAGE.md +20 -0
- package/assets/clawmoat-badge.svg +21 -0
- package/bin/clawmoat.js +468 -111
- package/docs/affiliates/dashboard.html +124 -0
- package/docs/affiliates/index.html +236 -0
- package/docs/agent-install.html +183 -0
- package/docs/ai-agent-security-scanner.html +10 -6
- package/docs/badge/index.html +149 -0
- package/docs/badge/scanning.svg +23 -0
- package/docs/blog/386-malicious-skills.html +262 -0
- package/docs/blog/40000-exposed-openclaw-instances.html +201 -0
- package/docs/blog/agent-trust-protocol.html +198 -0
- package/docs/blog/ai-agent-earns-commissions.html +230 -0
- package/docs/blog/bugmageddon-agent-firewall.html +174 -0
- package/docs/blog/calculator-math.html +180 -0
- package/docs/blog/clawmoat-vs-llamafirewall-nemo-guardrails.html +229 -0
- package/docs/blog/host-guardian-launch.html +18 -8
- package/docs/blog/ibm-experts-agent-runtime-protection.html +247 -0
- package/docs/blog/index.html +211 -9
- package/docs/blog/langchain-security-tutorial.html +18 -8
- package/docs/blog/mcp-30-cves-security-crisis.html +286 -0
- package/docs/blog/meta-researcher-rogue-agent.html +201 -0
- package/docs/blog/microsoft-openclaw-workstation-security.html +235 -0
- package/docs/blog/nist-ai-agent-standards-clawmoat.html +377 -0
- package/docs/blog/oasis-websocket-hijack.html +212 -0
- package/docs/blog/ollama-openclaw-security.html +160 -0
- package/docs/blog/openclaw-enterprise-readiness-claw10.html +199 -0
- package/docs/blog/openclaw-security-reckoning-2026.html +368 -0
- package/docs/blog/owasp-agentic-ai-top10.html +18 -8
- package/docs/blog/securing-ai-agents.html +18 -8
- package/docs/blog/supply-chain-agents.html +18 -8
- package/docs/business/index.html +525 -0
- package/docs/business/install.html +261 -0
- package/docs/checklist.html +174 -0
- package/docs/compare/index.html +122 -0
- package/docs/compare/lakera/index.html +62 -0
- package/docs/compare/llm-guard/index.html +49 -0
- package/docs/compare/snyk-agent-scan/index.html +63 -0
- package/docs/compare.html +10 -6
- package/docs/dashboard/index.html +520 -0
- package/docs/finance/index.html +220 -0
- package/docs/guides/business-deployment.html +770 -0
- package/docs/hall-of-fame.html +174 -0
- package/docs/index.html +447 -154
- package/docs/install.sh +557 -0
- package/docs/integrations/langchain.html +14 -6
- package/docs/integrations/openai.html +14 -6
- package/docs/integrations/openclaw.html +55 -7
- package/docs/plans/2026-03-26-threat-intel-api.md +255 -0
- package/docs/plans/2026-04-14-bugmageddon-marketing-pack.md +329 -0
- package/docs/plans/2026-04-14-clawmoat-v1-bugmageddon.md +248 -0
- package/docs/plans/2026-04-14-v1-release-update.md +91 -0
- package/docs/plans/2026-04-19-supabase-audit.md +68 -0
- package/docs/plans/2026-05-12-sales-push.md +303 -0
- package/docs/playground/index.html +893 -0
- package/docs/playground.html +4 -7
- package/docs/privacy-policy/index.html +122 -0
- package/docs/rfcs/defense-in-depth.md +467 -0
- package/docs/scan/index.html +358 -0
- package/docs/services/case-study.html +255 -0
- package/docs/services/downloads/install-openclaw.bat +45 -0
- package/docs/services/downloads/install-openclaw.command +38 -0
- package/docs/services/downloads/install-openclaw.sh +38 -0
- package/docs/services/get-started.html +165 -0
- package/docs/services/index.html +598 -0
- package/docs/services/multi-agent-security.html +284 -0
- package/docs/services/one-pager.html +99 -0
- package/docs/services/pitch-deck.html +229 -0
- package/docs/services/roi-calculator.html +258 -0
- package/docs/sitemap.xml +192 -2
- package/docs/support/index.html +135 -0
- package/docs/templates/customer-service/HEARTBEAT.md +61 -0
- package/docs/templates/customer-service/MEMORY.md +89 -0
- package/docs/templates/customer-service/SOUL.md +41 -0
- package/docs/templates/customer-service/USER.md +56 -0
- package/docs/templates/executive/HEARTBEAT.md +86 -0
- package/docs/templates/executive/MEMORY.md +92 -0
- package/docs/templates/executive/SOUL.md +44 -0
- package/docs/templates/executive/USER.md +62 -0
- package/docs/templates/finance/HEARTBEAT.md +58 -0
- package/docs/templates/finance/MEMORY.md +87 -0
- package/docs/templates/finance/SOUL.md +38 -0
- package/docs/templates/finance/USER.md +53 -0
- package/docs/templates/index.html +115 -0
- package/docs/templates/operations/HEARTBEAT.md +63 -0
- package/docs/templates/operations/MEMORY.md +68 -0
- package/docs/templates/operations/SOUL.md +38 -0
- package/docs/templates/operations/USER.md +49 -0
- package/docs/templates/sales/HEARTBEAT.md +55 -0
- package/docs/templates/sales/MEMORY.md +89 -0
- package/docs/templates/sales/SOUL.md +34 -0
- package/docs/templates/sales/USER.md +54 -0
- package/docs/terms-of-service/index.html +122 -0
- package/eslint.config.js +32 -0
- package/evals/README.md +29 -0
- package/evals/cases.json +390 -0
- package/evals/results.md +68 -0
- package/evals/run.js +180 -0
- package/examples/basic-usage.js +38 -0
- package/examples/demo-attack/demo.js +186 -0
- package/examples/python-quickstart/README.md +54 -0
- package/examples/python-quickstart/clawmoat_client.py +167 -0
- package/examples/video-demo/README.md +14 -0
- package/examples/video-demo/scene-a-normal.js +29 -0
- package/examples/video-demo/scene-b-attack-arrives.js +31 -0
- package/examples/video-demo/scene-c-hijack.js +44 -0
- package/examples/video-demo/scene-d-clawmoat.js +46 -0
- package/integrations/crewai/README.md +32 -0
- package/integrations/crewai/clawmoat_crewai/__init__.py +17 -0
- package/integrations/crewai/clawmoat_crewai/guard.py +103 -0
- package/integrations/crewai/pyproject.toml +21 -0
- package/integrations/langchain/README.md +91 -0
- package/integrations/langchain/clawmoat_langchain/__init__.py +17 -0
- package/integrations/langchain/clawmoat_langchain/callback.py +489 -0
- package/integrations/langchain/pyproject.toml +32 -0
- package/integrations/litellm/README.md +324 -0
- package/integrations/litellm/clawmoat_litellm/__init__.py +21 -0
- package/integrations/litellm/clawmoat_litellm/callback.py +329 -0
- package/integrations/litellm/clawmoat_litellm/proxy_middleware.py +224 -0
- package/integrations/litellm/pyproject.toml +74 -0
- package/integrations/openai-agents/README.md +392 -0
- package/integrations/openai-agents/clawmoat_openai_agents/__init__.py +20 -0
- package/integrations/openai-agents/clawmoat_openai_agents/guardrail.py +431 -0
- package/integrations/openai-agents/clawmoat_openai_agents/middleware.py +311 -0
- package/integrations/openai-agents/pyproject.toml +76 -0
- package/package.json +6 -5
- package/plugins/openclaw-adapter/PHASE1.md +439 -0
- package/plugins/openclaw-adapter/README.md +103 -0
- package/plugins/openclaw-adapter/SPEC.md +1644 -0
- package/plugins/openclaw-adapter/package.json +31 -0
- package/plugins/openclaw-adapter/src/index.test.ts +226 -0
- package/plugins/openclaw-adapter/src/index.ts +140 -0
- package/plugins/openclaw-adapter/tsconfig.json +14 -0
- package/server/data/threats.json +290 -0
- package/server/index.js +224 -10
- package/src/adapters/express.js +161 -0
- package/src/adapters/index.js +92 -0
- package/src/adapters/langchain.js +185 -0
- package/src/approval/index.js +456 -0
- package/src/ban-scanner.js +200 -0
- package/src/boundary-scanner.js +296 -0
- package/src/ci-scanner.js +279 -0
- package/src/code-scanner.js +245 -0
- package/src/enforce.js +166 -0
- package/src/finance/index.js +585 -0
- package/src/finance/mcp-firewall.js +486 -0
- package/src/formatters/json.js +80 -0
- package/src/formatters/sarif.js +388 -0
- package/src/guardian/alerts.js +34 -3
- package/src/guardian/gateway-monitor.js +590 -0
- package/src/guardian/index.js +41 -2
- package/src/index.js +105 -0
- package/src/integrations/agentmesh.js +501 -0
- package/src/language-detector.js +201 -0
- package/src/mcp-scanner.js +253 -0
- package/src/multimodal/index.js +579 -0
- package/src/obfuscation-scanner.js +457 -0
- package/src/policy-engine.js +402 -0
- package/src/scanners/dependency-attacks.js +128 -0
- package/src/scanners/prompt-injection.js +18 -0
- package/src/scanners/supply-chain.js +14 -0
- package/src/templates/default-config.yml +90 -0
- package/src/vuln-ops/exploitability.js +46 -0
- package/src/watch/live-monitor.js +720 -0
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
# ClawMoat v1 Bugmageddon Implementation Plan
|
|
2
|
+
|
|
3
|
+
> **For implementation:** Use the executing-plans skill to implement this plan task-by-task.
|
|
4
|
+
|
|
5
|
+
**Goal:** Ship the first ClawMoat v1 feature set around AI-era vulnerability operations, starting with exploitability-focused triage instead of raw finding spam.
|
|
6
|
+
|
|
7
|
+
**Architecture:** Build on the existing scanner core instead of inventing a second product. Add a lightweight vulnerability-ops layer that normalizes findings, scores exploitability, groups related findings, and exposes a simple report format in CLI/docs. Keep it zero-dependency and compatible with current scan flows.
|
|
8
|
+
|
|
9
|
+
**Tech Stack:** Node.js built-ins only, existing ClawMoat scanner architecture, node:test, Markdown docs.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Product thesis
|
|
14
|
+
|
|
15
|
+
AI is making bug discovery cheap.
|
|
16
|
+
|
|
17
|
+
That means the bottleneck is shifting from detection to triage, prioritization, containment, and proof of closure. ClawMoat v1 should not compete on “we also find bugs.” It should compete on “we help you decide what matters first, while runtime protections stay on.”
|
|
18
|
+
|
|
19
|
+
## v1 scope
|
|
20
|
+
|
|
21
|
+
Ship now:
|
|
22
|
+
- exploitability scoring for findings
|
|
23
|
+
- finding clustering / dedupe hints
|
|
24
|
+
- a vulnerability-ops report format
|
|
25
|
+
- docs positioning ClawMoat as runtime containment + triage layer
|
|
26
|
+
|
|
27
|
+
Do not ship yet:
|
|
28
|
+
- full patch orchestration platform
|
|
29
|
+
- dashboards that require a backend rewrite
|
|
30
|
+
- ticketing integrations across every vendor
|
|
31
|
+
- giant enterprise workflow layer
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### Task 1: Create exploitability scoring tests
|
|
36
|
+
|
|
37
|
+
**Files:**
|
|
38
|
+
- Create: `test/vuln-ops.test.js`
|
|
39
|
+
- Modify: `src/index.js`
|
|
40
|
+
- Create: `src/vuln-ops/exploitability.js`
|
|
41
|
+
|
|
42
|
+
**Step 1: Write the failing test**
|
|
43
|
+
|
|
44
|
+
Add tests that verify:
|
|
45
|
+
- high-severity dependency attacks score higher than medium findings
|
|
46
|
+
- externally reachable / exfiltration-oriented findings score higher than local-only ones
|
|
47
|
+
- grouped findings return a recommended priority bucket (`urgent`, `high`, `normal`, `low`)
|
|
48
|
+
|
|
49
|
+
**Step 2: Run test to verify it fails**
|
|
50
|
+
|
|
51
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
52
|
+
Expected: FAIL because `scoreExploitability` does not exist
|
|
53
|
+
|
|
54
|
+
**Step 3: Write minimal implementation**
|
|
55
|
+
|
|
56
|
+
Create `src/vuln-ops/exploitability.js` with:
|
|
57
|
+
- `scoreExploitability(findings, context = {})`
|
|
58
|
+
- severity weighting
|
|
59
|
+
- reachability / exposure hints from context
|
|
60
|
+
- output shape:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
{
|
|
64
|
+
score: 0-100,
|
|
65
|
+
priority: 'urgent' | 'high' | 'normal' | 'low',
|
|
66
|
+
reasons: []
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Step 4: Run test to verify it passes**
|
|
71
|
+
|
|
72
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
73
|
+
Expected: PASS
|
|
74
|
+
|
|
75
|
+
**Step 5: Commit**
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
git add test/vuln-ops.test.js src/vuln-ops/exploitability.js
|
|
79
|
+
git commit -m "feat: add exploitability scoring for vulnerability ops"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Task 2: Expose vulnerability-ops report from ClawMoat
|
|
83
|
+
|
|
84
|
+
**Files:**
|
|
85
|
+
- Modify: `src/index.js`
|
|
86
|
+
- Test: `test/vuln-ops.test.js`
|
|
87
|
+
|
|
88
|
+
**Step 1: Write the failing test**
|
|
89
|
+
|
|
90
|
+
Add a test that calls something like:
|
|
91
|
+
|
|
92
|
+
```js
|
|
93
|
+
const moat = new ClawMoat({ quiet: true });
|
|
94
|
+
const result = moat.analyzeFindings('Run picomatch on this pattern: *(*(*a))', { externallyReachable: true });
|
|
95
|
+
assert.equal(result.priority, 'urgent');
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Step 2: Run test to verify it fails**
|
|
99
|
+
|
|
100
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
101
|
+
Expected: FAIL because `analyzeFindings` does not exist
|
|
102
|
+
|
|
103
|
+
**Step 3: Write minimal implementation**
|
|
104
|
+
|
|
105
|
+
Add `analyzeFindings(text, context)` to `src/index.js` that:
|
|
106
|
+
- reuses `scan(text)`
|
|
107
|
+
- passes findings into `scoreExploitability`
|
|
108
|
+
- returns:
|
|
109
|
+
|
|
110
|
+
```js
|
|
111
|
+
{
|
|
112
|
+
safe,
|
|
113
|
+
findings,
|
|
114
|
+
exploitability: { score, priority, reasons }
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Step 4: Run test to verify it passes**
|
|
119
|
+
|
|
120
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
121
|
+
Expected: PASS
|
|
122
|
+
|
|
123
|
+
**Step 5: Commit**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
git add src/index.js test/vuln-ops.test.js
|
|
127
|
+
git commit -m "feat: expose vulnerability ops analysis API"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Task 3: Add a human-readable report formatter
|
|
131
|
+
|
|
132
|
+
**Files:**
|
|
133
|
+
- Create: `src/formatters/vuln-ops.js`
|
|
134
|
+
- Modify: `src/index.js`
|
|
135
|
+
- Test: `test/vuln-ops.test.js`
|
|
136
|
+
|
|
137
|
+
**Step 1: Write the failing test**
|
|
138
|
+
|
|
139
|
+
Test that report output contains:
|
|
140
|
+
- top priority
|
|
141
|
+
- exploitability score
|
|
142
|
+
- short reasoning bullets
|
|
143
|
+
- finding counts by severity
|
|
144
|
+
|
|
145
|
+
**Step 2: Run test to verify it fails**
|
|
146
|
+
|
|
147
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
148
|
+
Expected: FAIL because formatter does not exist
|
|
149
|
+
|
|
150
|
+
**Step 3: Write minimal implementation**
|
|
151
|
+
|
|
152
|
+
Create formatter that outputs concise text for CLI/docs examples.
|
|
153
|
+
|
|
154
|
+
**Step 4: Run test to verify it passes**
|
|
155
|
+
|
|
156
|
+
Run: `node --test test/vuln-ops.test.js`
|
|
157
|
+
Expected: PASS
|
|
158
|
+
|
|
159
|
+
**Step 5: Commit**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
git add src/formatters/vuln-ops.js test/vuln-ops.test.js src/index.js
|
|
163
|
+
git commit -m "feat: add vulnerability ops report formatter"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Task 4: Update docs and positioning to v1 language
|
|
167
|
+
|
|
168
|
+
**Files:**
|
|
169
|
+
- Modify: `README.md`
|
|
170
|
+
- Modify: `docs/index.html`
|
|
171
|
+
- Modify: `package.json` version only if shipping release immediately
|
|
172
|
+
|
|
173
|
+
**Step 1: Write the doc diff first**
|
|
174
|
+
|
|
175
|
+
Add language that says:
|
|
176
|
+
- AI made bug discovery abundant
|
|
177
|
+
- ClawMoat helps prioritize and contain
|
|
178
|
+
- runtime security + exploitability triage
|
|
179
|
+
|
|
180
|
+
**Step 2: Add example API usage**
|
|
181
|
+
|
|
182
|
+
Document:
|
|
183
|
+
|
|
184
|
+
```js
|
|
185
|
+
const analysis = moat.analyzeFindings(input, { externallyReachable: true });
|
|
186
|
+
console.log(analysis.exploitability.priority);
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Step 3: Verify docs are accurate**
|
|
190
|
+
|
|
191
|
+
Run:
|
|
192
|
+
```bash
|
|
193
|
+
grep -n "analyzeFindings\|exploitability\|Bugmageddon" README.md docs/index.html
|
|
194
|
+
```
|
|
195
|
+
Expected: matching lines present
|
|
196
|
+
|
|
197
|
+
**Step 4: Commit**
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
git add README.md docs/index.html
|
|
201
|
+
git commit -m "docs: position ClawMoat v1 around exploitability triage"
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Task 5: Verification pass
|
|
205
|
+
|
|
206
|
+
**Files:**
|
|
207
|
+
- Test: `test/vuln-ops.test.js`
|
|
208
|
+
- Test: `test/scanners.test.js`
|
|
209
|
+
- Test: `test/multimodal.test.js`
|
|
210
|
+
|
|
211
|
+
**Step 1: Run focused verification**
|
|
212
|
+
|
|
213
|
+
Run:
|
|
214
|
+
```bash
|
|
215
|
+
node --test test/vuln-ops.test.js test/scanners.test.js test/multimodal.test.js
|
|
216
|
+
```
|
|
217
|
+
Expected: PASS
|
|
218
|
+
|
|
219
|
+
**Step 2: Optional broader run if resources allow**
|
|
220
|
+
|
|
221
|
+
Run:
|
|
222
|
+
```bash
|
|
223
|
+
node --test test/*.test.js
|
|
224
|
+
```
|
|
225
|
+
Expected: PASS, unless environment kills long run under load
|
|
226
|
+
|
|
227
|
+
**Step 3: Capture evidence**
|
|
228
|
+
|
|
229
|
+
Save the passing output in the session notes / commit message summary before claiming done.
|
|
230
|
+
|
|
231
|
+
**Step 4: Commit release prep**
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
git add -A
|
|
235
|
+
git commit -m "chore: verify ClawMoat v1 vulnerability ops update"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Recommended execution order right now
|
|
241
|
+
|
|
242
|
+
1. Task 1
|
|
243
|
+
2. Task 2
|
|
244
|
+
3. Task 5 focused verification
|
|
245
|
+
4. Task 4 docs update
|
|
246
|
+
5. Task 3 formatter if time remains today
|
|
247
|
+
|
|
248
|
+
That gets a real v1 wedge shipped fast without boiling the ocean.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# ClawMoat v1.0.0 update
|
|
2
|
+
|
|
3
|
+
## What changed
|
|
4
|
+
|
|
5
|
+
ClawMoat is moving from a fast-moving v0 project to a stable v1 product category:
|
|
6
|
+
|
|
7
|
+
**The open-source agent firewall.**
|
|
8
|
+
|
|
9
|
+
This is not just a semantic version bump.
|
|
10
|
+
It is a category claim.
|
|
11
|
+
|
|
12
|
+
The product now has enough surface area and enough market validation to stop sounding like an experiment:
|
|
13
|
+
|
|
14
|
+
- prompt injection scanning
|
|
15
|
+
- outbound secret and exfiltration scanning
|
|
16
|
+
- policy engine
|
|
17
|
+
- enforcement middleware
|
|
18
|
+
- MCP scanner
|
|
19
|
+
- supply chain scanner
|
|
20
|
+
- host/runtime controls
|
|
21
|
+
- live monitoring dashboard
|
|
22
|
+
- audit trail
|
|
23
|
+
- framework integrations
|
|
24
|
+
|
|
25
|
+
That is a real security product.
|
|
26
|
+
|
|
27
|
+
## Why now
|
|
28
|
+
|
|
29
|
+
The market just got a cleaner narrative.
|
|
30
|
+
|
|
31
|
+
WSJ framed the next phase as **bugmageddon**: AI getting much better at vulnerability discovery.
|
|
32
|
+
|
|
33
|
+
That matters because:
|
|
34
|
+
- bug discovery accelerates
|
|
35
|
+
- exploit discovery becomes cheaper
|
|
36
|
+
- patching remains slow
|
|
37
|
+
- agents already have high privileges
|
|
38
|
+
|
|
39
|
+
So ClawMoat’s job is clearer than ever:
|
|
40
|
+
|
|
41
|
+
**contain what agents can do when vulnerabilities are inevitable**
|
|
42
|
+
|
|
43
|
+
## New top-line message
|
|
44
|
+
|
|
45
|
+
**They protect the model. ClawMoat protects the machine.**
|
|
46
|
+
|
|
47
|
+
Backup line:
|
|
48
|
+
|
|
49
|
+
**As AI finds bugs faster, runtime containment stops being optional.**
|
|
50
|
+
|
|
51
|
+
## What shipped in this update
|
|
52
|
+
|
|
53
|
+
1. Homepage hero updated to v1.0.0 framing
|
|
54
|
+
2. New blog post: `blog/bugmageddon-agent-firewall.html`
|
|
55
|
+
3. Blog index updated with the new post and v1 tag
|
|
56
|
+
4. Package version moved to `1.0.0`
|
|
57
|
+
5. Version references updated in formatter tests/docs where needed
|
|
58
|
+
6. Marketing pack created for X, Reddit, HN, LinkedIn, Dev.to, homepage copy
|
|
59
|
+
|
|
60
|
+
## What still needs to happen
|
|
61
|
+
|
|
62
|
+
### Release hygiene
|
|
63
|
+
- run tests
|
|
64
|
+
- publish npm package as `1.0.0`
|
|
65
|
+
- tag GitHub release
|
|
66
|
+
- add release notes to README or GitHub Releases
|
|
67
|
+
|
|
68
|
+
### Distribution
|
|
69
|
+
- post X thread manually if API credits still dead
|
|
70
|
+
- post Reddit piece manually
|
|
71
|
+
- publish Dev.to version
|
|
72
|
+
- announce in GitHub README / release notes
|
|
73
|
+
|
|
74
|
+
### Strong next product moves
|
|
75
|
+
- `clawmoat doctor` or `clawmoat exposure` command that outputs a shareable risk summary
|
|
76
|
+
- first-class MCP risk scoring report
|
|
77
|
+
- clearer “monitor vs enforce” onboarding path
|
|
78
|
+
- more obvious enterprise / team runtime policy story
|
|
79
|
+
|
|
80
|
+
## Julian take
|
|
81
|
+
|
|
82
|
+
Going to v1 is right.
|
|
83
|
+
|
|
84
|
+
The mistake would be calling it v1 while still talking like a hobby scanner.
|
|
85
|
+
|
|
86
|
+
So the real upgrade is not the version number.
|
|
87
|
+
It is the language:
|
|
88
|
+
|
|
89
|
+
- from “security tool” to **agent firewall**
|
|
90
|
+
- from “prompt injection detection” to **runtime containment**
|
|
91
|
+
- from “nice to have” to **mandatory infrastructure for over-permissioned agents**
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# ClawMoat Supabase audit
|
|
2
|
+
|
|
3
|
+
Date: 2026-04-19
|
|
4
|
+
Project: `bfnoxngfskhzgnqkwuhb`
|
|
5
|
+
|
|
6
|
+
## Executive summary
|
|
7
|
+
|
|
8
|
+
ClawMoat does use Supabase, but only in a narrow way right now.
|
|
9
|
+
|
|
10
|
+
### Confirmed usage in repo
|
|
11
|
+
|
|
12
|
+
Only one live code path in the ClawMoat repo references this Supabase project:
|
|
13
|
+
|
|
14
|
+
- `docs/affiliates/index.html`
|
|
15
|
+
- browser POST to `/rest/v1/affiliates`
|
|
16
|
+
- purpose: store affiliate signups
|
|
17
|
+
|
|
18
|
+
## What is NOT currently wired to Supabase in the repo
|
|
19
|
+
|
|
20
|
+
I did not find repo references showing Supabase is currently required for:
|
|
21
|
+
|
|
22
|
+
- core npm package
|
|
23
|
+
- CLI scans
|
|
24
|
+
- GitHub repo flows
|
|
25
|
+
- main homepage
|
|
26
|
+
- enforcement middleware
|
|
27
|
+
- MCP scanner
|
|
28
|
+
- prompt injection scanning
|
|
29
|
+
- blog/site rendering outside affiliate signup
|
|
30
|
+
|
|
31
|
+
## Blast radius if Supabase pauses
|
|
32
|
+
|
|
33
|
+
### Likely affected
|
|
34
|
+
- affiliate signup form submission
|
|
35
|
+
- any future dashboard/admin features built on the same project
|
|
36
|
+
|
|
37
|
+
### Likely unaffected
|
|
38
|
+
- `clawmoat` npm package itself
|
|
39
|
+
- GitHub repo
|
|
40
|
+
- core docs/site pages
|
|
41
|
+
- scanner runtime behavior
|
|
42
|
+
- local CLI usage
|
|
43
|
+
|
|
44
|
+
## Cleanup performed
|
|
45
|
+
|
|
46
|
+
Deleted the temporary keepalive test row that had been inserted into `affiliates`.
|
|
47
|
+
|
|
48
|
+
## Preventive action added
|
|
49
|
+
|
|
50
|
+
Added a read-only keepalive job:
|
|
51
|
+
|
|
52
|
+
- script: `/home/ildar/.openclaw/scripts/clawmoat-supabase-keepalive.py`
|
|
53
|
+
- schedule: every 3 days via crontab
|
|
54
|
+
- checks:
|
|
55
|
+
- `auth/v1/health`
|
|
56
|
+
- `rest/v1/affiliates?select=id&limit=1`
|
|
57
|
+
|
|
58
|
+
Log file:
|
|
59
|
+
- `/home/ildar/.openclaw/logs/clawmoat-supabase-keepalive.log`
|
|
60
|
+
|
|
61
|
+
## Recommendation
|
|
62
|
+
|
|
63
|
+
Good enough for now.
|
|
64
|
+
|
|
65
|
+
If ClawMoat starts depending more heavily on Supabase, next step should be to:
|
|
66
|
+
- move from inline browser fetches to a small controlled backend
|
|
67
|
+
- remove public coupling from the static affiliates page
|
|
68
|
+
- define exactly which features are allowed to depend on Supabase
|
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# ClawMoat sales push — May 12, 2026
|
|
2
|
+
|
|
3
|
+
## Straight diagnosis
|
|
4
|
+
|
|
5
|
+
ClawMoat has a real product shape now, but sales are being throttled by execution gaps, not by the idea.
|
|
6
|
+
|
|
7
|
+
The strong part: the category claim is sharp. **They protect the model. ClawMoat protects the machine.** That is a real wedge because the market is crowded with prompt filters, MCP scanners, and guardrail libraries, while ClawMoat can credibly claim host/runtime containment.
|
|
8
|
+
|
|
9
|
+
The weak part: the public product funnel is split across too many offers and some proof points are stale. The homepage sells open-source security SaaS. `/services/` sells done-for-you OpenClaw setup. `/business/` sells enterprise assessment. The npm package still shows `0.8.0` even though the repo is `1.0.0`. That inconsistency kills trust right before purchase.
|
|
10
|
+
|
|
11
|
+
## Current baseline
|
|
12
|
+
|
|
13
|
+
- GitHub: 39 stars, 6 forks.
|
|
14
|
+
- npm: latest published version is `0.8.0`, while repo `package.json` is `1.0.0`.
|
|
15
|
+
- npm downloads last 30 days: 43.
|
|
16
|
+
- Tests: 527 passing, 0 failing.
|
|
17
|
+
- Site: deployed and current on `clawmoat.com`.
|
|
18
|
+
- Checkout endpoint: live at `https://clawmoat-production.up.railway.app/api/checkout` for POST, health check live.
|
|
19
|
+
- Homepage paid CTA exists for Developer and Team plans.
|
|
20
|
+
- Services page has live Stripe links.
|
|
21
|
+
|
|
22
|
+
## Market read
|
|
23
|
+
|
|
24
|
+
The agent-security category has moved fast. GitHub search shows several adjacent tools with more stars:
|
|
25
|
+
|
|
26
|
+
- `luckyPipewrench/pipelock` — 583 stars, "Open-source AI agent firewall for MCP security: agent egress control, DLP, SSRF, and prompt injection defense."
|
|
27
|
+
- `getagentseal/agentseal` — 254 stars, security toolkit for dangerous skills, MCP configs, supply chain attacks, prompt-injection resistance.
|
|
28
|
+
- `snyk/agent-scan` — 2392 stars, security scanner for AI agents, MCP servers, and agent skills.
|
|
29
|
+
- `splx-ai/agentic-radar` — 966 stars, scanner for LLM agentic workflows.
|
|
30
|
+
- `cisco-ai-defense/mcp-scanner` — 923 stars, MCP server scanner.
|
|
31
|
+
- `protectai/llm-guard` and `NVIDIA-NeMo/Guardrails` are broader LLM guardrail/toolkit players.
|
|
32
|
+
|
|
33
|
+
This means ClawMoat cannot win by saying "we scan prompt injection". That claim is already commoditized.
|
|
34
|
+
|
|
35
|
+
ClawMoat should win by owning this exact sentence:
|
|
36
|
+
|
|
37
|
+
> Prompt filters inspect text. ClawMoat controls what the agent can do to your machine.
|
|
38
|
+
|
|
39
|
+
## Best buyer segments
|
|
40
|
+
|
|
41
|
+
### 1. Self-hosted AI agent users
|
|
42
|
+
|
|
43
|
+
People running Claude Code, OpenClaw, Cursor, Aider, MCP servers, local agents, or homegrown agent loops on real machines.
|
|
44
|
+
|
|
45
|
+
Their pain: "I want the power, but I don't trust the blast radius."
|
|
46
|
+
|
|
47
|
+
Best offer: free CLI + scanner + badge, then Developer plan for alerts, persistent logs, threat intel.
|
|
48
|
+
|
|
49
|
+
### 2. Small technical teams adopting coding agents
|
|
50
|
+
|
|
51
|
+
Founders and engineering leads with 3-25 developers. They are not ready for enterprise procurement but they do worry about credentials, repo access, and MCP sprawl.
|
|
52
|
+
|
|
53
|
+
Their pain: "My team is installing agent tools faster than security can track them."
|
|
54
|
+
|
|
55
|
+
Best offer: Team plan at $49/mo or one-time implementation/security review.
|
|
56
|
+
|
|
57
|
+
### 3. Consultants / AI automation shops
|
|
58
|
+
|
|
59
|
+
They deploy agents for clients and need a trust story. They can resell or bundle ClawMoat.
|
|
60
|
+
|
|
61
|
+
Their pain: "I need to convince the client this won't leak their data."
|
|
62
|
+
|
|
63
|
+
Best offer: affiliate/referral program + `Secured by ClawMoat` badge + white-label report.
|
|
64
|
+
|
|
65
|
+
### 4. Security-aware enterprises
|
|
66
|
+
|
|
67
|
+
This is slower sales. Useful for credibility, not first revenue unless there is a warm intro.
|
|
68
|
+
|
|
69
|
+
Their pain: "Employees are using agents with access to production credentials and no audit trail."
|
|
70
|
+
|
|
71
|
+
Best offer: Business assessment, compliance report, managed rollout.
|
|
72
|
+
|
|
73
|
+
## Funnel problems to fix first
|
|
74
|
+
|
|
75
|
+
### 1. npm is stale
|
|
76
|
+
|
|
77
|
+
Repo says v1.0.0. npm says v0.8.0. Homepage says v1.0.0. A developer who runs `npm view clawmoat` sees the mismatch. This is the biggest immediate trust leak.
|
|
78
|
+
|
|
79
|
+
Action: publish `clawmoat@1.0.0` after package hygiene checks.
|
|
80
|
+
|
|
81
|
+
### 2. Package contents include junk
|
|
82
|
+
|
|
83
|
+
`npm pack --dry-run` currently includes `clawmoat-0.8.0.tgz`, `server/index.js.patch`, and `server/data/api-keys.json`. The public preview key is not catastrophic, but shipping key stores and patch scraps looks sloppy.
|
|
84
|
+
|
|
85
|
+
Action: exclude stale tarballs, patch scraps, and local key stores from npm.
|
|
86
|
+
|
|
87
|
+
### 3. The product has too many offers
|
|
88
|
+
|
|
89
|
+
Homepage pricing: Developer/Team SaaS. Services page: setup packages. Business page: assessment. Scanner page: free tool. That is not fatal, but the paths need to be explicit:
|
|
90
|
+
|
|
91
|
+
- Developers: install free → scan → upgrade for logs/alerts.
|
|
92
|
+
- Teams: scan fleet → Team plan.
|
|
93
|
+
- Businesses: book assessment.
|
|
94
|
+
- Consultants: affiliate/resell.
|
|
95
|
+
|
|
96
|
+
### 4. Proof needs to be more concrete
|
|
97
|
+
|
|
98
|
+
"40/40 eval" is useful, but buyers need one visceral demo:
|
|
99
|
+
|
|
100
|
+
- poisoned README tries to exfiltrate `.env`
|
|
101
|
+
- ClawMoat blocks it
|
|
102
|
+
- audit log shows why
|
|
103
|
+
- policy says what would have happened
|
|
104
|
+
|
|
105
|
+
Action: make the attack demo the primary conversion asset.
|
|
106
|
+
|
|
107
|
+
### 5. Sales CTA is mostly passive
|
|
108
|
+
|
|
109
|
+
Waiting for traffic will not work. The immediate sales motion should be direct outreach to people already showing intent: maintainers of agent repos, AI automation consultants, and founders posting about Claude Code/MCP security.
|
|
110
|
+
|
|
111
|
+
## Positioning
|
|
112
|
+
|
|
113
|
+
Primary headline:
|
|
114
|
+
|
|
115
|
+
> Your AI agent has access to your machine. ClawMoat decides what it can touch.
|
|
116
|
+
|
|
117
|
+
Secondary:
|
|
118
|
+
|
|
119
|
+
> The open-source firewall for AI agents running on real machines.
|
|
120
|
+
|
|
121
|
+
Mechanism:
|
|
122
|
+
|
|
123
|
+
> Prompt filters inspect the conversation. ClawMoat monitors the boundary: files, shell commands, network calls, MCP configs, secrets, and outbound data.
|
|
124
|
+
|
|
125
|
+
Contrast:
|
|
126
|
+
|
|
127
|
+
> Lakera, LLM Guard, and NeMo focus on model/prompt safety. Snyk and MCP scanners focus on config/static scanning. ClawMoat focuses on runtime containment for the host.
|
|
128
|
+
|
|
129
|
+
## 14-day sales push
|
|
130
|
+
|
|
131
|
+
### Day 0: Product hygiene
|
|
132
|
+
|
|
133
|
+
- Publish npm `1.0.0`.
|
|
134
|
+
- Add GitHub release notes.
|
|
135
|
+
- Pin attack demo GIF/video in README and homepage.
|
|
136
|
+
- Make `/scan/` the top CTA everywhere.
|
|
137
|
+
- Verify checkout with one test Stripe session.
|
|
138
|
+
|
|
139
|
+
### Days 1-3: Founder/dev launch
|
|
140
|
+
|
|
141
|
+
- X thread: "Your agent has root access. Does it deserve it?"
|
|
142
|
+
- Hacker News Show HN: ClawMoat, open-source firewall for AI agents.
|
|
143
|
+
- Reddit posts in `r/LocalLLaMA`, `r/ClaudeAI`, `r/cybersecurity`, `r/mcp`, `r/selfhosted`.
|
|
144
|
+
- Dev.to post with attack demo code.
|
|
145
|
+
- GitHub Discussions/community posts only where relevant, not spam.
|
|
146
|
+
|
|
147
|
+
### Days 4-7: Direct outbound
|
|
148
|
+
|
|
149
|
+
Build a list of 100 targets:
|
|
150
|
+
|
|
151
|
+
- AI automation consultants.
|
|
152
|
+
- Agent framework maintainers.
|
|
153
|
+
- MCP tool authors.
|
|
154
|
+
- Founders posting about Claude Code/OpenClaw/Cursor agents.
|
|
155
|
+
- Security engineers discussing prompt injection or MCP risk.
|
|
156
|
+
|
|
157
|
+
Send 20/day. The CTA is not "buy now". The CTA is:
|
|
158
|
+
|
|
159
|
+
> I scanned your agent/tooling surface and found a few places ClawMoat can help. Want the report?
|
|
160
|
+
|
|
161
|
+
### Days 8-14: Convert proof into revenue
|
|
162
|
+
|
|
163
|
+
- Offer free 15-minute agent exposure assessment to first 10 teams.
|
|
164
|
+
- Turn every assessment into a sanitized case study.
|
|
165
|
+
- Ask every technical adopter to add the `Secured by ClawMoat` badge.
|
|
166
|
+
- Ask every consultant to join affiliate program.
|
|
167
|
+
- Push Team plan only after a real risk finding.
|
|
168
|
+
|
|
169
|
+
## Outbound message drafts
|
|
170
|
+
|
|
171
|
+
### For AI automation consultants
|
|
172
|
+
|
|
173
|
+
Subject: quick security layer for the agents you deploy
|
|
174
|
+
|
|
175
|
+
I saw you deploy AI agents for clients. Quick question: are you giving those agents file/shell/API access, or keeping them inside a narrow sandbox?
|
|
176
|
+
|
|
177
|
+
I’m building ClawMoat, an open-source firewall for AI agents. It scans prompts, MCP configs, shell/file/network actions, and outbound data so you can tell clients, “your agent can’t touch what it shouldn’t.”
|
|
178
|
+
|
|
179
|
+
If useful, I’ll run a free exposure scan on one demo setup and send you the report. No pitch deck.
|
|
180
|
+
|
|
181
|
+
### For agent framework/tool maintainers
|
|
182
|
+
|
|
183
|
+
Subject: want a free security badge for your agent project?
|
|
184
|
+
|
|
185
|
+
I’m building ClawMoat, an open-source agent firewall.
|
|
186
|
+
|
|
187
|
+
The useful part for your project is simple: scan MCP configs, dangerous tool permissions, prompt-injection payloads, secrets, and exfiltration patterns. If it passes, you can add a `Secured by ClawMoat` badge and link to the report.
|
|
188
|
+
|
|
189
|
+
Want me to run it against your repo and send a PR with the badge/report if it’s clean?
|
|
190
|
+
|
|
191
|
+
### For founders using Claude Code / OpenClaw / Cursor agents
|
|
192
|
+
|
|
193
|
+
Subject: your coding agent probably has more access than you think
|
|
194
|
+
|
|
195
|
+
Your coding agent can likely read SSH keys, env files, browser sessions, and cloud credentials. That’s fine until one poisoned README, website, or MCP tool tells it to exfiltrate them.
|
|
196
|
+
|
|
197
|
+
ClawMoat is the open-source firewall I built for that boundary: files, shell, network, MCP, secrets, outbound data.
|
|
198
|
+
|
|
199
|
+
If you send me the agent stack you’re using, I’ll tell you the top 3 exposure points and how to lock them down.
|
|
200
|
+
|
|
201
|
+
## Public post drafts
|
|
202
|
+
|
|
203
|
+
### X short post
|
|
204
|
+
|
|
205
|
+
Your AI agent has access to your machine.
|
|
206
|
+
|
|
207
|
+
SSH keys. `.env` files. AWS creds. Browser cookies. Repo history.
|
|
208
|
+
|
|
209
|
+
Prompt filters inspect text.
|
|
210
|
+
ClawMoat controls what the agent can actually touch.
|
|
211
|
+
|
|
212
|
+
Open-source agent firewall.
|
|
213
|
+
https://clawmoat.com
|
|
214
|
+
|
|
215
|
+
### X thread
|
|
216
|
+
|
|
217
|
+
1/ Your AI agent has access to your machine.
|
|
218
|
+
|
|
219
|
+
That means SSH keys, `.env` files, AWS creds, browser sessions, source code, shell commands, MCP tools, and outbound network calls.
|
|
220
|
+
|
|
221
|
+
That is not a chatbot anymore. That is an intern with root-ish access.
|
|
222
|
+
|
|
223
|
+
2/ Most AI security tools protect the model or inspect the prompt.
|
|
224
|
+
|
|
225
|
+
Useful, but incomplete.
|
|
226
|
+
|
|
227
|
+
The real question is what happens after the model decides to act.
|
|
228
|
+
|
|
229
|
+
What can it read?
|
|
230
|
+
What can it run?
|
|
231
|
+
What can it send?
|
|
232
|
+
What gets logged?
|
|
233
|
+
What gets blocked?
|
|
234
|
+
|
|
235
|
+
3/ That is the boundary ClawMoat is built for.
|
|
236
|
+
|
|
237
|
+
It scans inbound content, outbound content, tool calls, MCP configs, secrets, PII, dangerous shell commands, supply-chain patterns, and runtime behavior.
|
|
238
|
+
|
|
239
|
+
4/ The category is simple:
|
|
240
|
+
|
|
241
|
+
Prompt filters inspect the conversation.
|
|
242
|
+
ClawMoat protects the machine.
|
|
243
|
+
|
|
244
|
+
5/ It’s open source, zero-dependency Node.js, MIT licensed, and the test suite is green.
|
|
245
|
+
|
|
246
|
+
Install:
|
|
247
|
+
`npm install -g clawmoat`
|
|
248
|
+
|
|
249
|
+
Scan:
|
|
250
|
+
`clawmoat scan-mcp`
|
|
251
|
+
|
|
252
|
+
Site:
|
|
253
|
+
https://clawmoat.com
|
|
254
|
+
|
|
255
|
+
### Hacker News Show HN draft
|
|
256
|
+
|
|
257
|
+
Title: Show HN: ClawMoat, an open-source firewall for AI agents
|
|
258
|
+
|
|
259
|
+
I built ClawMoat because local AI agents are getting real permissions faster than they’re getting real security.
|
|
260
|
+
|
|
261
|
+
If you run Claude Code, OpenClaw, Cursor agents, MCP servers, or custom agent loops on your machine, the agent can often read files, run shell commands, access credentials, and make network calls. Prompt injection is only part of the problem. The bigger problem is runtime containment.
|
|
262
|
+
|
|
263
|
+
ClawMoat scans inbound text, outbound text, MCP configs, tool calls, secrets, PII, dangerous shell commands, supply-chain payloads, and exfiltration patterns. The goal is not to make the model “safe”. The goal is to control what the agent can touch.
|
|
264
|
+
|
|
265
|
+
It’s MIT licensed, zero-dependency Node.js, and runs locally.
|
|
266
|
+
|
|
267
|
+
Install:
|
|
268
|
+
|
|
269
|
+
```bash
|
|
270
|
+
npm install -g clawmoat
|
|
271
|
+
clawmoat scan-mcp
|
|
272
|
+
clawmoat watch ~/.openclaw/agents/main
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
I’d especially like feedback from people running local agents with real file/shell access. What boundary would you want enforced before trusting an agent on your laptop?
|
|
276
|
+
|
|
277
|
+
Repo: https://github.com/darfaz/clawmoat
|
|
278
|
+
Site: https://clawmoat.com
|
|
279
|
+
|
|
280
|
+
## Revenue math
|
|
281
|
+
|
|
282
|
+
The first sales target should not be enterprise. It should be:
|
|
283
|
+
|
|
284
|
+
- 10 Developer subscribers at $9/mo = tiny but validates checkout.
|
|
285
|
+
- 5 Team subscribers at $49/mo = $245 MRR.
|
|
286
|
+
- 3 setup/service sales at $249-$999 = immediate cash and case studies.
|
|
287
|
+
- 2 consultant affiliates = distribution leverage.
|
|
288
|
+
|
|
289
|
+
The fastest path to revenue is a hybrid: open-source product for credibility, paid setup/security reviews for cash, Team subscriptions for recurring revenue.
|
|
290
|
+
|
|
291
|
+
## My recommendation
|
|
292
|
+
|
|
293
|
+
Do not spend the next week adding features.
|
|
294
|
+
|
|
295
|
+
Spend it converting existing product into trust:
|
|
296
|
+
|
|
297
|
+
1. Publish npm v1.0.0.
|
|
298
|
+
2. Clean npm package contents.
|
|
299
|
+
3. Push one attack demo hard.
|
|
300
|
+
4. Run 100 targeted outbound messages.
|
|
301
|
+
5. Turn every response into either a report, badge PR, or paid setup call.
|
|
302
|
+
|
|
303
|
+
The hard truth: ClawMoat is currently more built than sold. That is fixable, but only if we stop treating content as the sales motion. Content supports sales. Direct outreach creates sales.
|