Skip to content

msaad00/agent-bom

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3,278 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

agent-bom

Build PyPI Docker License OpenSSF Scorecard agent-bom on Glama agent-bom on Smithery

Open security scanner and self-hosted control plane for AI, MCP, and cloud infrastructure.

Discover assets, scan and enrich findings, map blast radius and compliance, and enforce runtime policy—from a local CLI or your self-hosted control plane.

Live demo (read-only sandbox) · Docs · First Run · Self-host · GitHub Action · Docker · Changelog

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.

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.

agent-bom blast-radius drilldown — package to finding to MCP server to agent

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

agent-bom product flow from read-only sources through scanning and graph correlation to reports, the self-hosted control plane, and optional runtime enforcement

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.

Execution paths and persistence
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.

Evidence and accuracy boundaries

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). These captures come from the shipped Next.js routes using explicitly labeled, synthetic demo evidence.

Prioritize an attack path, not just a CVE

Prioritized attack path connecting identity, agent, MCP server, package, and critical finding with evidence export and remediation handoff

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

Findings queue with severity, reachable agents, available fixes, and false-positive review actions

Move from risk to owner-ready work

Prioritized remediation campaign with modeled risk reduction, reach, framework mappings, ownership, and verification state

More control-plane views — posture, runtime, and evidence intake
Risk overview Review runtime decisions
Overview command center with posture grade, unique findings, scan coverage, and operations Runtime gateway KPI rollup and tool-call feed
Connect evidence sources Start a scan
Connections hub across cloud, code, AI, and data sources New Scan evidence workspace with expected outputs, collector plan, and read-only boundary
Full CLI walkthrough — current 0.96.4 console demo

agent-bom terminal demo showing inventory, findings, remediation, and package gate

The demo is intentionally comprehensive, so it is kept collapsed at README display width. Its seeded reqeusts 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/agent-bom@v0.96.4. 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
Local bring-up — Docker Compose in two commands
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.

About

Open security scanner and self-hosted control plane for AI, MCP, and cloud. One evidence model — run scans in your environment, centralize findings, govern in your VPC.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

28 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors