npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

septr

v0.1.30

Published

Security middleware + CLI for vibe-coded apps. Runtime protection, source scanning, and URL probing.

Readme

septr — runtime security middleware for Node.js

Protects Express, Next.js, Hono, and Fastify apps at runtime: secrets leaking in responses, BOLA/IDOR, missing auth, business-logic tampering, PII, prompt injection, SSRF, and missing rate limits. Auto-verified against the Septr backend, with per-engine SOC 2 evidence for your dashboard.

Install

npm install septr

Add your key to .env:

SEPTR_API_KEY=septr_live_...

Telemetry and auto-verification are on by default whenever SEPTR_API_KEY is set. Set telemetry: false to run detection only locally.

Express

import { createSeptr } from "septr/express"

app.use(createSeptr({ apiKey: process.env.SEPTR_API_KEY }))

Next.js

Create middleware.ts (or src/middleware.ts) at the project root:

import { createSeptr } from "septr/nextjs"

export const middleware = createSeptr({ apiKey: process.env.SEPTR_API_KEY })

export const config = {
  matcher: ["/((?!_next/static|_next/image|favicon.ico).*)"],
}

Hono

import { createSeptr } from "septr/hono"

app.use("*", createSeptr({ apiKey: process.env.SEPTR_API_KEY }))

Fastify

import { createSeptr } from "septr/fastify"

const shield = createSeptr({ apiKey: process.env.SEPTR_API_KEY })
fastify.addHook("onRequest", shield.onRequest)
fastify.addHook("preHandler", shield.preHandler)
fastify.addHook("preSerialization", shield.preSerialization)

Config

| Option | Type | Default | Description | |---|---|---|---| | apiKey | string | env SEPTR_API_KEY | Backend API key | | telemetry | boolean | true | Send detections to the dashboard | | telemetryUrl | string | https://app.septr.dev/v1/events | Telemetry endpoint | | projectId | string | derived from key | Project id; auto-read from septr_live_* keys | | strictMode | boolean | false | Block instead of detect | | secrets | boolean | true | Secret/PII detection + response scrubbing | | bola | boolean | true | BOLA/IDOR detection | | rateLimit | boolean | true | Per-route rate limiting | | inputSanitize | boolean | true | SQLi/XSS/NoSQLi sanitization | | ssrf | boolean | true | SSRF heuristics | | promptInjection | boolean | true | Prompt-injection shielding | | aiRateLimit | boolean | true | Rate limiting for AI endpoints | | tamper | boolean | true | Business-logic tamper detection | | missingAuth | boolean | true | Missing-auth detection | | stripFields | string[] | [] | Fields to strip from responses | | maxResponseScanBytes | number | 1000000 | Max response size scanned (chars); larger responses stream through unscanned | | maxRequestInspectBytes | number | 256000 | Max request body inspected (chars); larger bodies stream through untouched | | engineFailureThreshold | number | 3 | Consecutive engine failures before the breaker skips that engine | | engineBudgetMs | number | 50 | Per-engine time budget; slower calls count as failures | | disabled | boolean | false | Emergency bypass — pass every request through untouched | | securityHeaders | boolean | true | Report responses missing security headers | | remoteConfig | boolean | true | Poll backend for live config |

Source scanning (CLI)

npx septr scan .            # scan the current directory
npx septr scan . --json    # machine-readable findings
npx septr scan . --exclude "src/__tests__/**"   # skip paths (repeatable)

Exclude paths with a committed .septrignore file (gitignore-style patterns, anchored to the directory it lives in; nested files are honored when scanning a parent directory) — exclusions are explicit and auditable. Test fixture payloads (__tests__/benchmark/**, *-payloads.*, fixtures/**, at any depth) are skipped by default; everything else, including tests, is scanned. The summary line separates files scanned, files ignored by rules, and entries skipped entirely (dependency/build dirs, hidden files, non-source files).

Deployed-app scanning (CLI)

npx septr scan https://your-app.example.com

Probes a deployed app for exposed secrets, sensitive paths, and missing security headers. Fetches up to 30 JS bundles referenced by the page and scans them for leaked keys. Checks /package.json and /requirements.txt for secrets. Reports missing HSTS, CSP, and clickjack protection headers.

Environment variables

  • SEPTR_API_KEY — your project key
  • SEPTR_SILENCE_ENV_WARNING — set to 1 to silence the fail-loud missing-key warning
  • SEPTR_REMOTE_CONFIG=false — disable remote config polling

Telemetry endpoint overrides go in config (telemetryUrl), not an env var.

License

MIT