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
Metadata
Release files for air-blackbox 1.17.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| air_blackbox-1.17.0.tar.gz | 374.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| air_blackbox-1.17.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 773.1 kB
Release files / air_blackbox-1.17.0.tar.gz
| Download URL | air_blackbox-1.17.0.tar.gz |
|---|---|
| Size | 374.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cbe01881aecb4c1b4c8a1ce78ea55b2ff2be1e96b82cf675b80303f5bda0ab6e
|
|
BLAKE2b-256 checksum How to use checksums |
eb3bf6e3c9dd3040381071aae21cce9e89401d9181acc21a827ce8248c949400
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / air_blackbox-1.17.0-py3-none-any.whl
| Download URL | air_blackbox-1.17.0-py3-none-any.whl |
|---|---|
| Size | 398.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1ba9d0f1c72dd2d617444590b51b8f3b45858807a3b1678f62cc9a542bbf314c
|
|
BLAKE2b-256 checksum How to use checksums |
b0050c17373dcf6bd3221f11a35d8507d7b1ab74fcb4f7bd03cc32d92f623b6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log