A bill of lading for AI.
You already require a bill of lading for physical cargo and an SBOM for software. Ladex is the one for AI — it records what AI is aboard your codebase, from whom, and under what terms, captured at the moment the code is written rather than discovered after the fact.
Ladex is a shift-left AI governance tool for developers. When you write an AI-relevant line of code — importing an agent framework, loading a Hugging Face model, calling an inference API, provisioning a GPU node pool in Terraform — Ladex detects it and answers three questions:
- What is this? model / dataset / agent framework / vector store / inference API
- What does it obligate? EU AI Act Art. 50 disclosure, Annex III high-risk triggers
- What's auto-verifiable vs. what needs a human? CVEs and licenses resolve
automatically. Training-data provenance and consent basis can't be derived by any scanner —
they're flagged
UNDOCUMENTEDand require a signed human attestation, never a fake green checkmark.
The output is a CycloneDX ML-BOM committed to your repo, diffable in PRs, with signed attestations for the fields no tool can derive.
Ladex records what's aboard; it does not block attacks.
What it does
detect (Python + Terraform + Kubernetes)
→ enrich PyPI licenses · OSV CVEs · Hugging Face model cards (cached, offline-capable)
→ obligate EU AI Act Art. 50 — applies / may-apply / silent; derivable vs. attestation
→ BOM deterministic CycloneDX ML-BOM that diffs cleanly in PRs
→ attest in-toto/DSSE signature fills an UNDOCUMENTED gap with a verifiable declaration
surfaces: CLI + VS Code (LSP, inline diagnostics as you type) — one shared engine
Install
Requires uv and Python 3.12.
git clone https://github.com/aibhuyan/ladex
cd ladex
uv sync
uv run ladex --version
Quickstart
# See every AI component in a repo (silent on non-AI code)
uv run ladex scan path/to/repo
# Add real facts: licenses, CVEs, model cards (cached; --offline works from cache)
uv run ladex scan path/to/repo --enrich
# What does it obligate under the EU AI Act? (declare project facts to resolve "may apply")
uv run ladex policy check path/to/repo --user-facing
# Produce the committable, deterministic ML-BOM
uv run ladex scan path/to/repo --write-bom aibom.cdx.json
# Sign a human answer for a gap no scanner can fill, then verify it
uv run ladex attest "sentence-transformers/all-MiniLM-L6-v2" \
--claim provenance --value "Curated public corpora, reviewed 2026-08"
uv run ladex verify
Example
app.py
7:10 inference_api openai.client openai.OpenAI (OpenAI)
12:9 model openai.model-id gpt-4o (OpenAI)
infra/main.tf
20:1 vector_store iac.tf.vector-store-unencrypted HIGH aws_opensearch_domain.vectors
- Vector store is not encrypted at rest
Summary: 3 detection(s) across 2 of 2 file(s) scanned.
In your editor
The VS Code extension gives inline diagnostics as you type, nothing on non-AI code — and the
platform builds bundle the engine, so it's a single install with no separate pip install:
- Grab the
.vsixfor your platform from the Releases page —ladex-<version>-{win32-x64,darwin-arm64,linux-x64}.vsix— → Extensions panel → Install from VSIX… (Marketplace listing coming soon, which auto-selects your platform).
Then open any Python file that uses an AI library. See
extensions/vscode/README.md for configuration and development.
Design principles
- One engine, three surfaces. The IDE, CLI, and (v2) PR check all call the same Python engine — the editor can never disagree with the gate.
- Ruthless silence. If a line isn't AI-relevant, Ladex says nothing.
- Honest gaps.
UNDOCUMENTEDis a valid, valuable output. A green checkmark only appears when something was actually verified — or signed by a named human. - Policy as versioned data. Taxonomy and EU AI Act rules are updatable bundles, not code.
Scope (v1)
Python + Terraform + Kubernetes detection. EU AI Act. Two surfaces (CLI + VS Code). The GitHub PR check and evidence graph are v2.
Development
uv run ruff check .
uv run mypy
uv run pytest
Pre-commit (ruff + mypy) runs on every commit; run uv run pre-commit install once.
License
MIT — see LICENSE.
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 ladex-0.1.3.tar.gz.
File metadata
- Download URL: ladex-0.1.3.tar.gz
- Upload date:
- Size: 81.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
953f2614af444d7d9d6c9a76c155b17b4f6485f77ed5f559d1f46febf2bc9f92
|
|
| MD5 |
a2c91a319e38135dcfe3a52a09f81958
|
|
| BLAKE2b-256 |
8e2f7aeab5efd66092bf3df605a5aab7203819caa64ff103d2d87ee99822ca02
|
Provenance
The following attestation bundles were made for ladex-0.1.3.tar.gz:
Publisher:
release.yml on aibhuyan/ladex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ladex-0.1.3.tar.gz -
Subject digest:
953f2614af444d7d9d6c9a76c155b17b4f6485f77ed5f559d1f46febf2bc9f92 - Sigstore transparency entry: 2586079081
- Sigstore integration time:
-
Permalink:
aibhuyan/ladex@5b9213e4bd9b79cb7bec6a8b44b793a454cf1e63 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/aibhuyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5b9213e4bd9b79cb7bec6a8b44b793a454cf1e63 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ladex-0.1.3-py3-none-any.whl.
File metadata
- Download URL: ladex-0.1.3-py3-none-any.whl
- Upload date:
- Size: 62.5 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 |
80b0ffe6124d0f72b330ffef20d1cfdcd83fef73a8d627a1c6c1818ae9719851
|
|
| MD5 |
7a373522cd4d4e5f5c366bb67dac712b
|
|
| BLAKE2b-256 |
6eaecb58ecf23c1f9d25ff40fdc2ae459969a1cebfe0f018a98d8305e7a670ee
|
Provenance
The following attestation bundles were made for ladex-0.1.3-py3-none-any.whl:
Publisher:
release.yml on aibhuyan/ladex
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ladex-0.1.3-py3-none-any.whl -
Subject digest:
80b0ffe6124d0f72b330ffef20d1cfdcd83fef73a8d627a1c6c1818ae9719851 - Sigstore transparency entry: 2586079607
- Sigstore integration time:
-
Permalink:
aibhuyan/ladex@5b9213e4bd9b79cb7bec6a8b44b793a454cf1e63 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/aibhuyan
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@5b9213e4bd9b79cb7bec6a8b44b793a454cf1e63 -
Trigger Event:
push
-
Statement type: