Report · 2026 H1
State of Local AI Audit
A 5-model sample of the Ollama public registry, audited with SIGIL 0.1.0. We report license layer presence, SPDX detection, manifest integrity, and verdict distribution — derived deterministically from each model's on-disk evidence, with no LLM in the verdict path.
Headline numbers
Four numbers a compliance reviewer can quote. The raw per-model AI-BOM JSONs are linked below so the figures can be re-aggregated independently.
License analysis
License-layer states partition into three buckets: absent, present but not matched to an SPDX family, and present + matched.
| License layer state | Count | Share of sample |
|---|---|---|
| Present, SPDX detected | 3 | 60 % |
| Present, SPDX undetected | 2 | 40 % |
| Absent | 0 | 0 % |
SPDX family distribution
For the models with a license layer matched to an SPDX shortname, the family distribution.
| SPDX id | Count | Models |
|---|---|---|
Apache-2.0 |
2 | mistral:7b, qwen2.5:7b |
MIT |
1 | phi3:mini |
Verdict and findings
Each model's AI-BOM carries a deterministic
PASS / WARN / FAIL verdict
aggregated from analyzer-emitted finding severities. The
distribution across the sample is reported as-is.
PASScount: 5WARNcount: 0FAILcount: 0- Total findings: 0
- Models with at least one finding: 0
Runtime exposure
Reported as the default Ollama install on the audit workstation — the host was not specially configured. This is the as-shipped picture, not a hardened deployment.
- Default
OLLAMA_HOST:http://127.0.0.1:11434 - Observed listener class:
localhost(single bind127.0.0.1:11434) - Source:
/proc
Per-model index
One row per scanned model. The per-model AI-BOM JSON is the authoritative source for everything above.
| Model | Verdict | License | Layer count | Model bytes | Findings |
|---|---|---|---|---|---|
gemma3:4b |
PASS |
present, SPDX undetected | 5 | 3.34 GB | 0 |
llama3.2:3b |
PASS |
present, SPDX undetected | 6 | 2.02 GB | 0 |
mistral:7b |
PASS |
Apache-2.0 |
5 | 4.37 GB | 0 |
phi3:mini |
PASS |
MIT |
5 | 2.18 GB | 0 |
qwen2.5:7b |
PASS |
Apache-2.0 |
5 | 4.68 GB | 0 |
Methodology
Five Ollama tags were chosen by license diversity rather than by popularity ranking: Gemma + Llama for vendor-custom community licenses; Qwen + Mistral for Apache-2.0; Phi for MIT.
- Sample size: 5 tags from the Ollama public registry
- Tool:
sigil aibom generate --runtime ollama --format json - SIGIL version at run time:
0.1.0 - AI-BOM schema version:
1.1 - Audit date:
2026-06-06UTC; summary re-aggregated with the SPDX fast-path fix at2026-06-14T11:45:40Zinsummary.json - Ollama version on the audit workstation:
0.30.6 - Verdict path: deterministic severity aggregation in
crates/sigil-core/src/ollama.rs:349-356 - SPDX detection: shortname + body match over 10 families
-
Manifest integrity = no finding with id in
{ollama.blob_digest_mismatch, ollama.invalid_blob_digest, ollama.blob_missing, ollama.model_not_found}. Surfaced asmanifest_integrity.integrity_pass_countinsummary.json.
Reproduce this
The runner and aggregator are checked in. The model list is a plain text file with one Ollama tag per line.
git clone https://github.com/ultra-supara/SIGIL && cd SIGIL
sudo apt-get install -y clang jq # Linux
# Edit scripts/audit-models.txt if you want a different sample.
./scripts/audit-run.sh # pulls + runs sigil on each model
./scripts/audit-aggregate.sh # writes reports/2026-h1/summary.json
Sources and raw data
Per-model AI-BOM JSONs are the authoritative source for everything in this report.
reports/2026-h1/raw/<model>.aibom.json — one per model, schema 1.1.
Aggregated summary JSON
reports/2026-h1/summary.json — the numbers in this report come from here.
Runner
scripts/audit-run.sh — pull + scan + emit per-model JSON.
Aggregator
scripts/audit-aggregate.sh — jq pipeline that builds summary.json.