Catches malware before anyone has reported it. Zero-day detection that runs anywhere, reads anything.

Most engines answer one question: has anyone reported this as malware? Atomdrift reads the artifact and decides at scan time, on your hardware. No list to wait for, no window to sit in, no code leaving your machine. Measured every day against live malware under 48 hours old.

curl -fsSL https://install.atomdrift.org/scan.sh | sh

Apache-2.0 · Linux, macOS, Windows, BSD, illumos · no telemetry · what's different ↓

86%
0-day malware caught
0%
false positives
at -l 25 — the shipped default, untuned

2026-09-26 · 50 live samples, median 12 h old, and 50 known-good.

Caught, per engine identical cohort · most sensitive setting for everyone

Atomdrift
86%
VirusTotal
62%
malcontent
44%
ClamAV
28%
Aikido Malware
12%
GuardDog
10%
Socket
2%
SafeDep
0%
hostile suspicious · a catch, and a false positive out of scope · a miss errored · a miss

What's different architecture, not features

Catches more. 86% of this run's zero-day samples, the highest on this page. Every run published.
No review gap. Someone reports it, an analyst confirms it, the list ships. Hours to days. That window is the attack. Atomdrift decides on first sight.
Shows its work. Every verdict lists the capabilities that drove it, so a false positive is a bug you can read, fix or override with a rule of your own.
Three opinions, one verdict. An expert system, an ML classifier and an optional small local LLM each score the file; the verdict is their consensus. Same file, same verdict, and no single voice — not even a prompt planted in the sample — swings the vote.
Scales like your build farm. Local, CPU only, Linux through illumos and Android, air-gapped if you like. No per-query bill, no rate limit, no upload: every core you add is throughput you own, from one laptop to a worker fleet pulling from a queue.
Keeps up on its own. A reinforcement-learning pipeline turns new samples, threat feeds and published research into roughly 1,000 tested rule updates a day. The engine catches what its rules describe; new rules reach open source weekly and Enriched subscribers live.
Reads 100+ formats. Source in every major language, ELF, PE, Mach-O, firmware, container images, archives, documents, config; packages from 47 registries.
A sensitivity you set. -l is a false-positive budget — benign files flagged per 100 million, calibrated per file type — not “medium sensitivity.”
Built to be embedded. Exit codes, JSON and JSONL, an HTTP service, Rust libraries. Pin tool, rule and model versions and a verdict reproduces a year later. Apache-2.0: ship it inside what you sell, no contract.

Against Socket, Aikido and other reputation services. A registry lookup. 31 of this run's 50 samples weren't registry packages; of the 19 Socket could look up, it had a record for 1. Atomdrift reads the artifact, so this morning's package, a firmware image or your own code gets the same verdict.

Against VirusTotal. Dozens of engines voting on malware the world already knows is a bar we won't clear, and we don't try. On zero-day samples, latency, privacy and convenience we aim to beat it every run, and the chart above is where you check. How it decides →

Detection vs. false positives this run · hover a mark for counts

0% 25% 50% 75% 100% 0% 2% 4% 6% 8% 10% HIGH DETECTION · LOW FALSE POSITIVES Zero-day malware caught · more is better → of 50 malicious packages, none more than 48 hours old False positives · fewer is better ↑ of 50 known-safe packages VirusTotal — 62% caught (31/50), 0 false positives of 50 Atomdrift — 86% caught (43/50), 0 false positives of 50 ClamAV — 28% caught (14/50), 0 false positives of 50 Aikido Malware — 12% caught (6/50), 0 false positives of 50 GuardDog — 10% caught (5/50), 1 false positive of 50 Socket — 2% caught (1/50), 0 false positives of 50 SafeDep — 0% caught (0/50), 0 false positives of 50 VirusTotal 62% Atomdrift 86% ClamAV 28% Aikido Malware 12% GuardDog 10%1 false positive Socket 2% SafeDep 0% 14% malcontent — 44% caught, 7 false positives of 50 malcontent 44%7 false positives

Detection and false-positive chart data

  • VirusTotal: 62% caught (31 of 50), 0 false positives of 50.
  • Atomdrift: 86% caught (43 of 50), 0 false positives of 50.
  • ClamAV: 28% caught (14 of 50), 0 false positives of 50.
  • Aikido Malware: 12% caught (6 of 50), 0 false positives of 50.
  • GuardDog: 10% caught (5 of 50), 1 false positive of 50.
  • Socket: 2% caught (1 of 50), 0 false positives of 50.
  • SafeDep: 0% caught (0 of 50), 0 false positives of 50.
  • malcontent: 44% caught, 7 false positives of 50.

Every previous run last 30 days · a fresh cohort each time

Three things move these lines: a fresh cohort each run, engine updates and changes to our own rules. Most engines swing 60 points over 30 days. Judge us on the worst night, not the best.

False positives last 7 days

5 of 639 known-good artifacts flagged, each linked to its report.

File typeFlagged
macholanguage_server
ooxmlFkSA3WUIlyfC
python_sdistpychrome-0.0.1.tar.gz
vsixmoonbit.moonbit-lang-0.7.2026080402.vsix, tooltitudeteam.tooltitude-1.53.8.vsix

Who it's built for tuned for software written by strangers

Open-source marketplaces

A malicious package goes live and your name is on the download page. Scan at publish time, before the first download, on infrastructure you run: one engine across 47 package ecosystems, and a false-positive budget you can defend to maintainers.

Security vendors

Zero-day coverage in your product without hiring a malware team. Embed the CLI, the HTTP service or the Rust libraries in a SAST, SCA, firmware, container or EDR product; every verdict ships with its evidence. OEM rights and support from the engineers who build it.

