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.
Files changed (178) hide show
  1. package/.dockerignore +9 -0
  2. package/CHANGELOG.md +18 -0
  3. package/CONTRIBUTING.md +4 -2
  4. package/DEMO.md +87 -0
  5. package/Dockerfile +5 -18
  6. package/README.md +294 -8
  7. package/SECURITY.md +58 -10
  8. package/THREAT_MODEL.md +129 -0
  9. package/agent/README.md +131 -0
  10. package/agent/index.js +471 -0
  11. package/agent/install-service.sh +94 -0
  12. package/agent/openclaw-hook.js +453 -0
  13. package/agent/provider-setup.js +649 -0
  14. package/agent/setup.js +274 -0
  15. package/assets/BADGE-USAGE.md +20 -0
  16. package/assets/clawmoat-badge.svg +21 -0
  17. package/bin/clawmoat.js +468 -111
  18. package/docs/affiliates/dashboard.html +124 -0
  19. package/docs/affiliates/index.html +236 -0
  20. package/docs/agent-install.html +183 -0
  21. package/docs/ai-agent-security-scanner.html +10 -6
  22. package/docs/badge/index.html +149 -0
  23. package/docs/badge/scanning.svg +23 -0
  24. package/docs/blog/386-malicious-skills.html +262 -0
  25. package/docs/blog/40000-exposed-openclaw-instances.html +201 -0
  26. package/docs/blog/agent-trust-protocol.html +198 -0
  27. package/docs/blog/ai-agent-earns-commissions.html +230 -0
  28. package/docs/blog/bugmageddon-agent-firewall.html +174 -0
  29. package/docs/blog/calculator-math.html +180 -0
  30. package/docs/blog/clawmoat-vs-llamafirewall-nemo-guardrails.html +229 -0
  31. package/docs/blog/host-guardian-launch.html +18 -8
  32. package/docs/blog/ibm-experts-agent-runtime-protection.html +247 -0
  33. package/docs/blog/index.html +211 -9
  34. package/docs/blog/langchain-security-tutorial.html +18 -8
  35. package/docs/blog/mcp-30-cves-security-crisis.html +286 -0
  36. package/docs/blog/meta-researcher-rogue-agent.html +201 -0
  37. package/docs/blog/microsoft-openclaw-workstation-security.html +235 -0
  38. package/docs/blog/nist-ai-agent-standards-clawmoat.html +377 -0
  39. package/docs/blog/oasis-websocket-hijack.html +212 -0
  40. package/docs/blog/ollama-openclaw-security.html +160 -0
  41. package/docs/blog/openclaw-enterprise-readiness-claw10.html +199 -0
  42. package/docs/blog/openclaw-security-reckoning-2026.html +368 -0
  43. package/docs/blog/owasp-agentic-ai-top10.html +18 -8
  44. package/docs/blog/securing-ai-agents.html +18 -8
  45. package/docs/blog/supply-chain-agents.html +18 -8
  46. package/docs/business/index.html +525 -0
  47. package/docs/business/install.html +261 -0
  48. package/docs/checklist.html +174 -0
  49. package/docs/compare/index.html +122 -0
  50. package/docs/compare/lakera/index.html +62 -0
  51. package/docs/compare/llm-guard/index.html +49 -0
  52. package/docs/compare/snyk-agent-scan/index.html +63 -0
  53. package/docs/compare.html +10 -6
  54. package/docs/dashboard/index.html +520 -0
  55. package/docs/finance/index.html +220 -0
  56. package/docs/guides/business-deployment.html +770 -0
  57. package/docs/hall-of-fame.html +174 -0
  58. package/docs/index.html +447 -154
  59. package/docs/install.sh +557 -0
  60. package/docs/integrations/langchain.html +14 -6
  61. package/docs/integrations/openai.html +14 -6
  62. package/docs/integrations/openclaw.html +55 -7
  63. package/docs/plans/2026-03-26-threat-intel-api.md +255 -0
  64. package/docs/plans/2026-04-14-bugmageddon-marketing-pack.md +329 -0
  65. package/docs/plans/2026-04-14-clawmoat-v1-bugmageddon.md +248 -0
  66. package/docs/plans/2026-04-14-v1-release-update.md +91 -0
  67. package/docs/plans/2026-04-19-supabase-audit.md +68 -0
  68. package/docs/plans/2026-05-12-sales-push.md +303 -0
  69. package/docs/playground/index.html +893 -0
  70. package/docs/playground.html +4 -7
  71. package/docs/privacy-policy/index.html +122 -0
  72. package/docs/rfcs/defense-in-depth.md +467 -0
  73. package/docs/scan/index.html +358 -0
  74. package/docs/services/case-study.html +255 -0
  75. package/docs/services/downloads/install-openclaw.bat +45 -0
  76. package/docs/services/downloads/install-openclaw.command +38 -0
  77. package/docs/services/downloads/install-openclaw.sh +38 -0
  78. package/docs/services/get-started.html +165 -0
  79. package/docs/services/index.html +598 -0
  80. package/docs/services/multi-agent-security.html +284 -0
  81. package/docs/services/one-pager.html +99 -0
  82. package/docs/services/pitch-deck.html +229 -0
  83. package/docs/services/roi-calculator.html +258 -0
  84. package/docs/sitemap.xml +192 -2
  85. package/docs/support/index.html +135 -0
  86. package/docs/templates/customer-service/HEARTBEAT.md +61 -0
  87. package/docs/templates/customer-service/MEMORY.md +89 -0
  88. package/docs/templates/customer-service/SOUL.md +41 -0
  89. package/docs/templates/customer-service/USER.md +56 -0
  90. package/docs/templates/executive/HEARTBEAT.md +86 -0
  91. package/docs/templates/executive/MEMORY.md +92 -0
  92. package/docs/templates/executive/SOUL.md +44 -0
  93. package/docs/templates/executive/USER.md +62 -0
  94. package/docs/templates/finance/HEARTBEAT.md +58 -0
  95. package/docs/templates/finance/MEMORY.md +87 -0
  96. package/docs/templates/finance/SOUL.md +38 -0
  97. package/docs/templates/finance/USER.md +53 -0
  98. package/docs/templates/index.html +115 -0
  99. package/docs/templates/operations/HEARTBEAT.md +63 -0
  100. package/docs/templates/operations/MEMORY.md +68 -0
  101. package/docs/templates/operations/SOUL.md +38 -0
  102. package/docs/templates/operations/USER.md +49 -0
  103. package/docs/templates/sales/HEARTBEAT.md +55 -0
  104. package/docs/templates/sales/MEMORY.md +89 -0
  105. package/docs/templates/sales/SOUL.md +34 -0
  106. package/docs/templates/sales/USER.md +54 -0
  107. package/docs/terms-of-service/index.html +122 -0
  108. package/eslint.config.js +32 -0
  109. package/evals/README.md +29 -0
  110. package/evals/cases.json +390 -0
  111. package/evals/results.md +68 -0
  112. package/evals/run.js +180 -0
  113. package/examples/basic-usage.js +38 -0
  114. package/examples/demo-attack/demo.js +186 -0
  115. package/examples/python-quickstart/README.md +54 -0
  116. package/examples/python-quickstart/clawmoat_client.py +167 -0
  117. package/examples/video-demo/README.md +14 -0
  118. package/examples/video-demo/scene-a-normal.js +29 -0
  119. package/examples/video-demo/scene-b-attack-arrives.js +31 -0
  120. package/examples/video-demo/scene-c-hijack.js +44 -0
  121. package/examples/video-demo/scene-d-clawmoat.js +46 -0
  122. package/integrations/crewai/README.md +32 -0
  123. package/integrations/crewai/clawmoat_crewai/__init__.py +17 -0
  124. package/integrations/crewai/clawmoat_crewai/guard.py +103 -0
  125. package/integrations/crewai/pyproject.toml +21 -0
  126. package/integrations/langchain/README.md +91 -0
  127. package/integrations/langchain/clawmoat_langchain/__init__.py +17 -0
  128. package/integrations/langchain/clawmoat_langchain/callback.py +489 -0
  129. package/integrations/langchain/pyproject.toml +32 -0
  130. package/integrations/litellm/README.md +324 -0
  131. package/integrations/litellm/clawmoat_litellm/__init__.py +21 -0
  132. package/integrations/litellm/clawmoat_litellm/callback.py +329 -0
  133. package/integrations/litellm/clawmoat_litellm/proxy_middleware.py +224 -0
  134. package/integrations/litellm/pyproject.toml +74 -0
  135. package/integrations/openai-agents/README.md +392 -0
  136. package/integrations/openai-agents/clawmoat_openai_agents/__init__.py +20 -0
  137. package/integrations/openai-agents/clawmoat_openai_agents/guardrail.py +431 -0
  138. package/integrations/openai-agents/clawmoat_openai_agents/middleware.py +311 -0
  139. package/integrations/openai-agents/pyproject.toml +76 -0
  140. package/package.json +6 -5
  141. package/plugins/openclaw-adapter/PHASE1.md +439 -0
  142. package/plugins/openclaw-adapter/README.md +103 -0
  143. package/plugins/openclaw-adapter/SPEC.md +1644 -0
  144. package/plugins/openclaw-adapter/package.json +31 -0
  145. package/plugins/openclaw-adapter/src/index.test.ts +226 -0
  146. package/plugins/openclaw-adapter/src/index.ts +140 -0
  147. package/plugins/openclaw-adapter/tsconfig.json +14 -0
  148. package/server/data/threats.json +290 -0
  149. package/server/index.js +224 -10
  150. package/src/adapters/express.js +161 -0
  151. package/src/adapters/index.js +92 -0
  152. package/src/adapters/langchain.js +185 -0
  153. package/src/approval/index.js +456 -0
  154. package/src/ban-scanner.js +200 -0
  155. package/src/boundary-scanner.js +296 -0
  156. package/src/ci-scanner.js +279 -0
  157. package/src/code-scanner.js +245 -0
  158. package/src/enforce.js +166 -0
  159. package/src/finance/index.js +585 -0
  160. package/src/finance/mcp-firewall.js +486 -0
  161. package/src/formatters/json.js +80 -0
  162. package/src/formatters/sarif.js +388 -0
  163. package/src/guardian/alerts.js +34 -3
  164. package/src/guardian/gateway-monitor.js +590 -0
  165. package/src/guardian/index.js +41 -2
  166. package/src/index.js +105 -0
  167. package/src/integrations/agentmesh.js +501 -0
  168. package/src/language-detector.js +201 -0
  169. package/src/mcp-scanner.js +253 -0
  170. package/src/multimodal/index.js +579 -0
  171. package/src/obfuscation-scanner.js +457 -0
  172. package/src/policy-engine.js +402 -0
  173. package/src/scanners/dependency-attacks.js +128 -0
  174. package/src/scanners/prompt-injection.js +18 -0
  175. package/src/scanners/supply-chain.js +14 -0
  176. package/src/templates/default-config.yml +90 -0
  177. package/src/vuln-ops/exploitability.js +46 -0
  178. package/src/watch/live-monitor.js +720 -0
