Mustel is a local-first static analysis layer built specifically for AI coding agents like Cursor, Claude Code, and Windsurf. It runs Ruff, Bandit, and pip-audit under the hood, then compresses the output into a single sub-200-char agent_prompt field agents can act on directly - no wasted turns re-reading files or parsing raw linter noise. Dev Mode scans in under 30ms via mtime+size caching; Audit Mode runs deeper checks in CI. Auto-registers as an MCP server across major editors.
Hey everyone 👋
I'm Ameya, one of the makers behind Mustel, along with Raunak Nayak.
We built this because we kept noticing the same thing: our AI coding
agents (Cursor, Claude Code, Windsurf) were burning tons of context
just re-reading files and parsing raw linter output on every save,
and still occasionally missing bugs a plain linter would've caught
instantly, or hallucinating a fix for something that wasn't actually
broken.
So Mustel is our attempt at fixing that layer specifically. It's a
local, non-AI static analysis tool. It runs Ruff, Bandit, and
pip-audit under the hood, dedupes the overlapping findings, and
compresses everything into a single short agent_prompt your AI agent
can act on directly instead of parsing a wall of logs. It also ships
an MCP server, so it auto-registers with Cursor, Windsurf, Claude
Code, and Claude Desktop in one command.
Some numbers from our benchmarks: -34.4% context tokens, -64.9%
output tokens, and it caught real vulnerabilities across our test
projects (75% recall on code it wasn't tuned on).
It's fully open source (MIT), on PyPI (`pip install mustel`), and
still early: 19 stars, actively maintained, lots we want to add next
(more language coverage, smarter rule tuning).
Would genuinely love feedback, bug reports, or just "this rule is
dumb, fix it" type comments. Happy to answer anything about how it
works under the hood too.
Thanks for checking it out 🙏