Why: Upload endpoints are part of your attack surface. Pompelmi inspects untrusted files before they hit storage or downstream processors. How: in-process scanning + policy packs (MIME sniffing, archive abuse checks, risky structures) with optional YARA. Works with: Express, Next.js, NestJS, Fastify, Koa (plus adapters in
packages/).
npm install pompelmiRequires Node.js 18+.
- Install:
npm install pompelmi- Create
scan-test.mjs:
import { scanBytes } from "pompelmi";
import { readFileSync } from "node:fs";
const buffer = readFileSync("./package.json");
const report = await scanBytes(buffer, {
filename: "package.json",
mimeType: "application/json",
});
console.log("Verdict:", report.verdict);
console.log("Reasons:", report.reasons);
console.log("Duration:", report.durationMs, "ms");- Run it:
node scan-test.mjsNext: see the demo under examples/demo (upload route) or the docs Getting started guide.
import { scanBytes, STRICT_PUBLIC_UPLOAD } from "pompelmi";
const report = await scanBytes(file.buffer, {
filename: file.originalname,
mimeType: file.mimetype,
policy: STRICT_PUBLIC_UPLOAD,
failClosed: true,
});
if (report.verdict !== "clean") {
return res.status(422).json({
error: "Upload blocked",
verdict: report.verdict,
reasons: report.reasons,
});
}Upload endpoints are part of your attack surface. A renamed executable, a risky PDF, or a hostile archive can look harmless until it is stored, unpacked, served, or parsed by another system.
Pompelmi adds checks at the upload boundary for:
- MIME spoofing and magic-byte mismatches
- Archive abuse such as ZIP bombs, traversal, and deep nesting
- Polyglot files and risky document structures
- Optional YARA-based signature matching
The goal is simple: inspect first, store later.
- Plain Markdown, readable in GitHub and in a terminal
- Fast path first: install, example, then deeper links
- Minimal top-level detail, with docs and examples for everything else
pompelmi@pompelmi/express-middleware@pompelmi/koa-middleware@pompelmi/next-upload@pompelmi/nestjs-integration@pompelmi/fastify-plugin@pompelmi/ui-react@pompelmi/cli
src/core librarypackages/framework adapters and supporting packagesexamples/runnable examplestests/test coveragewebsite/documentation site
pnpm install
pnpm test
pnpm buildLast updated: March 20, 2026
- Awesome JavaScript β sorrycc
- Awesome TypeScript β dzharii
- The Overflow Issue 319: Dogfooding your SDLC β Stack Overflow (2026-03-04)
- Hottest cybersecurity open-source tools of the month: February 2026 β Help Net Security (2026-02-26)
- Bytes #429 β Bytes (2025-10-03)
- Node Weekly Issue 594 β Node Weekly (2025-09-30)
- Det. Eng. Weekly Issue #124 - The DEFCON hangover is real β Detection Engineering (2025-08-13)
- Defense against uploads: Q&A with OSS file scanner, pompelmi β Stack Overflow (2026-02-23)
- Pompelmi: Open-source secure file upload scanning for Node.js β Help Net Security (2026-02-02)
Found 9 mentions. To update, run npm run mentions:update.