AI Bill of Materials
Know the AI in your code,
before it ships.
xgrep inventories every AI building block in your code and emits a CycloneDX 1.6 AI Bill of Materials (AIBOM): the model providers it calls, the agent frameworks it is built on, the inference runtimes it embeds, and the models it requests. It is the inventory AI governance starts from, produced fully offline from a single binary.
$ xgrep sbom --include aibom .provider openai src/agents/chat.py:12 gpt-4oframework langchain src/agents/graph.py:3inference ollama src/local/run.py:27 llama3.1model claude-3-5-sonnet src/review/llm.py:44CycloneDX 1.6 AIBOM · run `xgrep sbom --include aibom --output aibom.cdx.json .` to save it
You can’t govern AI you can’t see.
AI has entered your codebase faster than anyone approved it: a provider SDK here, an agent framework there, a model name hard-coded in a prompt. Governing it, from the EU AI Act to your own model and data-residency policy, starts with knowing what is actually there. An AIBOM is that inventory.
Surveys and manifests miss the AI that teams wired in directly. xgrep reads the code itself, so a provider SDK or a local model that no one declared still shows up in the inventory, with the file and line that uses it.
Which models do we call, and whose? Where does prompt data leave the building? A machine-readable AIBOM feeds AI risk programs such as the NIST AI Risk Management Framework and your EU AI Act obligations with evidence instead of a spreadsheet.
An inventory, not a findings list.
An AIBOM maps what you use, it does not flag it as a problem. A sanctioned model in approved code is listed as an asset, so you get a complete picture rather than a pile of alerts to triage.
Every layer of the AI stack.
xgrep recognizes AI across the whole stack, from the API you call to the model you name, and records each as a typed component in the bill of materials.
Standards-based, across 20 languages.
xgrep emits the AIBOM as a CycloneDX 1.6 ML-BOM (or 1.7 with --spec-version 1.7), so it conforms to the official schema and drops straight into the broader AI-governance and SBOM ecosystem.
AI-library detection ships for 20 languages, matched on the real import or call, so look-alike names that merely share a prefix are rejected:
Learn more about the format in the CycloneDX ML-BOM specification.
Generate an AIBOM.
One command, no build and no network. It runs anywhere xgrep runs, including CI, straight from a single binary.
# Print the AI inventoryxgrep sbom --include aibom .# Write a CycloneDX 1.6 AIBOM to a filexgrep sbom --include aibom --output aibom.cdx.json .# Merge the AI inventory with your dependencies in one documentxgrep sbom --include sca,aibom .
# Run it with npx, no install requirednpx @mondoohq/xgrep sbom --include aibom .