Skip to main content

aibom — Agentic AI Bill of Materials scanner

Discover, inventory, and risk-assess the AI agents, models, tools, and MCP servers in a codebase — without running it. aibom produces an AI-BOM (the AI equivalent of an SBOM) plus posture findings mapped to the OWASP LLM Top 10, and gates your CI on new critical/high findings.

Zero dependencies (Python stdlib only). Part of ScopeSafe.

pip install scopesafe-aibom   # installs the `aibom` command

aibom .            # human-readable report, exit 1 on CRITICAL/HIGH
aibom . --json     # raw AI-BOM JSON (SBOM export)

Languages

  • Python — AST-based, high precision, with cross-file linkage.
  • JavaScript / TypeScript — heuristic detection for the Vercel AI SDK (incl. the v5 gateway/registry idiom), the OpenAI/Anthropic Node SDKs, LangChain.js / LangGraph.js, and Mastra.

What it finds

  • Agents — LangChain, LangGraph, CrewAI, AutoGen, LlamaIndex constructors and graph idioms (StateGraph().compile(), .bind_tools(), factory functions), with cross-file resolution of imported tools/models; JS/TS agent idioms (createReactAgent, Mastra Agent, streamText/generateText tool loops)
  • Models — client instantiation across frameworks + direct SDKs, including config-default model names (model: str = field(default="provider/model"))
  • Tools@tool decorators, Tool() constructors, TOOLS = [...] lists, with capability tags (filesystem/exec/network/delete/...)
  • MCP servers.mcp.json / claude_desktop_config.json, scope classification (broad/scoped/unknown)
  • Posture findings — broadly-scoped MCP servers, exec-capable servers, destructive tools without human-in-the-loop, hardcoded provider keys — each mapped to an OWASP LLM Top 10 category

Continuous monitoring (ScopeSafe platform)

Upload scans to track finding lifecycle (new / recurring / resolved) across your projects and gate PRs:

export AIBOM_TOKEN=aibom_...          # workspace API token from settings
export AIBOM_API_URL=https://api.scopesafe.net

aibom . --upload --project my-repo
# aibom: uploaded scan 3f2a... (project 'my-repo')
#   findings: 1 new, 4 recurring, 2 resolved
#   gate: fail — 1 new high finding(s), e.g. AGENT-001: ...

Exit codes with --upload: 0 gate passed/skipped · 1 gate failed · 2 upload error.

GitHub Action

# .github/workflows/aibom.yml
name: aibom
on: [pull_request]
permissions:
  contents: read
  pull-requests: write   # required for the PR comment
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: sandhipveera/aibom@v0.2.0
        with:
          api-token: ${{ secrets.AIBOM_TOKEN }}   # optional — omit for a local gate scan
          api-url: https://api.scopesafe.net       # optional

On every pull request the action posts a sticky comment with the AI-BOM summary, findings, and a link to track/gate them on ScopeSafe (updated in place on each push, not duplicated). It fails the build on new critical/high risk. Omit api-token/api-url to run a local gate scan with a signup-oriented comment. Set comment: "false" to disable the comment. The comment needs pull-requests: write in the workflow's permissions.

Development

pip install -e ".[dev]"
pytest -q
ruff check src/

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scopesafe_aibom-0.3.0.tar.gz (26.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scopesafe_aibom-0.3.0-py3-none-any.whl (25.3 kB view details)

Uploaded Python 3

File details

Details for the file scopesafe_aibom-0.3.0.tar.gz.

File metadata

  • Download URL: scopesafe_aibom-0.3.0.tar.gz
  • Upload date:
  • Size: 26.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for scopesafe_aibom-0.3.0.tar.gz
Algorithm Hash digest
SHA256 007fba60baa7c9b0dc4712569adaf985b811a4355ddf379feea40c58f58464a8
MD5 d8158ff7c5efb39520a74a52dc0c4185
BLAKE2b-256 a1b333540fc8fc35e2f0a8a6fece02d8da58131bd1ced405f6b294d7c3f77f53

See more details on using hashes here.

Provenance

The following attestation bundles were made for scopesafe_aibom-0.3.0.tar.gz:

Publisher: release.yml on sandhipveera/aibom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file scopesafe_aibom-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scopesafe_aibom-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d19598d7640b1e325c60b5e24945f8135d416507d645e3a02c223ceec153f1e2
MD5 8e14fd3ae57caa7b986ccbafa6358a67
BLAKE2b-256 2410c7809e95b462cff620adc02d21bd18b52374cbde82a5e313d510d42b678b

See more details on using hashes here.

Provenance

The following attestation bundles were made for scopesafe_aibom-0.3.0-py3-none-any.whl:

Publisher: release.yml on sandhipveera/aibom

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page