Hi, I built RepoXray (https://github.com/Ra9mirez11/repoxray) to audit repositories before running npm install or attaching AI coding agents.
Why I built it:
- AI slopsquatting: LLMs regularly hallucinate plausible package names. If a package returns 404 on npm today, an attacker can register it tomorrow. RepoXray checks live registry existence, package age (<21 days), OSV.dev advisories (resolving exact package-lock.json versions), and risky postinstall shell/network hooks.
- MCP & .env exposure: Many repos now include .mcp.json or claude_desktop_config.json with plaintext tokens or unpinned
npx -yremote execution, plus .env files readable by coding agents without .aiignore. - Privacy & footprint: The web scanner runs 100% in browser RAM via File System Access / Drag-and-Drop APIs (0 bytes uploaded to any server). The CLI (
npx rxray .) is a 19 KB bundle with 0 runtime dependencies.
It also calculates active LLM context bloat and compiles tailored .aiignore + AGENTS.md guardrails and a remediation prompt. Would appreciate technical feedback on false positives or missing detection rules.
Top comments (1)
Nice scope. Three rules from running a similar check over 10,659 public MCP configs this weekend, in case they help:
0.0.1-securitymeans npm removed a malicious package under that name. Configs still callmcp-server-fetch,-git,-notion,-postgresand-redisthroughnpx; all five had malware advisories this year (MAL-2026-5476 and others). Worth flagging separately from a normal 404 or a vuln.uvx. The npm-style guesses (.../server-fetchunder the official scope) were the most common missing names we saw.@anthropic-ai, while@anthropicbelongs to someone else, and configs still reference@anthropic/...names.One parser note: some configs write
commandas an array instead of a string, which crashed our first pass.