OPEN SOURCE COLLECTOR
The collector, as its own product
Mantis is a single binary you run inside a project. Give it a path and a manifest and it resolves every package you actually pull in, checks each one against the Cohen database, then hands whatever is unknown to the sandbox.
It reads, and only reads. It never installs, never triggers a lifecycle script, and never runs anything it finds. It is open source, and it ships without a scanner subscription.
One binary
Static, with no Node runtime and nothing to install into the project it inspects.
The whole tree
Direct, transitive, and every version actually on disk. Read from the lockfile, not the manifest.
Names only
It sends name, version and the integrity hash already in your lockfile. No source, no paths, no environment.
Exit codes
A line per package, or the whole tree as JSON. Returns non zero when something needs a human.
HOW IT WORKS
What is actually installed in here?
A manifest lists what you asked for. It does not list what arrived. Mantis walks the whole tree, including everything your dependencies brought with them, and gives each package a name, a version and a verdict.
Point
You give it a project path. It locates the manifest and the lockfile itself.
Resolve
The declared list is expanded into the real one, down to every transitive version on disk.
Query
Each name and version goes to the Cohen database, alongside OSV and the npm security holdings.
Queue
Anything with no verdict yet is submitted for a sandbox run, in dependency order.
Report
One line per package to the terminal, or the whole tree as JSON for a build gate.
IN PRACTICE
Two questions, then it works unattended
Mantis asks where the project is and which manifest to trust. Everything after that happens without you.
mantis MANTIS 0.1.0 · dependency collector ? Project path ~/work/checkout-service ? Manifest package.json reading lockfile package-lock.json (v3) resolving tree 1,284 packages · 61 direct · 1,223 transitive querying database 1,284 lookups · 0.9s clean 1,271 review 2 unknown 11 queued for sandbox 11 packages waiting .......... done (3m 41s) REVIEW polymarket-stake-mathss@3.5.2 5 credential reads, 2 outbound connections, 10.5s REVIEW fast-json-parse-native@0.4.1 postinstall spawned curl, wrote outside its own tree wrote mantis-report.json exit 1 · 2 packages need a human
mantis --jsonSkip the terminal report and write the whole tree to stdout, one object per package.
mantis --fail-on reviewReturn a non zero exit code when any package comes back for review. Enough to gate most builds.
mantis --no-waitSubmit the unknown packages and exit immediately. Collect the finished report later.
mantis --public-onlyNever send a private or scoped name to the lookup service. Those packages are reported as skipped.
mantis --depth directOnly the packages you declared yourself. Faster, and much less honest.
MANTIS PRICING
The binary is free. The lookups are metered.
Mantis itself costs nothing and always will. What it queries is the Cohen database, and that is the part any plan meters.
Nothing, on every platform. MIT licensed, no account needed to read or build it, and no telemetry to turn off.
Verdict lookups. A free key covers 100 a day, which is enough for one project. Lookups are unlimited on every paid plan.
Sandbox runs, and only for packages nobody has analysed yet. A project built entirely of known packages costs nothing to check.
QUESTIONS
Before you run it
Does it want the manifest, or the lockfile?
Both, when both exist. The manifest says what you asked for. The lockfile says what you got, which is the list that actually matters. With no lockfile present, Mantis resolves the tree itself and tells you it did.
Will it install or execute anything?
No. Mantis only reads. It never runs an install, never triggers a lifecycle script, and never touches node_modules except to see what is sitting there. Execution happens in the sandbox, on our hardware, never on yours.
What actually leaves my machine?
One string per package, of the form name@version, plus the integrity hash
already published in your lockfile. No source, no file paths, no environment variables,
no manifest, no repository name. The client is open, so you can confirm that rather than
take it on trust.
What happens to a package with no verdict?
It goes into the sandbox queue. Mantis can wait for the result, or exit straight away
with --no-wait and let you collect the finished report later.
Can it gate a build?
Yes. mantis --fail-on review returns a non zero exit code, which is all most
pipelines need. Pair it with --json to keep the artefact.
Does it handle pnpm and yarn?
npm and pnpm lockfiles at first release, with yarn next. Anything it cannot parse is reported as unresolved rather than quietly dropped.