[agent-bom — AI supply-chain BOM: every agent, MCP server and AI package, and what each one can reach.]
[Build]
[PyPI]
[Python 3.11 through 3.14]
[Apache-2.0 license]
[OpenSSF Scorecard]
AI supply-chain BOM: every agent, MCP server and AI package, and what each one can reach.
For AppSec teams and developers who run Claude Code, Cursor, Codex or any MCP
client: see which agents, MCP servers, tools and packages are installed, which
are vulnerable, and what each one can reach. Local scans need no account.
Quick start ·
Try in browser ·
Laptop → team → org ·
What you get ·
Product tour ·
Docs
Quick start
From the repository you want to inspect, with uv installed:
Open agent-bom-report.html for inventory, findings and fix guidance. Run the
same scan again later and agent-bom prints what changed since the last one.
No MCP configuration in the project? Package findings still apply.
No project handy? Run uvx agent-bom scan --demo --offline for a bundled sample;
Exit 1 is expected there because the sample trips the security gate. A non-zero
exit can mean a security gate or incomplete assessment; inspect the report and
coverage (exit codes, what a scan does and
does not establish,
first-run guide).
[Recorded agent-bom CLI showing sample findings and remediation guidance; no fix executed]
From laptop to team to org
Why an AI supply-chain BOM
Agents and MCP servers ship without an inventory. A CVE in an AI package, a
poisoned tool description or an over-scoped credential matters by what the
agent that loads it can reach. A package SBOM stops at packages; agent-bom
records the chain and keeps the evidence for every edge.
[Sample production AI environment: Document Intake Agent uses a document-tools MCP server that depends on pillow 9.0.0, linked to KEV-listed CVE-2023-4863; Support Triage Agent uses a ticketing MCP server that references TICKETING_API_KEY, which can access a customer ticket archive]
Fictional sample estate. Dashed use, credential and access links are configured
or modeled, not observed at runtime; path analysis covers the collected snapshot only.
The AWS badge describes environment membership; these sample agents have no
recorded execution host or model endpoint.
Agent, hosting and model context.
Findings map to
OWASP LLM Top 10, OWASP Agentic Top 10, OWASP MCP Top 10, MITRE ATLAS, EU AI Act and NIST AI RMF;
control mappings are investigation context, not certification.
What you get
Start with the workflow you need. An individual developer can scan, inspect
findings and verify fixes without a shared control plane or a compliance
workflow. Teams can add retained scans and shared inventory; organizations can
add identity, audit review and governance when needed. These are adoption paths,
not separate editions or permissions. See the
deployment chooser.
What it covers
Generate a BOM from a project, or inspect an agent inventory with sample data:
Model metadata appears when the source supplies it. A BOM is an inventory, not
proof of safe execution or complete collection.
All supported sources and evidence destinations, by category
Product names and logos are trademarks of their owners, used only to identify supported evidence sources. Their use does not imply endorsement or partnership.
Investigate context and exposure
Which agent uses the vulnerable component? What could it reach? What evidence supports that path?
Correlate retained scans by exact, tenant-scoped identities and trace the
recorded blast radius from each agent through its MCP servers to packages,
findings, credentials and data stores. Each relationship keeps its source and
evidence kind. Agent kind, platform, execution host and model links are
separate facts: an environment badge does not say where an agent runs.
From agent to verified fix: select Document Intake Agent → inspect
CVE-2023-4863 (high, KEV-listed) and the evidence on each arrow → take the
proposed remediation →
rescan the changed pin and compare snapshots.
The comparison verifies the changed input, not a running deployment.
Am I affected by a new CVE? Match it against stored scans, including CVEs
only NVD has published. You get affected assets with their patch target,
possibly affected distro packages to verify, and the blast radius
(walkthrough):
From an MCP client, the read-only affected_assets tool (graph and full
profiles) takes the same advisory_id. In CI, run uvx agent-bom db update
before the GitHub Action step (its auto-update-db default only refreshes
feeds older than seven days). To explain a finding to your team,
create an impact brief with affected assets,
source receipts, evidence gaps and the next action.
More sample graphs: package evidence, repository and cloud (3)
One package, three parsed inputs. A repository pin, an image SBOM and a
modeled Kubernetes workload resolve to one [email protected]. The image inventory
and the deployment occurrence stay separate nodes; the advisory receipt is open.
[Repository pin, image inventory and Kubernetes deployment occurrence resolving to one pillow package linked to KEV-listed CVE-2023-4863, with the plain-language relationship evidence open]
Real parsers, modeled infrastructure; a graph path does not prove exploitation.
Repository. Source imports, deployment configuration and CI traced to a
published container and its vulnerable packages:
[Sample repository linking source, deployment configuration and a CI job to a container, vulnerable npm and PyPI packages, their advisories and a CI misconfiguration]
Cloud. A public API gateway into a vulnerable workload, its role and a PII bucket:
[Sample cloud account where a public API gateway exposes a workload with a critical advisory that authenticates as a role permitted to read a PII bucket]
Context, correlation and reachability · Run the reference lab · Reproduce these screenshots
Open the sample graph
Try the demo in your browser: a read-only copy of the UI on
labelled sample data, with no install and no backend. Scans, settings and
sign-in are turned off there. To open the same graph locally:
Run the server command it prints, then open its graph URL. Offline quickstart
skips package-CVE lookup, so zero CVEs is not a clean verdict; use the bundled
demo for advisory-backed findings or populate the advisory database.
Self-host in your environment
Your infrastructure, identity, database, and audit boundary. Start a local
pilot from a published release checkout:
Open http://localhost:3000, then Connections or New Scan. The pilot
binds to loopback and retains state in a Docker volume. For cloud accounts, add a
scoped read-only connection, verify access, then start a scan. Before sharing
access, move to the authenticated deployment.
- Scan with CLI or CI; export findings, SBOMs and reports.
- Centralize inventory, graph evidence, remediation and compliance in your own control plane.
- Enforce policy on selected live MCP tool calls through the proxy or gateway.
Deployment options (5): CLI, local dashboard, Compose pilot, authenticated host, Helm
Operating modes (5): scan, fleet inventory, MCP server, runtime proxy, runtime gateway
Modes can be combined:
Console terms: Sources, Assets, Findings, Issues
- Sources describes recorded evidence: local scans, fleet inventory, cluster
scans, CI/CD, imported evidence, or mixed sources. It does not select a
deployment type or enable runtime enforcement. Demo data marks labelled
sample inventory.
- Assets are inventoried resources; Findings are detections on those
resources; Issues group related findings for investigation or remediation.
- Affected assets counts distinct resources only when that count is
available. One finding may belong to several security areas, so area counts
must not be summed. Repeated observations across scans are shown separately.
Preview and community deployment paths have separate
support boundaries.
Docker pilot guide · Compose with PostgreSQL · Choose a deployment · Enterprise controls · Connect cloud accounts
Integrations
Claude Code and Codex plugins: ask your coding agent instead of reading a report
In Claude Code:
In Codex, run codex plugin marketplace add koda-ai-studio/agent-bom, then
install agent-bom-local from the Plugins Directory. Both plugins run the
pinned agent-bom release locally and send nothing to an agent-bom service.
Add /plugin install agent-bom-guard@agent-bom to block malicious and
typosquatted package installs before Claude runs them.
All skills and their permissions ·
Guard details
Work with your existing tools
Use CLI or GitHub Action, REST API, or MCP; export SARIF, CycloneDX,
SPDX, JSON and HTML. Cloud connectors and fleet sync collect inventory;
proxy and gateway deployments add runtime evidence.
For other MCP clients, run agent-bom mcp server.
Start with eight focused tools in the default profile.
Choose an MCP profile for graph, cloud, runtime or audit work.
Try three investigations: affected agents, exposure receipts and a before/after scan comparison.
Import existing scanner reports without replacing their source evidence.
Check a dependency before installing it with
uvx agent-bom check [email protected] --ecosystem pypi. Add
pre-commit and CI setup for repeated checks.
Proxy, gateway and fleet · Integration capability matrix · MCP client setup · Smithery migration
Trust and evidence
Discovery uses read-only access by default. Explicit disk side-scans create
temporary cloud resources. Missing evidence stays unavailable or partial;
control mappings are not audit certification.
Runtime evidence and MITRE mapping boundaries
Persisted runtime, proxy and gateway activity retains source receipts and
bounded time windows in the graph. Exact inventory references can bind records;
unresolved identities and collection gaps remain explicit. Recorded activity
does not prove execution or grant access. See the runtime evidence boundaries.
MITRE technique associations provide investigation context, not proof of an
attack. ATLAS mapping receipts retain the weakness
association and source catalog hashes; modeled graph paths do not establish
observed execution or effective access.
Measured matcher proof · Product boundaries · Permissions · Threat model · Release verification · Graph data model
Contributing and support
[Open in GitHub Codespaces]
Start with the first PR guide
or a good first issue.
Ask in GitHub Discussions (or Discord), share feedback,
or follow the maintainer path (review owners).
Contributing · Capabilities and roadmap · Support · Report an inaccurate finding · Apache-2.0
Source version: v0.113.2 · Latest release: v0.113.2 · Changelog