How it works
One service between your package managers and the public registries. Every request is checked against your policy, the package’s age and its scan verdict, and served from Scrutyn’s own copy.
Follow one install
A developer runs npm install @sample/http-kit on mira-laptop. Version 4.1.0 was published two days ago; 4.0.2 has been out for six weeks. Example
Scrutyn checks who is asking
The request carries this device’s token. It identifies the device and its account, and the account’s policy applies: the Lazaretto window, the rules for riskier installs, and any exceptions an admin approved.
Two independent checks decide which versions are listed
Neither check waits for the other. A version can be old enough and still blocked, or scanned clean and still too new. It is listed when it is old enough and not held or blocked, and its file is served only with a clean verdict.
Lazaretto Is it old enough?
- 4.1.0
- Two days old; your window is 7 days. The wait ends on Oct 4.
- 4.0.2
- Six weeks old. Passes.
Lens What is the verdict?
- 4.1.0
- On hold: a new maintainer plus a new install script.
- 4.0.2
- Scanned, no findings. Passes.
Scrutyn computes the version list and
latestfrom what passes, so herelatestis 4.0.2. When the wait for 4.1.0 ends on Oct 4, it still needs an acceptable verdict and your policy’s approval before it is listed.npm picks from the allowed list
You run What happens npm install @sample/http-kitInstalls 4.0.2, the newest version that passes both checks. npm install @sample/http-kit@4.1.0Fails with “No matching version found”. scrutyn whygives the reason.npm ciwith 4.1.0 in the lockfileFails with a 403 that gives the reason (here, held for security review) and the scrutyn whycommand.Any install when no version passes yet Fails, with the reason in the error and in scrutyn why.Python works the same way at the index. When
pip install sample-requests-liteoruv add sample-requests-liteasks Scrutyn’s Python index, files that are too new, held or blocked aren’t listed, andscrutyn whyexplains a missing version. Each client reports that in its own words.Depot delivers the stored copy
- Warm
- 4.0.2 was scanned and stored before. Depot serves that copy, checks its hash on the way out, and never refetches it from npm.
- Cold
- Nobody has asked for a version yet. Lens scans it once and the verdict is shared across every account. The file is served only after a clean verdict. While it is still being analysed, the client is told so and asked to retry later.
- Scanning unavailable
- Versions that already have a verdict keep being served. Versions without one aren’t served until they are scanned. That is a pending scan, not a malicious verdict, and
scrutyn whysays so.
Afterwards, Scrutyn keeps watching
The download is in the activity log. Stored versions are re-evaluated as malware feeds and signals change. If 4.0.2 were later found malicious, it would be blocked and a recall would name mira-laptop and every other device that downloaded it.
Where protection stops
Scrutyn protects the installs that reach it with a device token. Installs that go straight to a public registry, git URLs and downloaded scripts don’t pass through it. A recall tells you what to clean up; it can’t remove files or undo code that already ran. Security model & limits