Vulkro AI (local)
AI assists. The scanner decides.
Vulkro ships optional AI help that runs where your code lives: a small model on your own machine, through Ollama, with no API key and no cloud in the loop. It explains findings, answers questions about your codebase, and drafts fixes. What it never does is change what the scanner found. The scan stays deterministic, the benchmark is scored with the AI off, and a drafted fix counts only when a fresh scan proves the finding is gone.
- Runs via local Ollama
- Never changes a scan verdict
- Fixes verified by re-scan
$ vulkro ai ask "which endpoints skip auth?" Two routes accept requests without an access check: POST /api/orders (orders.py:41) GET /api/export (export.py:12) evidence: scan 2026-07-28, endpoint map
01 / The stance
One invariant: AI never changes a scan result.
Most of the industry now puts a model inside detection: plausible, confident, and different every run. Vulkro holds the opposite line. Detection is deterministic program analysis, the same verdict for the same code, every time. The AI layer sits beside the engine, not inside it.
The scan is AI-free
The AI is advisory
The benchmark stays clean
02 / What it does
Explain, answer, triage, draft. Locally.
One local model, several surfaces. Everything below works in both flagships: the core scanner and Vulkro for Salesforce.
ask
Ask questions about your codebase
explain
Explain findings in plain language
triage
A second opinion on noisy findings
fix --ai
Draft fixes that must prove themselves
03 / Verified fixes
A receipt, not a promise.
Every AI vendor promises fixes. Vulkro’s are accepted or refused by the deterministic engine, and you see which. The claim is narrow on purpose: verified means a fresh scan no longer reports the finding and the file still parses. It does not claim your build compiles or your tests pass; your CI keeps that job.
$ vulkro fix --ai [HIGH] SQL injection in orders.py draft: parameterize the query parse check: ok re-scan: finding no longer reported verified, fix applied
$ vulkro-sf fix --ai [CRITICAL] SOQL injection in QuoteCtl.cls draft: bind the user input parse check: ok re-scan: finding still present refused, nothing changed
$ vulkro fix --ai --dry-run · docs/cli/fix · docs/salesforce/cli/fix
04 / Local by default
Your hardware, your model, no key.
One command sets up the local model through Ollama. The default is a small coding model that runs on a laptop; constrained machines get a smaller fallback. There is no account and no API key for the local path, and in offline mode Vulkro allows the loopback endpoint and refuses anything that would leave the machine.
One-command setup
Sane defaults, your override
Offline stays offline
$ vulkro ai setup · $ vulkro-sf ai setup · the full command reference
05 / Where the line is
What the AI does not do.
Clear limits, stated as design decisions.
It does not detect
It does not phone home
Verified is a narrow claim
A small model, honestly small