How watt-tang/clawguard works
ClawGuard is a full-stack security-governance platform. Users navigate its React console to review product security, exposure, vulnerability intelligence, research, and Skill governance; the web API serves these views and supports refreshes, scans, and account workflows. Skill assessment branches into static scanners and ProvLoom dynamic analysis, while risk and research services aggregate external intelligence. The README documents the major capabilities and API surface; sampled source confirms selected authentication, research persistence, and analysis behavior, but not every route or service-to-scanner call.
Main entry points: index.mjs Express API · App.jsx React application · skillStaticScanApiService.mjs Static scan API · openclawRiskService.mjs OpenClaw risk
Components 25
Web console
- React application
web/src/App.jsx - Exposure views
web/src/features/openclaw-exposure/pages/OpenclawExposurePage.jsx - Risk views
web/src/features/openclaw-risk/pages/OpenclawRiskPage.jsx - Research views
web/src/features/security-research/pages/SecurityResearchPage.jsx - Skill governance
web/src/features/skill-governance/pages/SkillGovernancePage.jsx - Auth session
web/src/hooks/useAuth.js
API and intelligence
- Express API
web/server/index.mjs - Account workflows
web/server/services/authService.mjs - Exposure monitoring
web/server/services/exposureService.mjs - OpenClaw risk
web/server/services/openclawRiskService.mjs - Research aggregation
web/server/services/securityResearchService.mjs - Skill intelligence
web/server/services/skillIntelligenceService.mjs - Skill search
web/server/services/skillSearchService.mjs - Static scan API
web/server/services/skillStaticScanApiService.mjs - Sandbox service
web/server/services/skillDynamicSandboxService.mjs
Skill assessment
- Static scanner
scanners/scanner2/core/scanner.py - Static skill scanner
scanners/scanner7/static_skill_scanner - Agent scanner
scanners/scanner5
Dynamic analysis
- Dynamic analysis
provloom/app - Evidence risk analysis
provloom/app/analyzer/decision_engine.py
Data and providers
- MySQL database
- Advisory sources
- Research sources
- LLM provider
Other components
- Platform user
Connections 33
- Platform user → React application: navigates
- React application → Exposure views: selects view
- React application → Risk views: selects view
- React application → Research views: selects view
- React application → Skill governance: selects view
- React application → Auth session: uses session
- Exposure views → Express API: requests data
- Risk views → Express API: requests data
- Research views → Express API: requests data
- Skill governance → Express API: requests data
- Auth session → Express API: auth requests
- Express API → Account workflows: dispatches auth
- Express API → Exposure monitoring: dispatches exposure
- Express API → OpenClaw risk: dispatches risk
- Express API → Research aggregation: dispatches research
- Express API → Skill intelligence: dispatches intelligence
- Express API → Skill search: dispatches search
- Express API → Static scan API: dispatches scans
- Express API → Sandbox service: dispatches sandbox
- Account workflows → MySQL database: reads and writes
- Exposure monitoring → MySQL database: reads data
- OpenClaw risk → MySQL database: stores intelligence
- OpenClaw risk → Advisory sources: aggregates advisories
- Research aggregation → Research sources: fetches papers
- Research aggregation → MySQL database: persists snapshots
- Skill intelligence → MySQL database: reads intelligence
- Skill search → MySQL database: searches records
- Static scan API → Static scanner: runs static scan
- Static scan API → Static skill scanner: runs static scan
- Static scan API → Agent scanner: orchestrates scanner
- Sandbox service → Dynamic analysis: runs assessment
- Dynamic analysis → Evidence risk analysis: scores evidence
- Dynamic analysis → LLM provider: requests analysis