______ _ _____ _
/ ____| | / ____| | |
| | | | __ ___ _| | __ _ _ __ _ _ __ __| |
| | | |/ _` \ \ /\ / / | |_ | | | |/ _` | '__/ _` |
| |____| | (_| |\ V V /| |__| | |_| | (_| | | | (_| |
\_____|_|\__,_| \_/\_/ \_____|\__,_|\__,_|_| \__,_|
Harden OpenClaw before the internet finds it.
ClawGuard, also known as 小龙虾卫士, is a CLI-first security scanner and one-click hardening tool for OpenClaw deployments.
Current release target: v0.1.2
- Why ClawGuard
- What It Does
- Current Status
- Quick Start
- Installation
- Example Use Cases
- Project Layout
- Documentation
- Roadmap
- Development
- Can Users Install It With npm Today?
- Visual Direction
- Contributing
- Repository
- License
OpenClaw deployments are being exposed with the same failure patterns again and again:
- public control ports
- weak or missing authentication
- broken approval and permission chains
- secrets left in
.envfiles and logs - suspicious skills and untrusted install sources
ClawGuard exists to turn that into a practical operator workflow:
- inspect the deployment
- explain the risk
- harden what can be fixed safely
- export a report you can actually share
- Scan a single OpenClaw config file
- Scan a deployment directory
- Detect exposure, auth, permission, secrets, and supply-chain findings
- Load custom rulesets
- Back up configs before changes
- Restrict risky bind addresses
- Rotate weak tokens
- Disable dangerous debug and status exposure
- Remove suspicious skills from the active config path
- Export
json,html, andtext - Use English or Simplified Chinese output
- Auto-detect system language when
--localeis not provided - Generate operator-readable findings with evidence and remediation
ClawGuard is currently a working Rust CLI MVP.
Implemented today:
- operator-friendly
check,fix, andremovecommands - CLI scanning
- CLI hardening
- CLI uninstall command
- deployment profile scanning
- localized report output
- system locale auto-detection
- signed rules-pack generation, import, activation, and rollback
- signed release manifest generation and install-time verification
- ASCII startup banner
- packaging script and installation guide
- test coverage for core and CLI flows
Still in progress:
- online rules-pack update checks
- published install channels
- npm wrapper distribution
Build the CLI:
cargo build --release -p clawguardRun help:
cargo run -p clawguard -- helpStart the default interactive operator flow:
cargo run -p clawguard --In a real terminal, ClawGuard now opens a richer TUI:
- ASCII-only action labels and prompt markers
- orange-accent terminal theme with stable alignment
- arrow-key navigation
- space-to-toggle quick actions
- enter-to-run
- automatic fallback to plain text prompts in non-interactive shells and test runs
Auto-discover a local OpenClaw profile and print a readable report:
cargo run -p clawguard -- checkcheck now prints the discovered profile_path and a local_probe result before the report body.
With no arguments, ClawGuard starts an interactive menu for check, fix, remove, and sample-config flows.
Start interactive mode in Simplified Chinese:
cargo run -p clawguard -- --locale zh-CNAuto-discover a local config and harden it in place:
cargo run -p clawguard -- fix --yesAuto-detect a local install and remove the binary:
cargo run -p clawguard -- remove --yesGenerate a sample config:
cargo run -p clawguard -- sample-config --output example.confGenerate a signing keypair for rules-pack management:
cargo run -p clawguard -- generate-signing-keypair --output-dir .keysSign a rules pack from the default rules or a custom rules file:
cargo run -p clawguard -- sign-rules-pack --output rules-pack.json --version 0.1.2 --private-key .keys/clawguard-rules.private.keyImport and activate the signed rules pack:
cargo run -p clawguard -- import-rules-pack --pack rules-pack.json --public-key .keys/clawguard-rules.public.key --activateScan a config:
cargo run -p clawguard -- scan --config example.conf --format jsonScan with localized text output:
cargo run -p clawguard -- scan --config example.conf --format text --locale zh-CNClawGuard also localizes the help screen and interactive prompts when --locale zh-CN is supplied or when the environment resolves to Chinese.
Scan a deployment directory:
cargo run -p clawguard -- scan-profile --path /path/to/openclaw-profile --format html --output report.htmlApply hardening:
cargo run -p clawguard -- harden --config example.conf --output hardened.confUninstall from a target install directory:
cargo run -p clawguard -- uninstall --install-dir "$HOME/.local/bin"Install from the local source tree:
cargo install --path crates/cliRemove the Cargo-installed binary:
cargo uninstall clawguardInstall with curl after release archives are published:
curl -fsSL https://raw.githubusercontent.com/legeling/ClawGuard/main/scripts/install-clawguard.sh | bashThe installer verifies a signed release manifest against the committed release public key before extracting the archive.
Uninstall the curl install:
curl -fsSL https://raw.githubusercontent.com/legeling/ClawGuard/main/scripts/uninstall-clawguard.sh | bashInstall with npm or run with npx after the npm wrapper is published:
npx clawguard --helpnpm install -g clawguard
clawguard --helpDetailed installation and packaging notes:
- Audit a publicly reachable OpenClaw host before putting it behind a reverse proxy
- Check whether a home-lab or VPS deployment leaked secrets into
.envor logs - Validate installed skills against suspicious pattern rules
- Produce an HTML report for review, documentation, or incident follow-up
crates/core-engine Shared scanning, reporting, and remediation logic
crates/cli Command-line entry point
rules/ Ruleset content
reports/ Report-related assets and conventions
docs/ Product, design, security, and operations docs
scripts/ Packaging and project automation
- Security Insights
- Product Requirements
- Solution Architecture
- CLI Installation
- CI/CD
- Vulnerability Tracker
- Improve artifact signing and verification
- Add online rules-pack update checks
- Expand detector coverage for more real-world OpenClaw deployment patterns
- Add published installation channels
- Add npm wrapper distribution if a Node-based install path is still needed
Build:
cargo build --workspaceTest:
cargo test --workspaceLint:
cargo clippy --workspace --all-targets -- -D warningsPackage a release archive:
bash scripts/package-release.shNot yet.
ClawGuard is currently distributed as a Rust CLI, not an npm package.
What exists now:
- Rust workspace
- CLI binary
- local packaging script
- curl installer script
- npm wrapper package scaffold
What does not exist yet:
- published npm package
npx clawguardinstall path- published GitHub release archives for the download installers
Yes.
If --locale is not provided, ClawGuard checks LC_ALL, LC_MESSAGES, and LANG.
If the environment looks Chinese, it switches to zh-CN. Otherwise it defaults to English.
The same locale selection applies to:
- the help screen
- the interactive menu
- interactive prompts and confirmations
- terminal report output
If colors do not appear in your terminal, check whether NO_COLOR=1 is set in your shell environment.
Yes, for the current CLI installation model.
- CLI command:
clawguard uninstall --install-dir <path> - Shell script:
scripts/uninstall-clawguard.sh
Yes.
The help screen now includes an ASCII banner and a localized tagline for ClawGuard / 小龙虾卫士.
ClawGuard should look like a precise, sharp, modern security product, not a generic hacker terminal brand.
Contributions are welcome, but the repository follows a few strict rules:
- repository-facing content stays in English
- code comments stay in English
- security-impacting changes should update the tracker and related docs
- new behavior should land with tests and verification
- GitHub:
git@github.com:legeling/ClawGuard.git
License file not added yet.