Source analysis Closed beta
Most scanners pattern-match within a single file. Rowan builds a call graph for your whole project and follows tainted data from source to sink across imports and function calls — which is where real vulnerabilities actually live. Built specifically for AI infrastructure.
The limitation
An SSRF that spans two files and an async method won’t appear in a single-file regex scan. Rowan follows the full chain and shows exactly where it breaks.
Coverage
Cross-file taint
HTTP params, CLI args, env vars — followed to dangerous sinks across files and function boundaries.
AI/ML sink models
torch.load(), trust_remote_code=True, apply_chat_template() — modelled as distinct attack surfaces.
Model file scanning
Static analysis of checkpoint files, GGUF, SafeTensors, and Keras .h5 before they are loaded.
Reachability-aware SCA
Only surfaces CVEs your code can actually trigger. Unreachable vulnerabilities are suppressed.
Prompt injection
Taint flows into LLM system prompts, RAG contexts, and Jinja2 template rendering.
Framework patterns
Named rules for LangChain, Keras importlib, OmegaConf, ONNX Hub, Gradio, and others.
Architecture
Output
Every finding is scored 0–100% based on source clarity, taint path length, and whether known sanitizers were detected in the path. High-confidence findings are direct exploits. Lower scores identify patterns worth reviewing. Filter to 80%+ to separate signal from noise.
| SARIF 2.1 | IDE and GitHub Advanced Security |
| JSON | Programmatic integration |
| HTML | Shareable report |
| CSV | Ticket import |
| CycloneDX AI-BOM | Supply chain attestation |
Setup
Runs locally with no infrastructure required. Also available as a FastAPI web service with project management, triage dashboard, and REST endpoints for CI integration.
Changed-file scanning, PR security gates, and a GitHub Actions template are included. The free Gemini API tier is sufficient for most repositories.