@@ -0,0 +1,124 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <link rel="icon" type="image/png" href="/favicon.png">
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Partner Dashboard โ€” ClawMoat Affiliates</title>
8
+ <meta name="robots" content="noindex">
9
+ <style>
10
+ *{margin:0;padding:0;box-sizing:border-box}
11
+ :root{--navy:#0F172A;--navy-light:#1E293B;--navy-mid:#334155;--blue:#3B82F6;--emerald:#10B981;--white:#F8FAFC;--gray:#94A3B8;--amber:#F59E0B;--purple:#8B5CF6}
12
+ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:var(--navy);color:var(--white);line-height:1.6}
13
+ a{color:var(--blue);text-decoration:none}
14
+ .container{max-width:900px;margin:0 auto;padding:0 24px}
15
+
16
+ nav{background:rgba(15,23,42,.92);backdrop-filter:blur(12px);border-bottom:1px solid rgba(59,130,246,.15);padding:16px 0}
17
+ nav .container{display:flex;align-items:center;justify-content:space-between}
18
+ .logo{font-size:1.25rem;font-weight:700;color:var(--white)}
19
+ .logo span{color:var(--emerald)}
20
+
21
+ .dashboard{padding:60px 0}
22
+ .dashboard h1{font-size:2rem;margin-bottom:8px}
23
+ .dashboard .sub{color:var(--gray);margin-bottom:40px}
24
+
25
+ .stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:40px}
26
+ .stat{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:12px;padding:24px;text-align:center}
27
+ .stat .label{color:var(--gray);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
28
+ .stat .value{font-size:2rem;font-weight:700}
29
+ .stat .value.green{color:var(--emerald)}
30
+ .stat .value.blue{color:var(--blue)}
31
+ .stat .value.amber{color:var(--amber)}
32
+ .stat .value.purple{color:var(--purple)}
33
+
34
+ .coming-soon{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:16px;padding:48px;text-align:center}
35
+ .coming-soon h2{font-size:1.5rem;margin-bottom:12px}
36
+ .coming-soon p{color:var(--gray);margin-bottom:20px}
37
+ .coming-soon a.btn{display:inline-block;padding:12px 28px;background:var(--emerald);color:#fff;border-radius:8px;font-weight:600}
38
+
39
+ .referral-link{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:12px;padding:24px;margin-bottom:24px}
40
+ .referral-link h3{margin-bottom:8px;font-size:1rem}
41
+ .referral-link .link-box{display:flex;gap:8px}
42
+ .referral-link input{flex:1;background:var(--navy);border:1px solid var(--navy-mid);border-radius:8px;padding:10px 14px;color:var(--emerald);font-family:monospace;font-size:.9rem}
43
+ .referral-link button{padding:10px 20px;background:var(--blue);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:600}
44
+
45
+ .activity{background:var(--navy-light);border:1px solid var(--navy-mid);border-radius:12px;padding:24px}
46
+ .activity h3{margin-bottom:16px}
47
+ .activity table{width:100%;border-collapse:collapse}
48
+ .activity th,.activity td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--navy-mid);font-size:.9rem}
49
+ .activity th{color:var(--gray);font-size:.75rem;text-transform:uppercase}
50
+ .activity td{color:var(--gray)}
51
+ .activity .status{padding:2px 8px;border-radius:4px;font-size:.8rem;font-weight:600}
52
+ .activity .converted{background:rgba(16,185,129,.15);color:var(--emerald)}
53
+ .activity .pending{background:rgba(245,158,11,.15);color:var(--amber)}
54
+
55
+ @media(max-width:768px){.stats{grid-template-columns:1fr 1fr}}
56
+ </style>
57
+ </head>
58
+ <body>
59
+ <nav>
60
+ <div class="container">
61
+ <a href="/" class="logo">๐Ÿฐ Claw<span>Moat</span></a>
62
+ <div style="display:flex;gap:16px;font-size:.9rem">
63
+ <a href="/affiliates/" style="color:var(--gray)">โ† Back to Affiliates</a>
64
+ </div>
65
+ </div>
66
+ </nav>
67
+
68
+ <section class="dashboard">
69
+ <div class="container">
70
+ <h1>Partner Dashboard</h1>
71
+ <p class="sub">Track your referrals, conversions, and earnings.</p>
72
+
73
+ <!-- Stats cards (UI mockup โ€” values are placeholders) -->
74
+ <div class="stats">
75
+ <div class="stat">
76
+ <div class="label">Total Clicks</div>
77
+ <div class="value blue">โ€”</div>
78
+ </div>
79
+ <div class="stat">
80
+ <div class="label">Conversions</div>
81
+ <div class="value green">โ€”</div>
82
+ </div>
83
+ <div class="stat">
84
+ <div class="label">Commission Earned</div>
85
+ <div class="value amber">โ€”</div>
86
+ </div>
87
+ <div class="stat">
88
+ <div class="label">Pending Payout</div>
89
+ <div class="value purple">โ€”</div>
90
+ </div>
91
+ </div>
92
+
93
+ <!-- Referral link -->
94
+ <div class="referral-link">
95
+ <h3>Your Referral Link</h3>
96
+ <div class="link-box">
97
+ <input type="text" value="https://clawmoat.com?ref=YOUR_ID" readonly id="refLink">
98
+ <button onclick="navigator.clipboard.writeText(document.getElementById('refLink').value)">Copy</button>
99
+ </div>
100
+ </div>
101
+
102
+ <!-- Coming soon overlay -->
103
+ <div class="coming-soon">
104
+ <h2>๐Ÿšง Dashboard Coming Soon</h2>
105
+ <p>We're building the real-time partner dashboard. In the meantime, email us for your current stats and earnings report.</p>
106
+ <a href="mailto:hello@clawmoat.com?subject=Affiliate%20Stats%20Request" class="btn">Request My Stats โ†’</a>
107
+ </div>
108
+
109
+ <!-- Activity table (mockup) -->
110
+ <div class="activity" style="margin-top:24px;opacity:.5">
111
+ <h3>Recent Activity (preview)</h3>
112
+ <table>
113
+ <thead><tr><th>Date</th><th>Event</th><th>Plan</th><th>Commission</th><th>Status</th></tr></thead>
114
+ <tbody>
115
+ <tr><td>โ€”</td><td>Click</td><td>โ€”</td><td>โ€”</td><td><span class="status pending">Pending</span></td></tr>
116
+ <tr><td>โ€”</td><td>Conversion</td><td>Pro Yearly</td><td>$74.50</td><td><span class="status converted">Converted</span></td></tr>
117
+ <tr><td>โ€”</td><td>Click</td><td>โ€”</td><td>โ€”</td><td><span class="status pending">Pending</span></td></tr>
118
+ </tbody>
119
+ </table>
120
+ </div>
121
+ </div>
122
+ </section>
123
+ </body>
124
+ </html>
@@ -0,0 +1,236 @@
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>ClawMoat Affiliate Program โ€” Earn USDT Defending AI Agents</title>
7
+ <meta name="description" content="Earn 50% of every referral in USDT. Share your risk score, get paid when people protect their agents. The open-source agent firewall.">
8
+ <meta property="og:title" content="ClawMoat Affiliates โ€” Earn USDT Defending AI Agents">
9
+ <meta property="og:description" content="50% of first month in USDT for every referral. Share scan results, earn crypto. The agent firewall affiliate program.">
10
+ <style>
11
+ :root{--bg:#0a0a0f;--fg:#e0e0e8;--accent:#00d4aa;--gold:#f5c542;--muted:#888;--card:#14141f;--blue:#3B82F6;--red:#ff4444;--green:#00d4aa}
12
+ *{margin:0;padding:0;box-sizing:border-box}
13
+ body{background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.7}
14
+ .container{max-width:800px;margin:0 auto;padding:2rem 1.5rem}
15
+ nav{padding:1rem 0;border-bottom:1px solid #2a2a3a;margin-bottom:2rem;display:flex;justify-content:space-between;align-items:center}
16
+ nav a{color:var(--fg);text-decoration:none;margin-right:1.5rem}
17
+ nav a:hover{color:var(--accent)}
18
+ .logo span{color:var(--accent)}
19
+ h1{font-size:2.8rem;line-height:1.1;margin-bottom:1rem;text-align:center;letter-spacing:-.02em}
20
+ h1 .highlight{background:linear-gradient(135deg,var(--accent),var(--gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
21
+ h2{color:var(--accent);margin:2.5rem 0 1rem;font-size:1.5rem}
22
+ .hero-sub{color:var(--muted);font-size:1.15rem;max-width:600px;margin:0 auto 2.5rem;text-align:center}
23
+ .tier-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1.5rem;margin:2rem 0}
24
+ .tier{background:var(--card);border:2px solid #2a2a3a;border-radius:12px;padding:1.5rem;text-align:center;transition:border-color .2s}
25
+ .tier:hover{border-color:var(--accent)}
26
+ .tier-name{font-size:1rem;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;margin-bottom:.5rem}
27
+ .tier-badge{font-size:2rem;margin-bottom:.5rem}
28
+ .tier-req{font-size:.85rem;color:var(--muted)}
29
+ .tier-perk{font-size:.9rem;color:var(--accent);margin-top:.5rem}
30
+ .payout-box{background:linear-gradient(135deg,#0a2a1a,#0a1a2a);border:2px solid var(--accent);border-radius:12px;padding:2rem;text-align:center;margin:2rem 0}
31
+ .payout-amount{font-size:3.5rem;font-weight:900;background:linear-gradient(135deg,var(--accent),var(--gold));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
32
+ .payout-label{color:var(--muted);font-size:1rem;margin-top:.5rem}
33
+ .how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem;margin:2rem 0}
34
+ .how-step{background:var(--card);border-radius:12px;padding:1.5rem;text-align:center}
35
+ .how-num{font-size:2.5rem;font-weight:900;color:var(--accent);margin-bottom:.5rem}
36
+ .btn{background:var(--accent);color:#000;padding:.85rem 2.5rem;border:none;border-radius:8px;font-weight:700;font-size:1.1rem;cursor:pointer;display:inline-block;text-decoration:none;margin:.5rem}
37
+ .btn:hover{opacity:.9}
38
+ .btn-outline{background:transparent;border:2px solid var(--accent);color:var(--accent);padding:.85rem 2.5rem;border-radius:8px;font-weight:700;font-size:1.1rem;cursor:pointer;display:inline-block;text-decoration:none;margin:.5rem}
39
+ .signup-form{background:var(--card);border:2px solid #2a2a3a;border-radius:12px;padding:2rem;margin:2rem 0}
40
+ .signup-form input,.signup-form select{width:100%;background:#1a1a2e;border:1px solid #2a2a3a;border-radius:6px;color:var(--fg);padding:.75rem;font-size:1rem;margin-bottom:1rem}
41
+ .signup-form input:focus,.signup-form select:focus{border-color:var(--accent);outline:none}
42
+ .signup-form label{display:block;margin-bottom:.4rem;color:var(--muted);font-size:.9rem}
43
+ .earnings-table{width:100%;border-collapse:collapse;margin:1.5rem 0}
44
+ .earnings-table th,.earnings-table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid #2a2a3a}
45
+ .earnings-table th{color:var(--accent);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}
46
+ .earnings-table td{font-size:.95rem}
47
+ .usdt{color:var(--gold);font-weight:700}
48
+ .faq dt{font-weight:700;color:var(--fg);margin-top:1.5rem;font-size:1.05rem}
49
+ .faq dd{color:var(--muted);margin-top:.3rem}
50
+ </style>
51
+ </head>
52
+ <body>
53
+ <div class="container">
54
+ <nav>
55
+ <a href="/" class="logo">๐Ÿฐ Claw<span>Moat</span></a>
56
+ <div>
57
+ <a href="/scan/">Scanner</a>
58
+ <a href="/blog/">Blog</a>
59
+ <a href="https://github.com/darfaz/clawmoat">GitHub โ†—</a>
60
+ </div>
61
+ </nav>
62
+
63
+ <h1>Earn <span class="highlight">USDT</span> Defending AI Agents</h1>
64
+ <p class="hero-sub">Share your risk score. Get paid when people protect their agents. 50% of every first payment, in crypto, paid weekly.</p>
65
+
66
+ <div class="payout-box">
67
+ <div class="payout-amount">50%</div>
68
+ <div class="payout-label">of first month's payment โ†’ your wallet<br>Paid weekly in USDT (TRC-20 or ERC-20)</div>
69
+ </div>
70
+
71
+ <h2>๐Ÿ’ฐ What You Earn</h2>
72
+ <table class="earnings-table">
73
+ <thead><tr><th>Plan Referred</th><th>Price</th><th>Your Payout</th><th>Method</th></tr></thead>
74
+ <tbody>
75
+ <tr><td>Developer</td><td>$9/mo</td><td class="usdt">$4.50 USDT</td><td>Automatic</td></tr>
76
+ <tr><td>Team</td><td>$49/mo</td><td class="usdt">$24.50 USDT</td><td>Automatic</td></tr>
77
+ <tr><td>Business</td><td>$1,500+/mo</td><td class="usdt">$500+ USDT</td><td>Manual (intro bounty)</td></tr>
78
+ <tr><td>Enterprise</td><td>$15K+ ACV</td><td class="usdt">$2,500+ USDT</td><td>Manual (intro bounty)</td></tr>
79
+ </tbody>
80
+ </table>
81
+
82
+ <h2>๐Ÿ“ค How It Works</h2>
83
+ <div class="how-grid">
84
+ <div class="how-step">
85
+ <div class="how-num">1</div>
86
+ <h3>Sign up</h3>
87
+ <p style="color:var(--muted)">Get your unique referral code and link. Takes 30 seconds.</p>
88
+ </div>
89
+ <div class="how-step">
90
+ <div class="how-num">2</div>
91
+ <h3>Share</h3>
92
+ <p style="color:var(--muted)">Run the scanner, share your risk score card, post your badge. Your ref code is baked into every share.</p>
93
+ </div>
94
+ <div class="how-step">
95
+ <div class="how-num">3</div>
96
+ <h3>Get paid</h3>
97
+ <p style="color:var(--muted)">When someone signs up through your link, you get 50% of their first payment. Paid weekly in USDT.</p>
98
+ </div>
99
+ </div>
100
+
101
+ <h2>๐Ÿ† Affiliate Tiers</h2>
102
+ <div class="tier-grid">
103
+ <div class="tier">
104
+ <div class="tier-badge">๐Ÿฅ‰</div>
105
+ <div class="tier-name">Bronze</div>
106
+ <div class="tier-req">5+ referrals</div>
107
+ <div class="tier-perk">Discord role + early features</div>
108
+ </div>
109
+ <div class="tier">
110
+ <div class="tier-badge">๐Ÿฅˆ</div>
111
+ <div class="tier-name">Silver</div>
112
+ <div class="tier-req">25+ referrals</div>
113
+ <div class="tier-perk">55% payout + beta access</div>
114
+ </div>
115
+ <div class="tier">
116
+ <div class="tier-badge">๐Ÿฅ‡</div>
117
+ <div class="tier-name">Gold</div>
118
+ <div class="tier-req">100+ referrals</div>
119
+ <div class="tier-perk">60% payout + spotlight feature</div>
120
+ </div>
121
+ <div class="tier">
122
+ <div class="tier-badge">๐Ÿ’Ž</div>
123
+ <div class="tier-name">Diamond</div>
124
+ <div class="tier-req">500+ referrals</div>
125
+ <div class="tier-perk">65% payout + advisory role</div>
126
+ </div>
127
+ </div>
128
+
129
+ <h2>๐ŸŽจ Your Content Kit</h2>
130
+ <p style="color:var(--muted)">You don't just get a link. You get things worth sharing:</p>
131
+ <ul style="color:var(--muted);margin:1rem 0 1rem 1.5rem">
132
+ <li><strong style="color:var(--fg)">Risk Score Cards</strong> โ€” scan your stack, download the shareable PNG with your ref code</li>
133
+ <li><strong style="color:var(--fg)">"I Blocked X Threats" Stats</strong> โ€” weekly shareable stats card (coming soon)</li>
134
+ <li><strong style="color:var(--fg)">README Badge</strong> โ€” "Secured by ClawMoat" badge with your referral link</li>
135
+ <li><strong style="color:var(--fg)">Pre-written Posts</strong> โ€” tweets, LinkedIn posts, Reddit comments you can customize</li>
136
+ <li><strong style="color:var(--fg)">Leaderboard Position</strong> โ€” public ranking of top defenders</li>
137
+ </ul>
138
+
139
+ <h2 id="signup">๐Ÿš€ Join the Program</h2>
140
+ <div class="signup-form">
141
+ <form id="affiliateForm" onsubmit="submitAffiliate(event)">
142
+ <label>Your name</label>
143
+ <input type="text" id="af_name" placeholder="Jane Smith" required>
144
+ <label>Email</label>
145
+ <input type="email" id="af_email" placeholder="jane@example.com" required>
146
+ <label>Preferred payout method</label>
147
+ <select id="af_payout">
148
+ <option value="usdt-trc20">USDT (TRC-20 / Tron)</option>
149
+ <option value="usdt-erc20">USDT (ERC-20 / Ethereum)</option>
150
+ <option value="paypal">PayPal</option>
151
+ <option value="venmo">Venmo</option>
152
+ </select>
153
+ <label>Wallet address / PayPal email (for payouts)</label>
154
+ <input type="text" id="af_wallet" placeholder="Your TRC-20 address or PayPal email" required>
155
+ <label>How will you promote ClawMoat? (optional)</label>
156
+ <input type="text" id="af_promo" placeholder="Blog, YouTube, Twitter, dev community, etc.">
157
+ <div style="text-align:center;margin-top:1rem">
158
+ <button type="submit" class="btn">๐Ÿ›ก๏ธ Get My Referral Code</button>
159
+ </div>
160
+ </form>
161
+ <div id="af_result" style="display:none;margin-top:1.5rem;padding:1.5rem;background:#0a2a1a;border:2px solid var(--accent);border-radius:8px;text-align:center">
162
+ <p style="font-size:1.2rem;font-weight:700;margin-bottom:.5rem">You're in! ๐ŸŽ‰</p>
163
+ <p style="color:var(--muted);margin-bottom:1rem">Your referral code:</p>
164
+ <div style="font-size:2rem;font-weight:900;color:var(--accent);margin-bottom:.5rem" id="af_code"></div>
165
+ <p style="color:var(--muted);font-size:.9rem;margin-bottom:1rem">Your link: <code id="af_link" style="color:var(--gold);cursor:pointer" onclick="navigator.clipboard.writeText(this.textContent)"></code> (click to copy)</p>
166
+ <a href="/scan/" class="btn">Run Your First Scan โ†’</a>
167
+ </div>
168
+ </div>
169
+
170
+ <h2>โ“ FAQ</h2>
171
+ <dl class="faq">
172
+ <dt>When do I get paid?</dt>
173
+ <dd>Every Friday. We batch payouts weekly. Minimum payout: $10 USDT.</dd>
174
+
175
+ <dt>How long does the referral cookie last?</dt>
176
+ <dd>30 days. If someone clicks your link and signs up within 30 days, you get credit.</dd>
177
+
178
+ <dt>Do I earn on renewals?</dt>
179
+ <dd>Currently, 50% of the first month only. We may add recurring commissions for top-tier affiliates.</dd>
180
+
181
+ <dt>Can I refer enterprise customers?</dt>
182
+ <dd>Yes! Business and Enterprise intro bounties are paid manually after the deal closes. Minimum $500 for Business, $2,500 for Enterprise.</dd>
183
+
184
+ <dt>Is there a limit?</dt>
185
+ <dd>No cap. Refer 1,000 people, earn $14,500+ USDT. We want you to go wild.</dd>
186
+
187
+ <dt>What if ClawMoat is free?</dt>
188
+ <dd>Free users don't generate payouts. Payouts only trigger on paid plan signups (Developer, Team, Business, Enterprise).</dd>
189
+ </dl>
190
+
191
+ <div style="text-align:center;margin:3rem 0">
192
+ <a href="#signup" class="btn">๐Ÿ›ก๏ธ Join Now โ€” Get Your Code</a>
193
+ <a href="/scan/" class="btn-outline">Try the Scanner First</a>
194
+ </div>
195
+
196
+ <div style="text-align:center;color:var(--muted);font-size:.8rem;padding:2rem 0;border-top:1px solid #2a2a3a;margin-top:2rem">
197
+ <p>๐Ÿฐ ClawMoat โ€” The Open-Source Agent Firewall</p>
198
+ <p><a href="/" style="color:var(--muted)">Home</a> ยท <a href="/scan/" style="color:var(--muted)">Scanner</a> ยท <a href="https://github.com/darfaz/clawmoat" style="color:var(--muted)">GitHub</a></p>
199
+ </div>
200
+ </div>
201
+
202
+ <script>
203
+ async function submitAffiliate(e) {
204
+ e.preventDefault();
205
+ const name = document.getElementById('af_name').value;
206
+ const email = document.getElementById('af_email').value;
207
+ const payout = document.getElementById('af_payout').value;
208
+ const wallet = document.getElementById('af_wallet').value;
209
+ const promo = document.getElementById('af_promo').value;
210
+
211
+ // Generate referral code from name
212
+ const code = name.toLowerCase().replace(/[^a-z0-9]/g,'').substring(0,8) + Math.random().toString(36).substring(2,6);
213
+
214
+ // Store to Supabase
215
+ try {
216
+ const resp = await fetch('https://bfnoxngfskhzgnqkwuhb.supabase.co/rest/v1/affiliates', {
217
+ method: 'POST',
218
+ headers: {
219
+ 'apikey': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6ImJmbm94bmdmc2toemducWt3dWhiIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzMzNTAyOTUsImV4cCI6MjA4ODkyNjI5NX0.Rsbt7L4GtSFvyt_l0gSP1-S8JWpN_VGQKX11kgge3U8',
220
+ 'Content-Type': 'application/json',
221
+ 'Prefer': 'return=minimal'
222
+ },
223
+ body: JSON.stringify({ name, email, payout_method: payout, wallet_address: wallet, promo_plan: promo, ref_code: code, status: 'active' })
224
+ });
225
+ // Show result regardless (Supabase table may not exist yet, we'll create it)
226
+ } catch(err) { console.log('Supabase save attempted:', err); }
227
+
228
+ // Show the code
229
+ document.getElementById('affiliateForm').style.display = 'none';
230
+ document.getElementById('af_result').style.display = 'block';
231
+ document.getElementById('af_code').textContent = code;
232
+ document.getElementById('af_link').textContent = 'https://clawmoat.com/scan/?ref=' + code;
233
+ }
234
+ </script>
235
+ </body>
236
+ </html>
@@ -0,0 +1,183 @@
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>ClawMoat โ€” Agent Installation Guide</title>
7
+ <style>
8
+ * { margin: 0; padding: 0; box-sizing: border-box; }
9
+ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #0a0a0a; color: #e0e0e0; line-height: 1.7; }
10
+ .container { max-width: 800px; margin: 0 auto; padding: 40px 20px; }
11
+ h1 { color: #fff; font-size: 2em; margin-bottom: 10px; }
12
+ h2 { color: #3b82f6; font-size: 1.3em; margin: 30px 0 15px; border-bottom: 1px solid #222; padding-bottom: 8px; }
13
+ .subtitle { color: #888; font-size: 1.1em; margin-bottom: 30px; }
14
+ .message-box { background: #111; border: 2px solid #3b82f6; border-radius: 12px; padding: 24px; margin: 30px 0; position: relative; }
15
+ .message-box .label { position: absolute; top: -12px; left: 16px; background: #3b82f6; color: #fff; font-size: 0.75em; font-weight: 700; padding: 2px 10px; border-radius: 6px; text-transform: uppercase; letter-spacing: 0.5px; }
16
+ .message-box p { color: #ccc; font-size: 0.95em; line-height: 1.8; }
17
+ .message-box .api-key { color: #f59e0b; font-family: monospace; background: #1a1a1a; padding: 2px 6px; border-radius: 4px; }
18
+ .copy-btn { display: inline-block; margin-top: 16px; background: #3b82f6; color: #fff; border: none; padding: 8px 20px; border-radius: 8px; cursor: pointer; font-size: 0.9em; font-weight: 600; }
19
+ .copy-btn:hover { background: #2563eb; }
20
+ code { background: #1a1a1a; color: #3b82f6; padding: 2px 6px; border-radius: 4px; font-size: 0.9em; }
21
+ pre { background: #111; border: 1px solid #222; border-radius: 8px; padding: 16px; overflow-x: auto; margin: 12px 0; }
22
+ pre code { background: none; color: #ccc; padding: 0; }
23
+ .step { background: #111; border: 1px solid #1a1a1a; border-radius: 10px; padding: 20px; margin: 16px 0; }
24
+ .step-num { display: inline-block; background: #3b82f6; color: #fff; width: 28px; height: 28px; border-radius: 50%; text-align: center; line-height: 28px; font-size: 0.85em; font-weight: 700; margin-right: 10px; }
25
+ .note { background: #1a1600; border: 1px solid #f59e0b33; border-radius: 8px; padding: 16px; margin: 16px 0; color: #f59e0b; font-size: 0.9em; }
26
+ .agent-section { background: #0a1628; border: 1px solid #3b82f633; border-radius: 12px; padding: 24px; margin: 30px 0; }
27
+ .agent-section h3 { color: #3b82f6; margin-bottom: 12px; }
28
+ a { color: #3b82f6; }
29
+ .badge { display: inline-block; background: #16a34a22; color: #4ade80; border: 1px solid #16a34a44; padding: 4px 12px; border-radius: 20px; font-size: 0.8em; margin: 4px 4px 4px 0; }
30
+ ul { padding-left: 24px; margin: 10px 0; }
31
+ li { margin: 6px 0; color: #bbb; }
32
+ .hero-badges { margin: 20px 0; }
33
+ </style>
34
+ </head>
35
+ <body>
36
+ <div class="container">
37
+ <h1>๐Ÿ›ก๏ธ Install ClawMoat Agent</h1>
38
+ <p class="subtitle">Protect your machine from your own AI agent. One message. Two minutes.</p>
39
+
40
+ <div class="hero-badges">
41
+ <span class="badge">โœ“ Open Source</span>
42
+ <span class="badge">โœ“ Zero Dependencies</span>
43
+ <span class="badge">โœ“ Agent-Installable</span>
44
+ <span class="badge">โœ“ 142 Tests Passing</span>
45
+ </div>
46
+
47
+ <h2>How It Works</h2>
48
+ <p>You don't need to touch a terminal. Just paste a message to your AI agent and it handles everything: reviews the code, installs it, configures it, and starts protecting your machine.</p>
49
+
50
+ <h2>Step 1 โ€” Copy This Message to Your Agent</h2>
51
+ <p style="color: #888; margin-bottom: 12px;">Replace <code>YOUR_API_KEY</code> with the key from your <a href="https://app.clawmoat.com/dashboard">ClawMoat dashboard</a>.</p>
52
+
53
+ <div class="message-box" id="agent-message">
54
+ <span class="label">Paste to your AI agent</span>
55
+ <p>
56
+ I need you to install ClawMoat, an open-source security agent that monitors your activity and protects this machine. Before you install anything, I want you to review the source code yourself at <strong>https://github.com/darfaz/clawmoat/tree/main/agent</strong> and confirm you're comfortable with what it does.
57
+ <br><br>
58
+ It should scan inbound messages for prompt injection attempts, detect credential leaks in your outputs, flag dangerous commands, and report everything to my dashboard so I have full visibility into what's happening on this machine.
59
+ <br><br>
60
+ Here's my API key: <span class="api-key">YOUR_API_KEY</span>
61
+ <br><br>
62
+ Install instructions are at <strong>https://clawmoat.com/agent-install</strong> โ€” follow the technical steps below. Review the code first, then install.
63
+ </p>
64
+ <button class="copy-btn" onclick="copyMessage()">๐Ÿ“‹ Copy Message</button>
65
+ </div>
66
+
67
+ <h2>What Happens Next</h2>
68
+ <div class="step">
69
+ <span class="step-num">1</span>
70
+ <strong>Your agent reviews the code.</strong> It reads the source on GitHub, confirms it's safe, and tells you what it found. Open source means your agent can verify every line before installing.
71
+ </div>
72
+ <div class="step">
73
+ <span class="step-num">2</span>
74
+ <strong>Your agent installs it.</strong> Downloads the agent, configures it with your API key, and starts it as a background service.
75
+ </div>
76
+ <div class="step">
77
+ <span class="step-num">3</span>
78
+ <strong>You see everything on your dashboard.</strong> Every scan, every flag, every alert shows up at <a href="https://app.clawmoat.com">app.clawmoat.com</a>. Real-time visibility into your agent's activity.
79
+ </div>
80
+
81
+ <!-- Agent-readable technical instructions -->
82
+ <div class="agent-section">
83
+ <h3>๐Ÿค– Technical Installation Steps (for AI agents)</h3>
84
+ <p style="color: #8eb4f0; margin-bottom: 16px;">If you're an AI agent reading this page, follow these steps:</p>
85
+
86
+ <div class="step">
87
+ <span class="step-num">1</span>
88
+ <strong>Review the source code</strong>
89
+ <pre><code># Read the agent source โ€” 4 files, ~400 lines total
90
+ # https://github.com/darfaz/clawmoat/tree/main/agent
91
+ # Files: index.js (daemon), setup.js (config), install-service.sh (systemd), openclaw-hook.js (integration)
92
+ # Verify: no telemetry, no data exfiltration, no obfuscated code, zero dependencies beyond clawmoat core</code></pre>
93
+ </div>
94
+
95
+ <div class="step">
96
+ <span class="step-num">2</span>
97
+ <strong>Clone and configure</strong>
98
+ <pre><code># Clone the repo (if not already present)
99
+ git clone https://github.com/darfaz/clawmoat.git ~/clawmoat
100
+
101
+ # Create config directory
102
+ mkdir -p ~/.clawmoat
103
+
104
+ # Write config (replace YOUR_API_KEY with the actual key)
105
+ cat > ~/.clawmoat/agent.json << 'EOF'
106
+ {
107
+ "apiKey": "YOUR_API_KEY",
108
+ "dashboardUrl": "https://app.clawmoat.com",
109
+ "scanInbound": true,
110
+ "scanOutbound": false,
111
+ "scanToolCalls": false,
112
+ "auditLog": "~/.clawmoat/audit.log",
113
+ "reportToCloud": true
114
+ }
115
+ EOF</code></pre>
116
+ </div>
117
+
118
+ <div class="step">
119
+ <span class="step-num">3</span>
120
+ <strong>Test in dry-run mode</strong>
121
+ <pre><code># Verify it works without sending data
122
+ cd ~/clawmoat && node agent/index.js --dry-run --verbose
123
+ # Should show: "Agent running. Monitoring: ..." with no errors
124
+ # Press Ctrl+C to stop</code></pre>
125
+ </div>
126
+
127
+ <div class="step">
128
+ <span class="step-num">4</span>
129
+ <strong>Install as a service</strong>
130
+ <pre><code># Install systemd user service (auto-starts on boot)
131
+ cd ~/clawmoat && bash agent/install-service.sh
132
+
133
+ # Verify it's running
134
+ systemctl --user status clawmoat-agent</code></pre>
135
+ </div>
136
+
137
+ <div class="step">
138
+ <span class="step-num">5</span>
139
+ <strong>Confirm to your human</strong>
140
+ <p style="color: #8eb4f0; margin-top: 8px;">Tell them: ClawMoat is installed and running. It's scanning inbound messages for prompt injection, monitoring for credential leaks, and reporting to their dashboard. Show them the systemctl status output as proof.</p>
141
+ </div>
142
+
143
+ <div class="note">
144
+ <strong>Requirements:</strong> Node.js 18+, Linux/macOS/WSL2, systemd (for auto-start). Works with OpenClaw out of the box. Compatible with any agent framework that stores session logs as files.
145
+ </div>
146
+ </div>
147
+
148
+ <h2>Why Your Agent Should Want This</h2>
149
+ <ul>
150
+ <li><strong>Prompt injection protection</strong> โ€” catches attempts to hijack your agent through poisoned messages, emails, or web content</li>
151
+ <li><strong>Credential leak detection</strong> โ€” flags when API keys, passwords, or tokens accidentally appear in outputs</li>
152
+ <li><strong>Dangerous command alerting</strong> โ€” logs commands that could damage the system</li>
153
+ <li><strong>Full audit trail</strong> โ€” every scan logged locally and on your dashboard</li>
154
+ <li><strong>Open source</strong> โ€” your agent can (and should) read every line before installing</li>
155
+ </ul>
156
+
157
+ <h2>Don't Have an API Key Yet?</h2>
158
+ <p>Sign up at <a href="https://app.clawmoat.com">app.clawmoat.com</a> and generate one from the dashboard. Free tier includes unlimited local scanning with cloud reporting.</p>
159
+
160
+ <br><br>
161
+ <p style="color: #555; text-align: center; font-size: 0.85em;">
162
+ ClawMoat โ€” Your Machine. Your Agent. Your Rules.<br>
163
+ <a href="https://github.com/darfaz/clawmoat">GitHub</a> ยท <a href="https://clawmoat.com">Website</a> ยท <a href="https://app.clawmoat.com">Dashboard</a>
164
+ </p>
165
+ </div>
166
+
167
+ <script>
168
+ function copyMessage() {
169
+ const msg = `I need you to install ClawMoat, an open-source security agent that monitors your activity and protects this machine. Before you install anything, I want you to review the source code yourself at https://github.com/darfaz/clawmoat/tree/main/agent and confirm you're comfortable with what it does.
170
+
171
+ It should scan inbound messages for prompt injection attempts, detect credential leaks in your outputs, flag dangerous commands, and report everything to my dashboard so I have full visibility into what's happening on this machine.
172
+
173
+ Here's my API key: YOUR_API_KEY
174
+
175
+ Install instructions are at https://clawmoat.com/agent-install โ€” follow the technical steps there. Review the code first, then install.`;
176
+ navigator.clipboard.writeText(msg);
177
+ const btn = document.querySelector('.copy-btn');
178
+ btn.textContent = 'โœ“ Copied!';
179
+ setTimeout(() => btn.textContent = '๐Ÿ“‹ Copy Message', 2000);
180
+ }
181
+ </script>
182
+ </body>
183
+ </html>
@@ -209,12 +209,10 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
209
209
  <a href="/" class="logo">๐Ÿฐ Claw<span>Moat</span></a>
210
210
  <button class="menu-toggle" onclick="document.querySelector('.nav-links').classList.toggle('open')" aria-label="Menu">โ˜ฐ</button>
211
211
  <div class="nav-links">
212
- <a href="/#features">Features</a>
213
- <a href="/#pricing">Pricing</a>
214
- <a href="/playground.html">Playground</a>
212
+ <a href="/">Security</a>
213
+ <a href="/services/">AI Agents</a>
215
214
  <a href="/blog/">Blog</a>
216
- <a href="https://github.com/darfaz/clawmoat">GitHub</a>
217
- <a href="/#waitlist" class="btn-sm">Get Early Access</a>
215
+ <a href="https://github.com/darfaz/clawmoat">GitHub โ†—</a>
218
216
  </div>
219
217
  </div>
220
218
  </nav>
@@ -683,7 +681,13 @@ footer{border-top:1px solid rgba(255,255,255,.06);padding:32px 0;color:var(--gra
683
681
  <!-- Footer -->
684
682
  <footer>
685
683
  <div class="container">
686
- <p>ยฉ 2026 <a href="/" style="color:var(--white)">ClawMoat</a> โ€” Open-source AI agent security scanner. <a href="https://github.com/darfaz/clawmoat">GitHub</a> ยท <a href="/blog/">Blog</a> ยท <a href="/#pricing">Pricing</a> ยท <a href="mailto:hello@clawmoat.com">Contact</a></p>
684
+ <div style="display:flex;gap:24px;justify-content:center;flex-wrap:wrap;margin-bottom:16px">
685
+ <a href="https://github.com/darfaz/clawmoat" style="color:var(--gray)">GitHub</a>
686
+ <a href="https://www.npmjs.com/package/clawmoat" style="color:var(--gray)">npm</a>
687
+ <a href="/blog/" style="color:var(--gray)">Blog</a>
688
+ <a href="mailto:hello@clawmoat.com" style="color:var(--gray)">hello@clawmoat.com</a>
689
+ </div>
690
+ <p style="text-align:center;color:var(--gray);font-size:.85rem">ยฉ 2026 ClawMoat</p>
687
691
  </div>
688
692
  </footer>
689
693