AIR Blackbox
AI governance control plane — compliance, inventory, incident response, and audit for AI agents.
Install
pip install air-blackbox
With framework support:
pip install air-blackbox[langchain] # LangChain trust layer
pip install air-blackbox[crewai] # CrewAI trust layer
pip install air-blackbox[openai] # OpenAI Agents SDK trust layer
pip install air-blackbox[all] # Everything
Four Commands
air-blackbox comply # EU AI Act compliance from live traffic
air-blackbox discover # Shadow AI inventory + AI-BOM generation
air-blackbox replay # Incident reconstruction from audit chain
air-blackbox export # Signed evidence bundle for auditors
Quick Start
from air_blackbox import AirBlackbox
air = AirBlackbox()
client = air.wrap(openai.OpenAI())
# Every LLM call is now HMAC-logged through the gateway
With framework auto-detection:
from air_blackbox import AirTrust
trust = AirTrust()
trust.attach(your_langchain_agent)
# Framework auto-detected. Audit trails active.
What It Does
| Command | What You Get |
|---|---|
comply |
Per-article EU AI Act status (Art. 9-15) from live gateway traffic |
discover |
Runtime AI inventory plus static dependency AI-BOM/SBOM output in table, CycloneDX 1.6, or SPDX 2.3 |
replay |
Full incident reconstruction, HMAC chain verification |
export |
Signed evidence package: compliance + AI-BOM + audit chain |
Discover AI-BOM and SBOM Output
air-blackbox discover --scan-path . --format table
air-blackbox discover --scan-path . --format cyclonedx
air-blackbox discover --scan-path . --format spdx
air-blackbox discover --scan-path . --format json # alias for CycloneDX 1.6 JSON
discover combines runtime-observed models, providers, and tools with static package dependency scanning. Static scanning still works when no gateway traffic or .air.json records exist.
Supported static manifests:
requirements.txt: declared direct Python dependencies only.pyproject.toml: PEP 621 direct and optional Python dependencies only.package.json: direct npm dependencies;devDependenciesare currently excluded.package-lock.json: npm lockfile v2/v3 installed direct and transitive dependencies when graph data is available.
Discovery does not perform Python transitive resolution, inspect global environments, call package managers, or use the network. Each package in a reliable dependency graph is classified independently, so an AI SDK can be detected even when it is only transitive, for example application -> wrapper-package -> openai.
Custom classifier rules extend the built-in AI-library list, and matching custom rules override defaults:
air-blackbox discover \
--scan-path . \
--ai-libraries custom-ai-libraries.yaml \
--format cyclonedx
version: 1
packages:
python:
my-ai-sdk:
category: llm-sdk
provider: Example AI
reason: Internal AI SDK
npm:
"@example/ai-client":
category: llm-sdk
provider: Example AI
reason: Internal AI client
Python package names use PEP 503 normalization. npm scoped package names are supported. Invalid explicit classifier configuration exits with an error before emitting machine-readable output.
Use --output to write machine-readable JSON:
air-blackbox discover --scan-path . --format spdx --output sbom.spdx.json
Warnings and diagnostics go to stderr. JSON files use UTF-8 and end with a newline. Table output cannot be combined with --output.
Model metadata includes model name, provider when observed, and explicit model version when available. The AIR record/schema version is not used as a model version. SPDX 2.3 represents runtime models as packages with annotations; formal schema validation is not currently part of the test suite.
Links
- Website: airblackbox.ai
- Gateway: github.com/airblackbox/airblackbox
- Docs: gateway/docs
- License: Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file air_blackbox-1.15.0.tar.gz.
File metadata
- Download URL: air_blackbox-1.15.0.tar.gz
- Upload date:
- Size: 331.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92862722b73885c44897dd334bc88bb401f7f48693ed2c779eb8b7d19f452c83
|
|
| MD5 |
8bfc75f2626abf099a7efa52ada7784e
|
|
| BLAKE2b-256 |
363faccfb688ecb4a5bda9ac57484c9bdcec7433730d367a1fbba5300430828b
|
Provenance
The following attestation bundles were made for air_blackbox-1.15.0.tar.gz:
Publisher:
release.yml on airblackbox/airblackbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
air_blackbox-1.15.0.tar.gz -
Subject digest:
92862722b73885c44897dd334bc88bb401f7f48693ed2c779eb8b7d19f452c83 - Sigstore transparency entry: 2643191537
- Sigstore integration time:
-
Permalink:
airblackbox/airblackbox@171011192fcae42c8d618dfdf0e83c45ac07b5a0 -
Branch / Tag:
refs/tags/v1.15.0 - Owner: https://github.com/airblackbox
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@171011192fcae42c8d618dfdf0e83c45ac07b5a0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file air_blackbox-1.15.0-py3-none-any.whl.
File metadata
- Download URL: air_blackbox-1.15.0-py3-none-any.whl
- Upload date:
- Size: 349.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4086a28cd961bfecc00f49ee4f405b2c33739c4684fe08e0ddfc8b6cb494503c
|
|
| MD5 |
33f752b812a9413b5829974d4d9b03b5
|
|
| BLAKE2b-256 |
f0a9b0fdfbe5ad271de366656d3c66576572b38f065ebf539617a1966b36aab8
|
Provenance
The following attestation bundles were made for air_blackbox-1.15.0-py3-none-any.whl:
Publisher:
release.yml on airblackbox/airblackbox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
air_blackbox-1.15.0-py3-none-any.whl -
Subject digest:
4086a28cd961bfecc00f49ee4f405b2c33739c4684fe08e0ddfc8b6cb494503c - Sigstore transparency entry: 2643191898
- Sigstore integration time:
-
Permalink:
airblackbox/airblackbox@171011192fcae42c8d618dfdf0e83c45ac07b5a0 -
Branch / Tag:
refs/tags/v1.15.0 - Owner: https://github.com/airblackbox
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@171011192fcae42c8d618dfdf0e83c45ac07b5a0 -
Trigger Event:
release
-
Statement type: