State of Local AI Audit — 2026 H1
Historical report (SIGIL 0.1 semantics). Produced by SIGIL 0.1.0 with the API probe on. PASS did not consider coverage then. Not comparable with v2 results; not re-evaluated. See reports/2026-h1/README.md.
Published 2026-06-07. 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.
Aggregate PASS verdict for the 2026 H1 sample: all five models (gemma3:4b, llama3.2:3b, mistral:7b, phi3:mini, qwen2.5:7b) PASS. 5 Ollama tags audited: 5 / 5 PASS; 100% layer presence · 60% SPDX; 5 / 5 manifest digests matched.
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.
| Measure | Value | What it counts |
|---|---|---|
| Sample size | 5 | Ollama tags, see Methodology |
| License layer presence | 100 % | 5/5 models shipping a license layer |
| SPDX detection rate | 60 % | 3/5 license layers matched to an SPDX id |
| Manifest integrity | 5 / 5 | models where every blob SHA-256 matched the manifest digest |
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.
| Verdict | Count |
|---|---|
| PASS | count: 5 |
| WARN | count: 0 |
| FAIL | count: 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 0.1; removed in v2) - 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(at the commit of the report's data) - 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.
How it was produced
The runner and aggregator are checked in, next to the data. The model list is a plain text file with one Ollama tag per line. They use the SIGIL 0.1 CLI, so they run only at the commit the report was produced with:
git clone https://github.com/ultra-supara/SIGIL && cd SIGIL git checkout b30d0a2 # SIGIL 0.1, as this report was produced 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.
- Per-model AI-BOM JSONs:
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:
reports/2026-h1/audit-run.sh— pull + scan + emit per-model JSON. - Aggregator:
reports/2026-h1/audit-aggregate.sh— jq pipeline that buildssummary.json.