Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
airom
command
Command airom is the AIROM CLI entrypoint.
|
Command airom is the AIROM CLI entrypoint. |
|
internal
|
|
|
app
Package app is the composition root — the ONLY wiring site in the codebase (ARCHITECTURE.md §12, decision D4).
|
Package app is the composition root — the ONLY wiring site in the codebase (ARCHITECTURE.md §12, decision D4). |
|
assemble
Package assemble is the heart of the pipeline (ARCHITECTURE.md §9): the single-threaded, deterministic stage that turns detector claims into the canonical component graph.
|
Package assemble is the heart of the pipeline (ARCHITECTURE.md §9): the single-threaded, deterministic stage that turns detector claims into the canonical component graph. |
|
cache
Package cache implements the bbolt-backed scan cache (ARCHITECTURE.md §10, decision D10).
|
Package cache implements the bbolt-backed scan cache (ARCHITECTURE.md §10, decision D10). |
|
classify
Package classify implements file classification (ARCHITECTURE.md §3, §4): language identification from paths, binary sniffing over the shared header sample, and the magic-byte registry that routes model files to their header parsers.
|
Package classify implements file classification (ARCHITECTURE.md §3, §4): language identification from paths, binary sniffing over the shared header sample, and the magic-byte registry that routes model files to their header parsers. |
|
cli
Package cli implements the airom command tree, configuration layering, and exit-code policy (ARCHITECTURE.md §12, docs/cli.md).
|
Package cli implements the airom command tree, configuration layering, and exit-code policy (ARCHITECTURE.md §12, docs/cli.md). |
|
compliance
Package compliance maps a named AI-governance framework's controls onto an assembled AIROM inventory.
|
Package compliance maps a named AI-governance framework's controls onto an assembled AIROM inventory. |
|
conformance
Package conformance is AIROM's output-format conformance suite: a permanent, CI-enforced check that every writer's bytes satisfy the external contract the format claims to speak (docs/mapping.md).
|
Package conformance is AIROM's output-format conformance suite: a permanent, CI-enforced check that every writer's bytes satisfy the external contract the format claims to speak (docs/mapping.md). |
|
detectors/all
Package all holds the GENERATED registration list of built-in detectors (ARCHITECTURE.md §6.2): no hand-edited central file for every detector PR to conflict on.
|
Package all holds the GENERATED registration list of built-in detectors (ARCHITECTURE.md §6.2): no hand-edited central file for every detector PR to conflict on. |
|
detectors/dataset
Package dataset detects dataset files by format signature (ARCHITECTURE.md §4, §17): CSV and JSONL by structural sniffing of the shared header sample, Parquet and Arrow by magic bytes — emitting KindDataset claims that phase-2 stitching can attach to models via TRAINED_ON edges (the SPDX trainedOn mapping).
|
Package dataset detects dataset files by format signature (ARCHITECTURE.md §4, §17): CSV and JSONL by structural sniffing of the shared header sample, Parquet and Arrow by magic bytes — emitting KindDataset claims that phase-2 stitching can attach to models via TRAINED_ON edges (the SPDX trainedOn mapping). |
|
detectors/frozen
Package frozen reads Python applications that were frozen into a single executable, where the usual evidence does not exist on disk.
|
Package frozen reads Python applications that were frozen into a single executable, where the usual evidence does not exist on disk. |
|
detectors/gosrc
Package gosrc detects AI usage in Go source with the stdlib go/parser (ARCHITECTURE.md §6.4, decision D1): exact AST analysis of import paths, SDK call sites, and model-name literals — Go is the one language where a real parser is free, so it gets one instead of the region-lexer + regex path used elsewhere.
|
Package gosrc detects AI usage in Go source with the stdlib go/parser (ARCHITECTURE.md §6.4, decision D1): exact AST analysis of import paths, SDK call sites, and model-name literals — Go is the one language where a real parser is free, so it gets one instead of the region-lexer + regex path used elsewhere. |
|
detectors/infra
Package infra detects AI serving-infrastructure signals in deployment artifacts (ARCHITECTURE.md §4, §17): Dockerfiles (AI base images such as ollama or vllm, model-pulling build steps), docker-compose services, and Kubernetes manifests — emitting KindInfra and KindService claims eligible for SERVED_BY and CONFIGURES edges, using MethodConfig evidence.
|
Package infra detects AI serving-infrastructure signals in deployment artifacts (ARCHITECTURE.md §4, §17): Dockerfiles (AI base images such as ollama or vllm, model-pulling build steps), docker-compose services, and Kubernetes manifests — emitting KindInfra and KindService claims eligible for SERVED_BY and CONFIGURES edges, using MethodConfig evidence. |
|
detectors/manifest
Package manifest detects AI frameworks and SDKs declared in package manifests and lockfiles (ARCHITECTURE.md §4, §17): requirements.txt, pyproject.toml, package.json, go.mod, pom.xml, Gradle lockfiles, Cargo.toml, and csproj, emitting framework and library claims with declared versions.
|
Package manifest detects AI frameworks and SDKs declared in package manifests and lockfiles (ARCHITECTURE.md §4, §17): requirements.txt, pyproject.toml, package.json, go.mod, pom.xml, Gradle lockfiles, Cargo.toml, and csproj, emitting framework and library claims with declared versions. |
|
detectors/modelfile
Package modelfile detects local model weight files by magic bytes and header-only parsing — core IP (ARCHITECTURE.md §4, §17): GGUF, safetensors, ONNX, torch zips (with static pickle opcode walking), TensorFlow SavedModel, TensorRT engines, TFLite, and HDF5.
|
Package modelfile detects local model weight files by magic bytes and header-only parsing — core IP (ARCHITECTURE.md §4, §17): GGUF, safetensors, ONNX, torch zips (with static pickle opcode walking), TensorFlow SavedModel, TensorRT engines, TFLite, and HDF5. |
|
detectors/modelfilex
Package modelfilex implements binary "local model file" detectors for model serialization formats whose recognition needs more than a magic-byte gate: PyTorch archives (with a static, non-executing pickle opcode walk that flags dangerous imports), TensorFlow SavedModel protobufs, TFLite flatbuffers, Keras/HDF5 weight stores, and opaque TensorRT engines.
|
Package modelfilex implements binary "local model file" detectors for model serialization formats whose recognition needs more than a magic-byte gate: PyTorch archives (with a static, non-executing pickle opcode walk that flags dangerous imports), TensorFlow SavedModel protobufs, TFLite flatbuffers, Keras/HDF5 weight stores, and opaque TensorRT engines. |
|
detectors/project
Package project holds the built-in phase-2 ProjectDetectors (ARCHITECTURE.md §3, §17) — cross-file logic the streaming phase cannot express: hfdir assembles a HuggingFace model directory (config.json + weights) into ONE component; adapterlink turns adapter_config.json into DERIVED_FROM base-model lineage; configbind attaches separated generation configs to the model they name via CONFIGURES edges under the refusal-first ambiguity policy (§9.5) — never a guessed edge; raglink stitches retriever, store, and embedder findings into a rag-pipeline composite with CONTAINS/QUERIES/EMBEDS_WITH edges; lockjoin joins manifests with their lockfiles.
|
Package project holds the built-in phase-2 ProjectDetectors (ARCHITECTURE.md §3, §17) — cross-file logic the streaming phase cannot express: hfdir assembles a HuggingFace model directory (config.json + weights) into ONE component; adapterlink turns adapter_config.json into DERIVED_FROM base-model lineage; configbind attaches separated generation configs to the model they name via CONFIGURES edges under the refusal-first ambiguity policy (§9.5) — never a guessed edge; raglink stitches retriever, store, and embedder findings into a rag-pipeline composite with CONTAINS/QUERIES/EMBEDS_WITH edges; lockjoin joins manifests with their lockfiles. |
|
detectors/prompt
Package prompt detects prompt assets stored as standalone files (ARCHITECTURE.md §4, §17): .txt/.md/.yaml/.jinja content judged by template heuristics — placeholder syntax, role markers, instruction shape — plus prompt-suggestive path signals, emitting KindPrompt claims that can receive PROMPTED_BY edges.
|
Package prompt detects prompt assets stored as standalone files (ARCHITECTURE.md §4, §17): .txt/.md/.yaml/.jinja content judged by template heuristics — placeholder syntax, role markers, instruction shape — plus prompt-suggestive path signals, emitting KindPrompt claims that can receive PROMPTED_BY edges. |
|
diff
Package diff compares two native AIBOM documents (schemaVersion "1") and reports what changed between them: components added, removed, and changed, keyed by the stable component ID (ARCHITECTURE.md §9.2).
|
Package diff compares two native AIBOM documents (schemaVersion "1") and reports what changed between them: components added, removed, and changed, keyed by the stable component ID (ARCHITECTURE.md §9.2). |
|
dispatch
Package dispatch routes classified files to interested detectors through the compiled selector index (ARCHITECTURE.md §6.1) and adapts the internal read-once file context to the public SDK's detect.File.
|
Package dispatch routes classified files to interested detectors through the compiled selector index (ARCHITECTURE.md §6.1) and adapts the internal read-once file context to the public SDK's detect.File. |
|
engine
Package engine drives the two-phase scan pipeline (ARCHITECTURE.md §3, §8): phase 1 streams files from exactly one walker/producer through a bounded task channel into a worker pool where all matched detectors run SEQUENTIALLY on one shared buffer, with exactly one collector goroutine owning all mutable aggregation state — no locks.
|
Package engine drives the two-phase scan pipeline (ARCHITECTURE.md §3, §8): phase 1 streams files from exactly one walker/producer through a bounded task channel into a worker pool where all matched detectors run SEQUENTIALLY on one shared buffer, with exactly one collector goroutine owning all mutable aggregation state — no locks. |
|
eol
Package eol is the hosted-model end-of-life overlay: it matches the AI models AIROM inventoried against a curated catalog of provider retirement announcements and attaches a dated, sourced Lifecycle to them.
|
Package eol is the hosted-model end-of-life overlay: it matches the AI models AIROM inventoried against a curated catalog of provider retirement announcements and attaches a dated, sourced Lifecycle to them. |
|
filectx
Package filectx implements the read-once file access contract (ARCHITECTURE.md §8, invariant P1): each file's bytes are read from the source at most once, and every interested detector shares that one buffer — detectors for a file run sequentially in one worker, so no buffer synchronization exists or is needed.
|
Package filectx implements the read-once file access contract (ARCHITECTURE.md §8, invariant P1): each file's bytes are read from the source at most once, and every interested detector shares that one buffer — detectors for a file run sequentially in one worker, so no buffer synchronization exists or is needed. |
|
metrics
Package metrics makes profiling a product feature (ARCHITECTURE.md §14): ScanStats accumulates files walked and skipped, bytes read versus bytes in tree, cache hit rates, per-detector nanoseconds and invocation counts, and the selection explanation of which --select expression enabled which detector (§6.2) — embedded into the Inventory under --stats, so "what did the scanner skip" is always answerable and detector #217 is triaged with data, not guesses.
|
Package metrics makes profiling a product feature (ARCHITECTURE.md §14): ScanStats accumulates files walked and skipped, bytes read versus bytes in tree, cache hit rates, per-detector nanoseconds and invocation counts, and the selection explanation of which --select expression enabled which detector (§6.2) — embedded into the Inventory under --stats, so "what did the scanner skip" is always answerable and detector #217 is triaged with data, not guesses. |
|
osv
Package osv is the opt-in CVE overlay: it matches the AI packages AIROM inventoried (by their purl) against the OSV.dev advisory database and attaches the resulting CVEs to those components.
|
Package osv is the opt-in CVE overlay: it matches the AI packages AIROM inventoried (by their purl) against the OSV.dev advisory database and attaches the resulting CVEs to those components. |
|
perf
Package perf is AIROM's performance-regression harness (ARCHITECTURE.md invariant P2: peak memory is a function of CONFIGURATION, never of input size).
|
Package perf is AIROM's performance-regression harness (ARCHITECTURE.md invariant P2: peak memory is a function of CONFIGURATION, never of input size). |
|
ruleengine
Package ruleengine implements the declarative rule-pack compiler and the generic rule detector (ARCHITECTURE.md §6.3, docs/rule-schema.md — this package implements exactly that contract).
|
Package ruleengine implements the declarative rule-pack compiler and the generic rule detector (ARCHITECTURE.md §6.3, docs/rule-schema.md — this package implements exactly that contract). |
|
ruleengine/lexer
Package lexer splits source text into code / comment / string regions for the rule engine (ARCHITECTURE.md §6.4, decision D1; docs/rule-schema.md "regions").
|
Package lexer splits source text into code / comment / string regions for the rule engine (ARCHITECTURE.md §6.4, decision D1; docs/rule-schema.md "regions"). |
|
ruleengine/ruletest
Package ruletest runs rule packs against annotated fixtures — the shared engine behind `airom rules test`/`lint` and the embedded-pack CI test (docs/rule-schema.md "Fixtures and the lint contract").
|
Package ruletest runs rule packs against annotated fixtures — the shared engine behind `airom rules test`/`lint` and the embedded-pack CI test (docs/rule-schema.md "Fixtures and the lint contract"). |
|
rulesync
Package rulesync fetches, verifies, and caches a signed rule-pack bundle from the airomhq/airom-rules release channel, so rules can move faster than the airom binary without the user installing a second tool (Model B).
|
Package rulesync fetches, verifies, and caches a signed rule-pack bundle from the airomhq/airom-rules release channel, so rules can move faster than the airom binary without the user installing a second tool (Model B). |
|
source
Package source defines the Source abstraction over scan targets (ARCHITECTURE.md §7): a Source couples a Walker (push-style, ignore-aware enumeration feeding phase 1), a Resolver (pull-style access for phase-2 project detectors), content identity (image digest, git HEAD, dir realpath), layer IDs for blob-cache granularity, and SourceInfo provenance.
|
Package source defines the Source abstraction over scan targets (ARCHITECTURE.md §7): a Source couples a Walker (push-style, ignore-aware enumeration feeding phase 1), a Resolver (pull-style access for phase-2 project detectors), content identity (image digest, git HEAD, dir realpath), layer IDs for blob-cache granularity, and SourceInfo provenance. |
|
source/dirsource
Package dirsource implements the filesystem source (ARCHITECTURE.md §7): streaming enumeration with a nested per-directory .gitignore/.airomignore stack, non-overridable default skips, user --ignore globs, and an ignore-honoring resolver for the phase-2 pull API.
|
Package dirsource implements the filesystem source (ARCHITECTURE.md §7): streaming enumeration with a nested per-directory .gitignore/.airomignore stack, non-overridable default skips, user --ignore globs, and an ignore-honoring resolver for the phase-2 pull API. |
|
source/gitsource
Package gitsource implements the remote-repository Source (ARCHITECTURE.md §7): git clone --depth=1 --single-branch --no-tags via an exec-git fast path when a git binary is available, with a go-git v6 fallback (decision D14: go-git's shallow-clone inefficiency is documented; established scanners shell out too).
|
Package gitsource implements the remote-repository Source (ARCHITECTURE.md §7): git clone --depth=1 --single-branch --no-tags via an exec-git fast path when a git binary is available, with a go-git v6 fallback (decision D14: go-git's shallow-clone inefficiency is documented; established scanners shell out too). |
|
source/imagesource
Package imagesource implements the container-image Source (ARCHITECTURE.md §7, decision D11): go-containerregistry resolves a v1.Image through the remote → daemon → tarball → OCI-layout fallback chain, and the squashed tar from mutate.Extract is streamed exactly once.
|
Package imagesource implements the container-image Source (ARCHITECTURE.md §7, decision D11): go-containerregistry resolves a v1.Image through the remote → daemon → tarball → OCI-layout fallback chain, and the squashed tar from mutate.Extract is streamed exactly once. |
|
source/k8ssource
Package k8ssource implements the Kubernetes Source (ARCHITECTURE.md §7).
|
Package k8ssource implements the Kubernetes Source (ARCHITECTURE.md §7). |
|
tui
Package tui holds AIROM's terminal presentation primitives: TTY detection, ANSI styling, and the scan progress indicator.
|
Package tui holds AIROM's terminal presentation primitives: TTY detection, ANSI styling, and the scan progress indicator. |
|
writer
Package writer defines the output stage (ARCHITECTURE.md §11): a Writer is a pure function from *airom.Inventory to bytes (invariant P5) that never invents, drops, or re-derives data — every format is a projection of the same assembled graph.
|
Package writer defines the output stage (ARCHITECTURE.md §11): a Writer is a pure function from *airom.Inventory to bytes (invariant P5) that never invents, drops, or re-derives data — every format is a projection of the same assembled graph. |
|
writer/cdx
Package cdx projects the inventory to CycloneDX ML-BOM via CycloneDX/cyclonedx-go (ARCHITECTURE.md §11, decision D16) — 1.6 by default, 1.7 via --cdx-version (the modelCard shape is identical in both).
|
Package cdx projects the inventory to CycloneDX ML-BOM via CycloneDX/cyclonedx-go (ARCHITECTURE.md §11, decision D16) — 1.6 by default, 1.7 via --cdx-version (the modelCard shape is identical in both). |
|
writer/compliancew
Package compliancew writes the human-readable compliance report (docs/compliance.md): each framework's controls as met / gap / manual, with the component evidence behind every verdict and a per-framework summary.
|
Package compliancew writes the human-readable compliance report (docs/compliance.md): each framework's controls as met / gap / manual, with the component evidence behind every verdict and a per-framework summary. |
|
writer/nativejson
Package nativejson emits AIROM's native JSON format (ARCHITECTURE.md §11): the lossless, round-trip reference serialization of the Inventory graph, versioned from release one (schemaVersion "1") with its JSON Schema published per release under schemas/ and enforced by conformance and fuzz round-trip tests in CI (§14).
|
Package nativejson emits AIROM's native JSON format (ARCHITECTURE.md §11): the lossless, round-trip reference serialization of the Inventory graph, versioned from release one (schemaVersion "1") with its JSON Schema published per release under schemas/ and enforced by conformance and fuzz round-trip tests in CI (§14). |
|
writer/sarifw
Package sarifw projects the inventory to SARIF 2.1.0 for GitHub Code Scanning (ARCHITECTURE.md §11, docs/mapping.md §3/§7).
|
Package sarifw projects the inventory to SARIF 2.1.0 for GitHub Code Scanning (ARCHITECTURE.md §11, docs/mapping.md §3/§7). |
|
writer/tablew
Package tablew renders the human-facing terminal summary (ARCHITECTURE.md §11): a boxed scan-summary panel followed by a box-drawn component table with columns KIND | NAME | VERSION | PROVIDER | CONF | LOCATION (the primary path:line sighting) | EVIDENCE (rendered "n occ"), plus RISK | FLAGS when a scan surfaces an artifact risk.
|
Package tablew renders the human-facing terminal summary (ARCHITECTURE.md §11): a boxed scan-summary panel followed by a box-drawn component table with columns KIND | NAME | VERSION | PROVIDER | CONF | LOCATION (the primary path:line sighting) | EVIDENCE (rendered "n occ"), plus RISK | FLAGS when a scan surfaces an artifact risk. |
|
writer/writertest
Package writertest builds a representative Inventory shared by the writer tests and the mapping round-trip test — one fixture exercising every kind, tri-state, evidence shape, relationship type, and honesty record, so a single golden per format proves the whole projection.
|
Package writertest builds a representative Inventory shared by the writer tests and the mapping round-trip test — one fixture exercising every kind, tri-state, evidence shape, relationship type, and honesty record, so a single golden per format proves the whole projection. |
|
writer/yamlw
Package yamlw renders the native inventory model as YAML through yaml.v3 with stable key order (ARCHITECTURE.md §11) — the same lossless content as the native JSON writer, in a form suited to human review.
|
Package yamlw renders the native inventory model as YAML through yaml.v3 with stable key order (ARCHITECTURE.md §11) — the same lossless content as the native JSON writer, in a form suited to human review. |
|
xio
Package xio holds the bounded-I/O primitives behind the bounded-everything invariant (ARCHITECTURE.md §8, P2): sync.Pool buffer pools per size class (findings copy out ≤200-byte snippets and never retain buffers), the spool that grows from memory to a temp file under hard caps (≤4 MiB memory, ≤64 MiB tmpfile — §7), and the byte-weighted I/O semaphore (default budget 256 MiB, a separate knob from CPU parallelism) acquired at min(size, budget) around any read over 1 MiB.
|
Package xio holds the bounded-I/O primitives behind the bounded-everything invariant (ARCHITECTURE.md §8, P2): sync.Pool buffer pools per size class (findings copy out ≤200-byte snippets and never retain buffers), the spool that grows from memory to a temp file under hard caps (≤4 MiB memory, ≤64 MiB tmpfile — §7), and the byte-weighted I/O semaphore (default budget 256 MiB, a separate knob from CPU parallelism) acquired at min(size, budget) around any read over 1 MiB. |
|
pkg
|
|
|
airom
Package airom is the canonical AIROM domain model (ARCHITECTURE.md §5): the component graph every writer projects and every detector's claims assemble into.
|
Package airom is the canonical AIROM domain model (ARCHITECTURE.md §5): the component graph every writer projects and every detector's claims assemble into. |
|
airom/detect
Package detect is the public detector SDK (ARCHITECTURE.md §6.1): the contracts a detector implements, the read-once File it receives, the Finding claims it emits, and the selector index that routes files to detectors.
|
Package detect is the public detector SDK (ARCHITECTURE.md §6.1): the contracts a detector implements, the read-once File it receives, the Finding claims it emits, and the selector index that routes files to detectors. |
|
airom/detectortest
Package detectortest is the public contract-test harness for AIROM detectors (ARCHITECTURE.md §14, plugin-guide.md B.4): built-in and third-party detectors prove themselves with the identical harness.
|
Package detectortest is the public contract-test harness for AIROM detectors (ARCHITECTURE.md §14, plugin-guide.md B.4): built-in and third-party detectors prove themselves with the identical harness. |
|
airom/purl
Package purl builds package URLs under AIROM's purl discipline (ARCHITECTURE.md §9.4, decision D9): spec purl types only.
|
Package purl builds package URLs under AIROM's purl discipline (ARCHITECTURE.md §9.4, decision D9): spec purl types only. |
|
Package rules embeds the built-in AIROM rule packs (ARCHITECTURE.md §6.3): the offline-by-construction default detection vocabulary, compiled into the binary and versioned with each release.
|
Package rules embeds the built-in AIROM rule packs (ARCHITECTURE.md §6.3): the offline-by-construction default detection vocabulary, compiled into the binary and versioned with each release. |
|
Package schemas embeds AIROM's published JSON Schemas (docs/mapping.md): the native AIBOM format is a versioned API, and its schema ships with the binary and the repo.
|
Package schemas embeds AIROM's published JSON Schemas (docs/mapping.md): the native AIBOM format is a versioned API, and its schema ships with the binary and the repo. |
|
tools
|
|
|
detectors-gen
command
Command detectors-gen regenerates internal/detectors/all/all.go: the mechanical, conflict-free registration list of built-in detectors (ARCHITECTURE.md §6.2, plugin-guide.md B.5).
|
Command detectors-gen regenerates internal/detectors/all/all.go: the mechanical, conflict-free registration list of built-in detectors (ARCHITECTURE.md §6.2, plugin-guide.md B.5). |
Click to show internal directories.
Click to hide internal directories.