Local unless you opt in
The default scan reads your project and makes no network requests. Nothing leaves your machine. No telemetry. Runtime checks only happen when you provide a target, and every redirect remains inside the scope you declared.
Open source · v0.2.0
Owlwarden scans Node web apps where you work. It returns the vulnerable line, why it matters, a fix written for your framework, and a confidence level you can act on.
npx owlwarden scan
Evidence, not a ticket
A finding should not send you on a scavenger hunt. Owlwarden includes the exact location, readable context, impact, and a fix you can use without opening another browser tab.
11 │ } catch (err) {
12 │ return NextResponse.json(
13 │ { error: err.stack },
│ └─ leaks internal structure
14 │ { status: 500 }
Return a generic message; log the error server-side.
console.error(err)
return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 })
For coding agents
Owlwarden handles repeatable baseline checks locally, then gives the agent a bounded, structured result. Keep the model for architecture, authorization boundaries, and the decisions a parser cannot make.
npx owlwarden mcpThe MCP server is static-only, read-only, workspace-scoped, and cannot trigger network probes or write a “fix.” Scan and plugin text is wrapped as untrusted evidence, not instructions.
The standard
Security tools usually fail in one of two directions: they say too little to help, or too much to believe. Owlwarden treats a false positive as a product failure, not collateral damage.
Every finding carries confirmed, likely, or possible. Static analysis can never claim “confirmed”; that level requires a passive runtime probe to agree with the source. Possible findings stay visible but do not fail CI on their own.
The result is practical: developers know what deserves attention, and coding agents are less likely to edit good code because a heuristic sounded certain.
Built for the edit loop
The default scan reads your project and makes no network requests. Nothing leaves your machine. No telemetry. Runtime checks only happen when you provide a target, and every redirect remains inside the scope you declared.
Owlwarden recognizes how each framework receives requests, sends responses, sets cookies, registers routes, and configures headers. The fix matches the stack it found.
The human report and JSON come from the same finding model. Schemas are checked across Rust and TypeScript in CI, so agents do not receive a convenient fiction that the engine never emitted.
Twelve stacks, fully named
Every shipped rule has remediation for every supported framework. A test fails the release if one is missing.
An honest coverage map
Injection, insecure response behavior, unsafe request destinations, leaked secrets, weak cryptography, supply-chain mistakes, logging risks, and misconfiguration patterns across Node web apps.
Read all twelve rulesOWASP A04:2021 — Insecure Design needs product intent, runtime context, or a human threat model. Owlwarden marks it out of reach instead of mapping a narrow rule to a broad promise.
See the coverage methodPlain answers
TypeScript and JavaScript web applications, with first-class framework knowledge for Next.js, Nuxt, NestJS, Express, Fastify, Hono, Koa, Hapi, Sails.js, Astro, Remix, and Gatsby. Other Node projects receive a generic scan where a rule does not need framework context.
No. Static scans are local, offline, and have no telemetry. Network access only begins when you explicitly pass --target; those passive probes are deny-by-default and limited to the origin or scopes you name.
No. It is a fast, repeatable security floor for every edit and every CI run. High-impact work—authentication, payments, personal data, authorization design—still deserves deeper human and AI-assisted review.
Not through the shipped MCP server. It can scan, inspect one file, explain a rule, and list the catalogue. The MCP surface is read-only and static-only. Autofix is planned, but it is not part of version 0.2.0.
Rules declare a maximum confidence; request-origin analysis is intentionally shallow and shared across rules; possible findings do not fail CI alone; and every tempting clean case added to the fixture corpus must remain silent.
Watch the code that ships
npx owlwarden scan
Open source · MIT or Apache-2.0 · Node 20+ · macOS, Linux, and Windows