Show HN: GitHub Actions Aibom Generation Jason-Doyle released version 1.0.0 of the AIBOM GitHub Action, a tool that generates an evidence-classified, deployment-aware AI Bill of Materials from a version-controlled manifest and repository discovery. The action, licensed under Apache 2.0, supports CycloneDX 1.7 and SPDX 3.0.1 compatibility views and is available as a Node 24 GitHub Action and npm library. The tool aims to provide an operational record for AI systems, distinguishing repository presence from runtime use and explicitly documenting unknowns. Generate operational AIBOM Actions About Jason-Doyle /Jason-Doyle Tags 2 Generate an evidence-classified, deployment-aware AI Bill of Materials from a version-controlled manifest, conservative repository discovery and CI context. This repository contains the stable 1.0.0 implementation. The source is licensed under Apache 2.0. The design follows The AI Bill of Materials Is an Operational Record https://jasondoyle.ie/whitepapers/the-ai-bill-of-materials-is-an-operational-record/ . | Capability | Current implementation | |---|---| | Canonical record | Versioned JSON graph containing a system, components, relationships, evidence, assessments, observations, explicit unknowns and build or deployment context. | | Manifest | Optional aibom.yaml or JSON manifest validated with JSON Schema draft 2020-12. | | Repository discovery | Conservative detection of hosted model identifiers, prompt files, local model files, contextual dataset files and known AI-related package declarations. | | Evidence boundaries | Discovery claims repository presence or a source reference. It does not convert those observations into an unsupported claim of runtime use. | | Determinism | Stable sorting and canonical content digests. A fixed generation timestamp produces the same document identifier for the same inputs. | | Validation | JSON Schema validation plus relationship, subject, evidence reference, temporal and canonical digest checks. | | Explicit unknowns | Missing information can record its reason, owner, consequence, compensating control and next review date. | | Semantic diff | Separates added, removed and changed components, relationships, evidence, assessments, observations and unknowns. | | Impact analysis | Traverses reverse relationships to identify the system and components that depend on an affected target. | | Publication views | Filters records by public , internal or restricted sensitivity and removes deployment context from public output. | | CycloneDX | Produces a schema-valid CycloneDX 1.7 compatibility view. | | SPDX | Produces a schema-valid SPDX 3.0.1 JSON-LD compatibility view. | | CLI | Provides init , generate , validate , diff , impact , project and export commands. | | GitHub Action | Bundled Node 24 Action using the same generation code as the CLI. | | npm library | Exports the generator, validation, projection, diff, impact and standard mapping APIs. | | Evidence | Includes a synthetic RAG agent fixture and committed expected outputs generated from a fixed timestamp. | | Area | Current boundary | |---|---| | Complete automatic generation | Repository inspection cannot establish supplier internals, production deployment state or request-level behaviour. | | Ordinary SBOM generation | The current implementation does not replace Syft, cdxgen or another software SBOM generator. An ingestion adapter is planned. | | AIROM ingestion | The canonical model is ready for collector adapters, but direct AIROM ingestion is not yet implemented. | | Cloud discovery | Azure, AWS, Google Cloud, Kubernetes API and model registry collectors are not implemented. | | Runtime tracing | The format can hold controlled observations, but the project does not collect prompts, inputs, outputs or traces. | | Evaluation framework adapters | Assessments can be declared, but no evaluation framework output is imported automatically. | | Vulnerability enrichment | The project does not query OSV, NVD or supplier advisories. | | Attestation service | The Action writes files and outputs. A separate official GitHub Action should perform signing and attestation. | | Compliance certification | The output does not prove safety, fairness, legality, security, quality or regulatory compliance. | | Estate aggregation | Cross-repository storage, search and organisation-wide impact analysis are not implemented. | | Tool | Version | |---|---| | Node.js | 22.12 or newer | | npm | 10 or newer | | GitHub Action runtime | Node 24 | npm install npm run build node dist\cli.js --help To make the command available from the current checkout: npm link aibom --help Create a manifest: node dist\cli.js init C:\path\to\project The generated manifest deliberately records the owner and intended use as explicit unknowns. Replace those unknowns with real declarations when the information is available. Generate the canonical record and standard compatibility views: node dist\cli.js generate C:\path\to\project --output artifacts\aibom.json --cyclonedx-output artifacts\aibom.cdx.json --spdx-output artifacts\aibom.spdx.jsonld Create a public projection only after the system and intended public records are marked sensitivity: public : node dist\cli.js project artifacts\aibom.json --visibility public --output artifacts\aibom.public.json The manifest is the source for information that cannot be inferred safely. Its schema is schemas/manifest.schema.json /Jason-Doyle/operational-aibom/blob/main/schemas/manifest.schema.json . schemaVersion: 0.1.0 system: id: urn:example:system:assistant name: Example assistant owner: Example platform team intendedUse: Answer questions from approved internal documents. sensitivity: internal components: - id: urn:example:model:gpt-4.1 type: hosted-model name: gpt-4.1 supplier: OpenAI sensitivity: internal properties: provider: openai relationships: - from: urn:example:system:assistant type: uses-model to: urn:example:model:gpt-4.1 sensitivity: internal unknowns: - id: urn:example:unknown:training-data class: explicit-unknown subject: urn:example:model:gpt-4.1 field: trainingDataset reason: The hosted supplier does not publish a complete dataset inventory. owner: Example platform team consequence: Dataset-level upstream impact cannot be determined. reviewAfter: 2026-12-01T00:00:00Z sensitivity: internal The complete example is examples/rag-agent/aibom.yaml /Jason-Doyle/operational-aibom/blob/main/examples/rag-agent/aibom.yaml . Discovery is conservative and produces evidence about what was found. It does not prove deployment or runtime use. | Detector | Current behaviour | Claim boundary | |---|---|---| | Hosted models | Finds recognised OpenAI, Anthropic, Google and Mistral identifier patterns in supported source and configuration files. | Records a source reference only. | | Package declarations | Parses package.json and requirements .txt for a focused catalogue of AI SDKs, frameworks and vector database clients. | Records a dependency declaration, not installation or execution. | | Prompt artifacts | Finds files under prompt or prompts directories and names containing .prompt . | Records repository presence and a digest when within the configured size limit. | | Local model artifacts | Finds selected GGUF, safetensors, ONNX, PyTorch, Keras, TensorFlow Lite and pickle-related extensions. | Hashes the file without loading or executing it. | | Datasets | Finds CSV, JSONL, Parquet and Arrow files only when their path indicates data, training or evaluation context. | Records a candidate dataset artifact, not provenance or approval. | | Retrieval indexes | Finds .faiss files. | Records repository presence, not index contents or active deployment. | The scanner: - honours .gitignore by default; - excludes dependency, generated output and build directories; - excludes .env , credential, secret, private key and certificate patterns; - does not copy prompt, dataset or source content into generated records; - limits source inspection and hashing using manifest settings; - records a hash as an explicit unknown when an artifact exceeds maxHashBytes . | Command | Purpose | |---|---| | aibom init directory | Create a starter manifest with explicit unknowns instead of placeholder claims. | | aibom generate directory | Assemble, validate and write the canonical operational record. | | aibom validate