Light enough to forget it's running.
Crawdad runs on the machine your agent already runs on. There's no separate server, no GPU, and no heavyweight runtime — and it doesn't balloon alongside your models. If your laptop or box can run the agent, it can run Crawdad.
Supported platforms
Full runtime detection and enforcement run on macOS and Linux. Native Windows runs detection and monitoring today; for full ML detection on Windows, run the Linux build under WSL2.
| Platform | Support | Notes |
|---|---|---|
| macOS (Apple Silicon) | Full | Signed & notarized. Detection and Enforce-mode OS egress lock both supported. ML downloads in the background on first run. |
| Linux (x86_64 & ARM64) | Full | Detection and Enforce-mode OS egress lock both supported (verified against a live kernel). ML downloads on first run. |
| Windows (via WSL2) | Full — recommended | Runs the Linux build inside WSL2 for full ML detection and enforcement. The recommended path for Windows. |
| Windows (native) | Detection & monitoring | Pattern detection, visibility, and the mandatory credential broker run today; full ML detection and the OS egress lock are on the roadmap. |
| macOS (Intel) | Pattern-only | Upstream ONNX Runtime has no current Intel-macOS build for the ML layer; pattern detection is active and ML returns when a wheel ships. |
Footprint
Crawdad is a small native binary written in Rust. Detection runs in-memory, in the request path, and stays there.
- Memory: a small resident footprint — around 60–70 MB on macOS in normal use. It does not scale with the size of your model or your context window.
- CPU: negligible in normal use. The pattern layers are compiled regexes running in memory; there is no busy loop and nothing polling.
- Disk I/O: none of consequence in the request path. Events are written to a local SQLite log out of band; inspection itself touches no disk.
- No GPU, no server: everything runs locally in the sidecar process. There is nothing to provision and nothing to scale.
Latency
Crawdad inspects each request as it passes through, so it adds a small amount of time. In practice it disappears into the model's own latency.
- Pattern layers run sub-millisecond in memory; the pattern-only path stays under ~10 ms at p99.
- The ML classifier runs on every input and adds its inference time when it runs — low on Apple-silicon native builds, higher on platforms going through the portable runtime.
- An LLM's own response takes roughly 500 ms–5 s per call, so the inspection overhead is small relative to the round-trip. In a normal agent workflow, you won't notice it.
Disk & first run
Install is fast because only the binary downloads at install time. Full detection warms up in the background on first run.
- The binary itself is small and installs to
/usr/local/bin(or a Windows service). - On first run the sidecar downloads the ML model (~568 MB, v0.9.3 FP32 DeBERTa-small) and the platform ML runtime once per machine, in the background, while pattern detection is already protecting you. Keep roughly the model size plus a ~200 MB margin free.
- The optional on-device L7 judge uses a local model via Ollama if you enable it — recommended, not required.
What you need
The whole checklist:
- A supported platform — macOS, Linux, or Windows (WSL2 recommended).
- An agent or tool that talks to a supported provider: Anthropic, OpenAI, Google, xAI, or NVIDIA. Any framework works — you point it at Crawdad with one environment variable, no SDK and no code changes.
- A few localhost ports free (the proxy, verify, and dashboard ports in the 7748–7750 range). Nothing inbound, nothing exposed.
- A few minutes to install and connect.
Want the full play-by-play for every platform? See the install guide or the FAQ.