lattice-scan
Looks up CVEs that CISA lists as exploited, through the Lattice MCP server, and compares each with what is installed on this machine: packages, snaps, running container images, the kernel. It prints the evidence, including installed version, CISA's dates and required action, and NVD's affected version ranges. A person reads it and decides. It does not detect incidents or decide whether the host is affected, and it never closes a finding by itself.
Standard library only. Python 3.9 or newer.
Install
uv tool install git+https://github.com/namiq-ai/lattice-scan # or: pipx install git+https://github.com/namiq-ai/lattice-scan
It is not on PyPI or in an apt repository yet. When a release exists, its single-file lattice-scan.pyz and SHA256SUMS are on the
releases page: python3 lattice-scan.pyz --cve CVE-....
Use
lattice-scan --cve CVE-2021-44228 --cve CVE-2026-46300 # works without a key
LATTICE_API_KEY=... lattice-scan --discover # a key lists what was added in the last week
lattice-scan --refresh # collect and print the inventory; no network call
lattice-scan list | impact CVE-... | resolve CVE-... --status fixed --proof "..."
lattice-scan --debug --cve CVE-... # every request, response and match decision
Use it as a Claude Code skill
The same tool ships as a plugin whose skill runs it on the machine Claude is running on and reports each match as a candidate for a person to check.
/plugin install lattice-scan --marketplace namiq-ai/lattice-scan
The skill refuses to scan a hosted sandbox, because it would scan the sandbox and not the machine you mean.
What leaves the machine
CVE ids, and the key if you set one. The inventory (package names and versions) is never sent; matching happens locally.
What it writes
~/.lattice-scan/ (or LATTICE_SCAN_DIR; records from the earlier internal name ~/.host-scan are still found), mode 0700: findings, scan, inventory and debug logs. They name this host's installed software. Do not commit,
publish or share them.
What it cannot tell you
- Version ranges are compared as upstream numbers. A distribution can fix a CVE under an unchanged version number, so
in-rangeis a lead, not a finding; the report also shows whether an installed package's own changelog names the CVE (Debian-family hosts only). - Without a key, only
graph_lookupis available and the daily allowance is small. The script waits between calls to stay under it. Getting a key is described at https://namiq.io/lattice/docs#agents; a person does that, and the tool never requests one. - Tested on Debian-family hosts. On rpm and apk hosts the inventory is collected (checked on Fedora and Alpine) but matching and the changelog check are not tested there; the changelog check is Debian-only.
Reporting a problem
A wrong match, a crash, or anything that looks like a security problem: open an issue, or write to contact@namiq.io for anything you would rather not post
publicly. See SECURITY.md.
Licence
MIT. See LICENSE.
Metadata
Release files for lattice-scan 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| lattice_scan-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for lattice_scan-0.1.0-py3-none-any.whl |
Release files / lattice_scan-0.1.0-py3-none-any.whl
| Download URL | lattice_scan-0.1.0-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b27ec5845e36d1bc41069e5d30a3a478a79b770d87c5767615d0ae9cda2c58a8
|
|
BLAKE2b-256 checksum How to use checksums |
cf911ebb77d0115d30dbee80c088b6c8e8349fdad65575ef8fb1c256ad782028
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for lattice-scan 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for lattice_scan-0.1.0-py3-none-any.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.