Scan your project in two commands

pip install agent-bom
agent-bom scan .

. means the current project. The local CLI reads it directly and prints inventory, findings, reachable context, and fix-first actions; no control plane is required. Export evidence when another tool needs it: agent-bom scan . -f sarif -o findings.sarif. For scripts, --project . (short form: -p .) is equivalent.

-p/--project expects a directory, not a manifest file. For large monorepos, point it at the workspace or service under review and run one scan per CI workspace; the current CLI does not pretend to provide an arbitrary path-exclude language.

Three ways to use it

Product lane First command Evidence you get Natural next step
Scan and understand risk — repos, images, SBOMs, agent/MCP config, IaC agent-bom scan . inventory, findings, fix priority, graph and standard report formats gate CI or open the local report
Centralize and visualize evidence — fleet, cloud, identity, findings, compliance pip install 'agent-bom[ui]' && agent-bom serve tenant-scoped inventory, attack paths, compliance, jobs and audit self-host with Docker or Helm + Postgres
Enforce runtime behavior — MCP and tool calls agent-bom gateway serve --upstreams upstreams.yaml --bind 127.0.0.1:8090 allow/warn/block decisions and audit events bind policies to agents and upstream MCPs

Discovery and static/cloud scanning are read-only. The self-hosted control plane stores evidence, and runtime modes make explicit policy decisions; those are separate operational boundaries, not all one read-only pipeline.

Who it is for

Team Start here Outcome
Developers and AI builders agent-bom scan . Inventory, findings, blast radius, and fix-first actions before code or agent changes ship
AppSec and security engineering agent-bom scan . -f sarif -o findings.sarif Reachability-aware triage, graph paths, SBOMs, and CI gates
Platform, SRE, and cloud teams agent-bom serve or a shipped Helm profile Customer-controlled API/UI, fleet evidence, Postgres tenancy, and runtime policy
GRC, audit, and governance Compliance exports and control-plane evidence views Framework mappings, signed evidence bundles, audit history, and review context
AI/MCP owners agent-bom mcp server or agent-bom gateway serve ... Tool/server inventory and explicit allow, warn, or block decisions

The product generates security and compliance evidence; it is not a replacement for a GRC system of record, IAM, SIEM, or a complete certification program.

Blast radius links package risk to the MCP servers that load it, exposed tools, credential references, and agents that can reach it. Coverage and boundaries: AI infrastructure scanning · product boundaries · first-run guide.

How it works

Local CLI and CI call the scanner directly and do not require a server. The self-hosted control plane adds an authenticated API and UI, tenant-scoped persistence, fleet jobs, attack paths, compliance, and audit. Gateway and proxy modes enforce live tool traffic at a separate runtime boundary.

Boundary Entry point Service path Persistence or artifact
Local scan CLI, CI, Docker Python scanner and correlation engine console/files; optional SQLite history
Control plane Next.js UI, REST SDK TLS/HTTPS ingress → authentication/tenant/rate-limit/audit middleware → FastAPI services Postgres + RLS for shared deployments; SQLite for a local pilot
Agent interface MCP clients MCP server → shared scanning, finding and graph services the same normalized evidence contracts
Runtime enforcement MCP/tool traffic gateway or proxy → policy, detectors and audit SQLite or Postgres audit records

Neptune is an optional graph backend and ClickHouse is optional analytics. Snowflake supports selected warehouse/store paths with documented parity limits. MCP server mode exposes 76 MCP tools, 6 resources, and 8 workflow prompts over strict arguments. Agent distribution includes a committed Smithery manifest; external catalog liveness is verified separately. The implementation-level diagram and component boundaries live in docs/ARCHITECTURE.md.

agent-bom normalizes advisory and distro evidence into canonical CVE findings with match-confidence tiers:

distro_confirmed > osv_range > osv_ecosystem > unfixed_distro > nvd_cpe_candidate

Distro-confirmed findings are treated as confirmed. Optional NVD CPE candidate matching widens long-tail OS/vendor software coverage, but remains review-grade and off by default.

NVD key model. End users do not need an NVD API key. CVE/CPE enrichment ships through the distributed vulnerability database. NVD_API_KEY is only an optional self-hosted freshness knob for operators rebuilding or refreshing the database.

Matching mechanics and release evidence: vulnerability matching · scanner accuracy baseline · graph contract · architecture deep dive

See the product

Try the live demo (read-only sandbox; if unreachable, run uvx agent-bom scan --demo --offline). These captures come from the shipped Next.js routes using explicitly labeled, synthetic demo evidence.

Prioritize an attack path, not just a CVE

The investigation lens connects identity and agent reachability to the MCP server, package, and finding that create the exposure. Operators can export the graph evidence or hand the path directly to remediation.

See every finding and its reach

Move from risk to owner-ready work

Risk overview Review runtime decisions
Connect evidence sources Start a scan

The demo is intentionally comprehensive, so it is kept collapsed at README display width. Its seeded requests typosquat produces an expected non-zero security-gate exit; that is a demonstrated finding, not a failed recording.

