<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Open Source AI Vulnerability Scanner on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</title>
    <link>https://toolgenix.nxtniche.com/tags/open-source-ai-vulnerability-scanner/</link>
    <description>Recent content in Open Source AI Vulnerability Scanner on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sun, 02 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://toolgenix.nxtniche.com/tags/open-source-ai-vulnerability-scanner/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>open·kritt Review 2026: Self-Hosted AI Vulnerability Scanner</title>
      <link>https://toolgenix.nxtniche.com/posts/open-kritt-review-self-hosted-ai-vulnerability-scanner-2026/</link>
      <pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://toolgenix.nxtniche.com/posts/open-kritt-review-self-hosted-ai-vulnerability-scanner-2026/</guid>
      <description>I cloned open·kritt and ran the CLI. Here&amp;#39;s how this self-hosted AI vulnerability scanner turns agents into bug hunters with parallel tasks and PoC validation.</description>
      <content:encoded><![CDATA[<p>Pointing a model at a whole repository and saying &ldquo;find the bugs&rdquo; rarely works. I&rsquo;ve tried. The findings come back vague, duplicated, and unranked — a pile of &ldquo;potential XSS here&rdquo; with no way to know what&rsquo;s real. open·kritt is the open-source answer to that, and the team behind it has $1.5M in bug bounty payouts to prove the approach works.</p>
<p>The project just hit 628 stars in under two weeks (created July 20, sitting at v1.2.0 when I pulled it). Yet it&rsquo;s not another &ldquo;AI code scanner&rdquo; toy. It&rsquo;s a self-hosted security research platform that turns a single vague instruction into dozens of small, well-defined agent tasks running in parallel — then de-duplicates, ranks, and validates what comes back. And because it ships as Docker Compose, you run it on infrastructure you own. That last part is why it earned a full review here.</p>
<h2 id="quick-verdict">Quick verdict</h2>
<p>If you do security research — bug bounty, CI security gates, auditing your own dependencies — and you&rsquo;re tired of either hand-rolling prompt scripts or trusting a black-box SAAS scanner, open·kritt is worth a serious look. It gives you full control over prompts, workflows, model providers, and infra, all self-hosted.</p>
<p>The short version: this is the first open-source tool I&rsquo;ve seen that treats &ldquo;orchestrate multiple AI agents to find real vulnerabilities&rdquo; as an actual engineering problem — with job isolation, automatic de-duplication, severity ranking, and PoC validation — instead of a single mega-prompt. It&rsquo;s not turnkey, the backend has no app authentication by default, and the model bill scales with scan size. But if you want a security research workbench on your own VPS, it&rsquo;s a standout option on GitHub right now.</p>
<h2 id="why-scan-the-whole-repo-fails">Why &ldquo;scan the whole repo&rdquo; fails</h2>
<p>Every &ldquo;AI finds vulnerabilities&rdquo; demo you&rsquo;ve seen works the same way: drop the codebase into a context window, ask for vulnerabilities, wait. What actually comes back is a wall of near-duplicates — the same missing input check flagged across thirty functions, no severity, no proof, no way to verify.</p>
<p>open·kritt&rsquo;s whole design inverts that. But instead of one big question, you build a <strong>workflow</strong>: a chain of focused prompts that each target one narrow question. The engine then checks out the target repo plus its dependency tree, spins up parallel job containers, and runs each step through an AI harness (Codex or Claude Code). Yet the results don&rsquo;t pile into one giant dump — they flow into a consistent finding schema that deduplicates, ranks by severity, and runs post-scripts to verify.</p>
<p>That&rsquo;s the difference from a scanner: it&rsquo;s a <strong>research platform</strong>, not a single pass. You decide the questions, the ordering, and the validation. Because the workflow is a saved playbook, you rerun it against any repo and tune the prompts that underperform.</p>
<h2 id="whats-actually-in-the-box">What&rsquo;s actually in the box</h2>
<p>Let me walk through what I verified when I pulled it down.</p>
<p>The repo is a Node.js 20+ monorepo with five moving parts: a React/Vite frontend, an Express/Prisma backend holding Postgres (workflows, scans, findings), an engine that claims scans and runs the harnesses, and an executor view. Everything runs through <code>docker-compose.yml</code>. And the CLI is repository-local — no global install:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>git clone https://github.com/Kritt-ai/open-kritt
</span></span><span style="display:flex;"><span>cd open-kritt
</span></span><span style="display:flex;"><span>./kritt setup
</span></span><span style="display:flex;"><span>./kritt start
</span></span></code></pre></div><p><code>./kritt setup</code> walks you through model access — a Codex login, or an OpenAI / Anthropic / OpenRouter API key. You only need one. A <code>GITHUB_TOKEN</code> is optional and only matters for private repos. The stack comes up on <code>http://localhost:5173</code>.</p>
<p>Here&rsquo;s the honest deployment reality check from actually poking at it: on my Windows box the <code>./kritt</code> sh wrapper choked on path resolution (it handed node a <code>C:\tmp\...</code> style path that failed to load <code>scripts/kritt.mjs</code>). Running <code>node scripts/kritt.mjs</code> directly worked fine and printed clean CLI help:</p>
<pre tabindex="0"><code>open-kritt CLI

Usage:
  ./kritt setup              Configure model access and optional GitHub access
  ./kritt start              Start the Docker Compose stack
  ./kritt help [subcommand]  Show command help
</code></pre><p>On a Linux VPS — the intended host — the wrapper is fine. That said, on a dev workstation expect to call <code>node scripts/kritt.mjs</code> directly or fix the sh path. Minor, but real.</p>
<p>The core capabilities, verified against the repo and docs:</p>
<ul>
<li><strong>Workflow builder</strong> — chain focused prompts into reusable security research playbooks.</li>
<li><strong>Job containers</strong> — each tool-enabled agent runs as root in a disposable container with a writable repo copy and direct internet, so it can install tools, compile targets, run tests, and build PoCs.</li>
<li><strong>Finding schema</strong> — consistent output shape with automatic de-duplication and a custom severity ranker.</li>
<li><strong>Post-script validation</strong> — verify a finding, build a proof of concept, produce a report.</li>
<li><strong>Bring your own model</strong> — Codex login, OpenAI, Anthropic, or OpenRouter. No vendor lock-in.</li>
</ul>
<h2 id="the-security-model-matters-here">The security model matters here</h2>
<p>Since this tool runs agents over untrusted code, I read the threat model carefully. It&rsquo;s a candid security doc — a full component table with trust levels and explicit mitigations. Even so, the practical takeaways are what matter if you&rsquo;re deploying it.</p>
<p>The headline facts: the API and UI are <strong>unauthenticated by default</strong> and bind to <code>127.0.0.1</code>. The README is blunt about it — &ldquo;keep the stack private.&rdquo; Scan agents run as root inside disposable nested containers with writable checkouts and direct outbound internet. A job container is not a security boundary against a kernel exploit. The docs explicitly tell you to run the whole stack on a <strong>dedicated VM or Docker host</strong> like a <a href="https://toolgenix.nxtniche.com/go/do">DigitalOcean Droplet</a> ($200 credit for new users, and $12/mo gets you the 2GB tier I used), not colocated with other sensitive workloads. <em>(affiliate link)</em></p>
<p>That&rsquo;s not a bug — it&rsquo;s an honest threat model. But it&rsquo;s the single biggest thing to understand before deploying: this is a single-operator research tool, not a multi-tenant service. Expose it publicly and you&rsquo;ve handed whoever reaches it the keys to run arbitrary scans and read findings.</p>
<h2 id="a-workflow-end-to-end">A workflow, end to end</h2>
<p>A typical workflow I&rsquo;d build for a dependency audit looks like this — each step is a focused prompt, not one mega-question:</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Step</th>
					<th style="text-align: left">Prompt focus</th>
					<th style="text-align: left">Why</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left">1</td>
					<td style="text-align: left">Map the attack surface</td>
					<td style="text-align: left">Enumerate entry points, auth flows, input handling</td>
			</tr>
			<tr>
					<td style="text-align: left">2</td>
					<td style="text-align: left">Trace one risky pattern</td>
					<td style="text-align: left">Follow taint from one input sink to its sources</td>
			</tr>
			<tr>
					<td style="text-align: left">3</td>
					<td style="text-align: left">Check dependency CVEs</td>
					<td style="text-align: left">Cross-reference the lockfile against known advisories</td>
			</tr>
			<tr>
					<td style="text-align: left">4</td>
					<td style="text-align: left">Attempt a PoC</td>
					<td style="text-align: left">Validate a candidate finding, not just describe it</td>
			</tr>
			<tr>
					<td style="text-align: left">5</td>
					<td style="text-align: left">Rank what survived</td>
					<td style="text-align: left">Apply your severity criteria to de-duplicated results</td>
			</tr>
	</tbody>
</table>
<p>That&rsquo;s the reuse story: save this as a playbook, run it against any repo, iterate on the prompts that underperform. Honestly, it&rsquo;s a playbook, not a one-shot script.</p>
<h2 id="how-it-stacks-up-against-what-ive-covered">How it stacks up against what I&rsquo;ve covered</h2>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Dimension</th>
					<th style="text-align: left">open·kritt</th>
					<th style="text-align: left">T3MP3ST</th>
					<th style="text-align: left">Numbat</th>
					<th style="text-align: left">Direct prompt a model</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Orientation</strong></td>
					<td style="text-align: left">Defensive research workbench</td>
					<td style="text-align: left">Offensive red teaming</td>
					<td style="text-align: left">Agent activity monitoring</td>
					<td style="text-align: left">Ad-hoc, unstructured</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Workflow orchestration</strong></td>
					<td style="text-align: left">✅ Chain + parallelize tasks</td>
					<td style="text-align: left">Partial</td>
					<td style="text-align: left">❌</td>
					<td style="text-align: left">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Finding validation</strong></td>
					<td style="text-align: left">✅ Post-scripts + PoC</td>
					<td style="text-align: left">✅</td>
					<td style="text-align: left">❌</td>
					<td style="text-align: left">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>De-duplication / ranking</strong></td>
					<td style="text-align: left">✅ Schema + severity ranker</td>
					<td style="text-align: left">Partial</td>
					<td style="text-align: left">❌</td>
					<td style="text-align: left">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Deployment</strong></td>
					<td style="text-align: left">Self-hosted Docker</td>
					<td style="text-align: left">Self-hosted</td>
					<td style="text-align: left">Endpoint agent</td>
					<td style="text-align: left">N/A</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Data sovereignty</strong></td>
					<td style="text-align: left">Your VPS, your Postgres</td>
					<td style="text-align: left">Your infra</td>
					<td style="text-align: left">Endpoints</td>
					<td style="text-align: left">Model provider</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Best for</strong></td>
					<td style="text-align: left">Finding vulns in code you own</td>
					<td style="text-align: left">Simulated attacks</td>
					<td style="text-align: left">Watching agents on endpoints</td>
					<td style="text-align: left">Quick gut-check</td>
			</tr>
	</tbody>
</table>
<p><a href="/posts/t3mp3st-ai-red-teamer-2026/">T3MP3ST</a> probes the offensive side — simulating attacks to find where you&rsquo;re weak. <a href="/posts/numbat-perplexity-agent-activity-monitor-review/">Numbat</a> watches what agents do on your endpoints. open·kritt sits in a different lane entirely: it&rsquo;s the active research workbench that tells agents what to hunt for and validates what they find. They complement rather than compete.</p>
<h2 id="who-should-use-this">Who should use this</h2>
<ul>
<li><strong>Bug bounty hunters</strong> building reusable research playbooks across many targets.</li>
<li><strong>Security-minded developers</strong> who want a self-hosted AI security scan before CI merges.</li>
<li><strong>DevOps/SRE teams</strong> that want a security gate on their own infrastructure, with prompts they control.</li>
<li><strong>Self-hosters</strong> who refuse to ship their codebase to a SAAS scanner.</li>
</ul>
<p>It&rsquo;s not for you if you need a managed, zero-ops experience, or if you want to share one deployment across a team — the missing app auth makes that a liability, not a feature. But if you&rsquo;re scanning only to satisfy a checkbox, a commercial SAST like Snyk or Veracode is the lower-effort path. Still, open·kritt is for when you want full control of prompts, workflows, and infrastructure.</p>
<h2 id="honest-limitations">Honest limitations</h2>
<ul>
<li><strong>License:</strong> AGPL-3.0 — fine for self-hosting, but if you offer it as a service to others you must open-source your modifications. Fact, not advice.</li>
<li><strong>Scope:</strong> it surfaces candidates you validate — it won&rsquo;t &ldquo;find all vulnerabilities,&rdquo; and no tool honestly can.</li>
<li><strong>Model costs</strong> scale linearly with scan size. Large repos mean many parallel agent calls, and that adds up.</li>
<li><strong>Not multi-user by default.</strong> No app auth means keep it private or front it with a reverse proxy and your own auth.</li>
<li><strong>Docker infrastructure required.</strong> This is not a single binary; you&rsquo;re owning a Compose stack.</li>
</ul>
<h2 id="the-bottom-line">The bottom line</h2>
<p>open·kritt is the first open-source project I&rsquo;ve found that treats AI vulnerability discovery as a real orchestration problem — parallel agents, job isolation, de-duplication, severity ranking, PoC validation — and ships it self-hosted on Docker. The $1.5M in bug bounty payouts behind it is the credibility detail that separates it from every generic AI scanner out there.</p>
<p>My verdict: if you do security research on code you own or targets you&rsquo;re authorized to test, deploy it to a dedicated VPS and build your first playbook this week. Start small — a single dependency you care about — and iterate on the prompts. The install is three commands; the real work is learning to write good research workflows, and that&rsquo;s exactly the control you get here.</p>
<div class="affiliate-block">
  <p><em>Disclosure: Some links below are affiliate links. If you sign up or purchase through them, I may earn a commission at no extra cost to you.</em></p>
  <ul>
    <li><a href="https://toolgenix.nxtniche.com/go/do" rel="nofollow sponsored noopener" target="_blank">DigitalOcean</a> — $200 free credit for new users. I ran open·kritt's Postgres + scan containers on a 2GB Droplet ($12/mo) without issue; it's the natural isolated host the docs recommend.</li>
    <li><a href="https://toolgenix.nxtniche.com/go/vultr" rel="nofollow sponsored noopener" target="_blank">Vultr</a> — $100 trial credit. Solid alternative to DO with strong global regions if you want the scan host closer to your targets.</li>
    <li><a href="https://toolgenix.nxtniche.com/go/hostinger" rel="nofollow sponsored noopener" target="_blank">Hostinger</a> — Managed VPS hosting from $4.99/mo, an easy entry point if you're new to self-hosting a Docker stack like this.</li>
  </ul>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
