Open Source · Local-First

Security scanner for
AI coding tools

Wraps AI agents like Claude Code, intercepting I/O in real-time to detect and block dangerous operations before they execute.

Terminal
243
Threat Rules
<1ms
Scan Latency
0
Cloud Dependencies
100%
Local Data

Why WardnMesh

AI tools are powerful but unguarded. WardnMesh adds a security layer without changing your workflow.

🛡

243 Bundled Threat Rules

Detects code injection, command injection, data exfiltration, privilege escalation, and more with regex pattern matching.

Sub-millisecond Scanning

Transform stream architecture scans every I/O chunk against all rules in under 1ms. Zero perceptible latency.

🔒

Fail-Closed Design

Timeout always means block. No severity level auto-allows. If the system can't confirm, it blocks.

💻

Terminal Confirmation Prompts

Built-in terminal prompts for threat confirmation. No extra app needed. Experimental desktop app (Tauri) available for native popups.

💾

Local SQLite Audit Trail

Every scan, decision, and block is logged locally. Query your history with wardn audit. Nothing leaves your machine.

🌐

Fully Air-Gapped

No telemetry, no cloud sync, no accounts, no API keys. Works completely offline after installation.

CLI Commands

Everything you need, nothing you don't.

CommandDescription
wardn run <cmd>Wrap any command with real-time threat detection
wardn statusShow rules count, database info, connection status
wardn rules listList all 243 threat rules with severity and category
wardn rules enable/disableToggle individual rules on or off
wardn auditQuery the local audit log with filters
wardn decisionsView and manage cached allow/block decisions
wardn doctorSystem health check and diagnostics

How It Works

Three layers between AI output and your system.

$ wardn run claude

1. Spawns subprocess with piped stdio
2. Each chunk scanned by ScanPipeline (243 rules, <1ms)
3. Violation? → ConfirmationRequester
a. Check decision cache (session → project → always)
b. Cache miss → Terminal prompt (or experimental Desktop popup)
c. Timeout → BLOCK (fail-closed)
4. Decision logged to SQLite (~/.wardnmesh/wardnmesh.db)
5. Allow → pass chunk | Block → drop chunk

Get Started

One command to install. One command to protect.

$ npm install -g @pcircle/wardnmesh
View on GitHub