Anyone with a machine

Something on the box looks wrong. Point it at a file, a directory, an archive, a running process or the whole host. Nothing leaves the machine.

Want the rules the hour they clear QA, an API, and someone on the hook? That's isotope13.io.

Appendix — samples and methodology all 50, every one linked
09e0477006f00688c24664289791de34fdea4c6bb128ccba07d797a4379f2136 1a3430517417d2ff4acc6634cefe17454b44292d3e9d679e7d6567730dcf4caf 2026-09-24_5c0c64affce3a94c3b475d2e89c2fa6c_amadey_elex_remcos_smoke-loader_stop 2026-09-24_e9aa953f4639b6a6e16e89c392b85523_frostygoop_hive_luca-stealer_salatstealer_sliver 2026-09-25_6b1bb0776f03e64c02cbbcae27b69c6e_elex_remcos_wannacry 2026-09-26_9834d83ff1d2e6316c3c9ebf150ffc5f_elex_wannacry 2026-09-26_d5f95fc02c0d0ff3b1ac09fd2a23199e_elex_mafia_stealc_tofsee 2026-09-26_d7efd05d61089c16383f30ccc55b9cb8_coinminer_elex_glassworm_hawkeye_luca-stealer_magniber_njrat_remcos_zxxz 2419c3af0714d18c36d6ae0ccb024e3df06e4175d473c164964e6bd8ef8eb809 3f862bcccf96d3fddacd8ec067e33021811649e4c7a1af4daa485c843fb4ae5a 4805b541e9180219a83aed48812d7bac0d7b39acc4685f91c76872d346f5098b 52eecd4ab85284814598cd683463115c8e9d909b78b435854ecaea48b3e7c955.unknown 5677fea9b70f6dd500fa8a126acdc76c0392644322755047a60cfc9bd01ff6ee.unknown 5c3de2008c6fe7c6d229bd5db9bb81a2390ad63e6535dc2d28e198bf59e00265 5e006794d4ae40b61484267798f68329b109833c79b4c75c20ea2347ae74d124.unknown 62fde8ed16b29bae5f3ffeaae513867e9b713d9420484e3a49bc8ba3b69ada14 8453b4a9d512b45aa540c6d74686f1f03cb4da0eb5c0300a542b09d7aaeb5ea1 911b276c55e641252b1396a2a442632e3d491ad09329f0536b94103ea90abb68 93c86dbf5402d457b8b82f3c9f1cab911cc1e8e19b8c0c5b4da756cbbed52c49.sh aanijlkbjjfaoelbikialcgadngflkkp.crx adb3b4ef83c45d69f16397f7a02bc7a9c14396207dc27e12466ced40d3e631dc agajdmpablepicdohpbljjfbdfnbmmoo.crx bea71312be331c8cffa99dc028e397b92fb5c8c5702866dced41474bd133c186.exe c6f540a23a527e333b973694b172d167a45393bf90fd143326864ce71318169b cffb511aa1df5fd1f1018696d67fd796ecf8071c43b455c16091e249bcfad47e.bin cfkhijinlhlijflibnhlfdjkllkagloc.crx d-56364130-1079Ef-f.ps1 ddbac79a56e76321024b0d6fd0526a66e939dbfd842e4b28f5a005ac2b593466 pkg:pypi/[email protected] dgcmienmgppcgifalmokjfgkmlopdbcc.crx dpelbehmajbmhlbnoapglodmmbpdogep.crx efgkemfccdeohicpjnpahcjgmidjeaoj.crx pkg:npm/[email protected] gedbdbjhlpkhclnoffpjhejkmdnfcfbh.crx gjmgpnbdklmgljgdjjnakmhmgppmkmml.crx hdljnaoihbdmjehkkeoflflhpnhbflmj.crx hnkbbigamjdjjkcchmlehmimmndhopgb.crx jkldbfkbliaciglclepollcnmmkcbffi.crx magldpiolabolljehhdpklomiphcmbnb.crx pkg:pypi/[email protected] pkg:pypi/[email protected] okkofhfjhogmdagdpokjcfclbgeobhmk.crx powerpc-440fp.elf pkg:pypi/[email protected] SkylersDamageParticleMod1.21-discord-cdn.jar swing-speed-1.0.0.jar tadashi.mips pkg:pypi/[email protected] VirusShare_5d43e23ac3b9f8e5135f73c6f4850aeb virussign.com_0eae47d79f8f6135df1ce0f90d0df790.vir
What “0-day” means here. Every detection sample first appeared in the wild less than 48 hours before the run (median 12 h, youngest 2.3 h): no signature written for it, no reputation, no download history to be anomalous against. Catching malware a feed has already named is a different, easier problem.

How this is scored. Every engine gets the identical cohort at its most sensitive setting, and a skip counts as a miss for everyone — a file nobody scanned is a file that got through. A listing from a contestant's own feed counts only once an independent engine corroborates it. Known-good packages come from the freshest 48 hours of the open-source firehose and are re-checked later: one that turns out to be malware is dropped from that run's false-positive rates, and any engine that flagged it is credited with an early detection. We run this benchmark and we're one of the engines in it, so we publish every sample, verdict and rate.

Engine versions: Atomdrift 2.12.0-beta.2 · ClamAV 1.5.2 · GuardDog 3.2.0 · malcontent 1.26.0 (locally run engines; VirusTotal, Socket, Aikido Malware, SafeDep are hosted services queried live, so they carry no pinned version).

Point it at anything.

Apache-2.0 · runs locally · no account, no index, no gap

curl -fsSL https://install.atomdrift.org/scan.sh | sh