Full capture list and reproducible commands: docs/CAPTURE.md.

Run it anywhere

The surfaces share normalized finding and graph contracts while keeping their execution and authentication boundaries explicit. Pick the entry point that matches your role:

Need Surface First action Main artifact
Scan a repo, image, or local agent config CLI / CI agent-bom scan . (or the GitHub Action) JSON, SARIF, SBOM, HTML
Connect cloud and data-estate evidence Cloud connectors agent-bom connect aws then agent-bom cloud scan assets, CIS findings, graph edges
Review posture as a team API + dashboard pip install 'agent-bom[ui]' && agent-bom serve findings, graph, audit, compliance
Give agents security tools MCP server agent-bom mcp server strict MCP tool responses
Govern runtime tool calls Proxy / gateway agent-bom gateway serve --upstreams upstreams.yaml --bind 127.0.0.1:8090 allow/warn/block audit trail
Package evidence for audit Reports / exports agent-bom scan . -f sarif -o findings.sarif SARIF, CycloneDX, SPDX, HTML/PDF, compliance bundle

Beyond the basics — agent-bom graph (multi-hop exposure paths), agent-bom remediate -p . (advisory fix plan), agent-bom identity credential-expiry, agent-bom cost forecast, and the CI gate uses: msaad00/[email protected]. Full command map: docs/CLI_MAP.md · role routing: docs/START_HERE.md · all entry points and auth boundaries: docs/PRODUCT_MAP.md

Deploy targets — you run the control plane in your own boundary (no managed public SaaS in this repo yet), fastest → most-managed:

  • Docker Compose — fastest; one file, loopback by default → pilot compose
  • Helm / Kubernetes — cluster-native chart → chart
  • EKS — opinionated Terraform module → module
  • CloudFormation — one-click AWS stack → templates
  • Snowflake (SPCS native app) — host entirely inside your own Snowflake account → install guide
curl -fsSL https://raw.githubusercontent.com/msaad00/agent-bom/main/deploy/docker-compose.pilot.yml -o docker-compose.pilot.yml
docker compose -f docker-compose.pilot.yml up -d
# Dashboard -> http://localhost:3000

Pilot compose binds to 127.0.0.1 with loopback CORS only. Use docker-compose.platform.yml or docs/HOSTED_POC.md before sharing a link. Full guides: Deploy anywhere.

Connected control plane

For brokered control-plane sources, connect once, then scheduled and operator actions use the stored connection reference—not a fresh credential prompt. Standalone CLI scans remain independent: they read local files or explicitly configured provider credentials and do not require a control-plane connection.

  • Humans sign in via OAuth / OIDC / SAML SSO (standard providers plus a Snowflake OAuth authorization-code + PKCE flow), with SCIM for user and group provisioning (src/agent_bom/api/{oidc,saml,scim}.py, snowflake_oauth.py).
  • Agents / CI authenticate with scoped API keys / tokens.
  • Sources are onboarded once through read-only, agentless, brokered connectors — a single least-privilege managed role per source with short-lived, brokered credentials (e.g. AWS sts:AssumeRole); connection secrets are write-only (encrypted at rest, never read back).

Application-layer authentication, tenant isolation, rate limits, and audit are enforced in middleware for UI and API/SDK requests. Non-loopback deployments terminate HTTPS/TLS at Caddy, an ingress, an ALB, or an equivalent trusted edge; the API and UI remain on loopback or a private network. MCP server and gateway/proxy modes enforce their own documented transport authentication and policy boundaries; none receives a privileged UI-only path.

Cloud connectors are opt-in, default-off, and read no secret values. agent-bom connect <provider> prints the grant template and enable flag without network I/O until you opt in:

Cloud Enable Scan
AWS AGENT_BOM_AWS_INVENTORY=1 agent-bom cloud aws
Azure AGENT_BOM_AZURE_INVENTORY=1 agent-bom cloud azure
GCP AGENT_BOM_GCP_INVENTORY=1 agent-bom cloud gcp
Snowflake SSO or key-pair auth pip install 'agent-bom[snowflake]' then agent-bom scan --snowflake

Snowflake auth defaults to browser SSO (externalbrowser); use SNOWFLAKE_AUTHENTICATOR=snowflake_jwt with SNOWFLAKE_PRIVATE_KEY_PATH for CI. Setup and the exact grant per provider: docs/CLOUD_CONNECT.md · intake map: docs/DATA_SOURCES.md · enterprise auth surface: docs/ENTERPRISE.md

Trust

  • Read-only discovery by default; no mandatory telemetry.
  • Credential values redacted; env names preserved for explainable exposure paths.
  • Exports: JSON, SARIF, CycloneDX, SPDX, Parquet, CSV, Markdown, HTML, PDF, compliance bundles.
  • Tenant scope, auth boundaries, and audit evidence on API/runtime paths.

Threat model · Pentest readiness · Python client · Go client · Release verification · MCP security model

Contributing

Contributions are welcome. Start with CONTRIBUTING.md, .agents/AGENTS.md, and the open issues.

License: Apache-2.0.