File size: 27,676 Bytes
964293d
 
5ae6539
 
 
 
 
 
 
 
 
 
 
 
964293d
5ae6539
 
 
 
34b1bc1
c00edbc
5ae6539
 
 
 
3380436
5ae6539
 
 
d258bfe
5ae6539
3380436
5ae6539
c00edbc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d258bfe
c00edbc
 
 
 
 
 
 
 
 
 
 
d258bfe
9af29a6
 
 
 
5be8f06
89d9250
9af29a6
 
 
da3d6db
 
d258bfe
da3d6db
 
 
 
9af29a6
 
c00edbc
 
 
 
 
5be8f06
c00edbc
 
b9f779e
 
c00edbc
89d9250
 
b9f779e
89d9250
 
 
 
5ae6539
 
 
c00edbc
5ae6539
c00edbc
 
 
 
 
 
5ae6539
 
 
8b28ffd
 
c00edbc
8b28ffd
c00edbc
8b28ffd
d258bfe
c00edbc
b9f779e
c00edbc
da3d6db
 
8b28ffd
 
 
c00edbc
3380436
 
 
 
 
89d9250
3380436
89d9250
 
5be8f06
 
89d9250
5be8f06
 
 
 
89d9250
3380436
89d9250
3380436
89d9250
3380436
d258bfe
3380436
5be8f06
 
 
 
 
c00edbc
5be8f06
 
 
 
c00edbc
d258bfe
5ae6539
 
 
3380436
5ae6539
3380436
5ae6539
3380436
5ae6539
3380436
5ae6539
3380436
5ae6539
5be8f06
3380436
d258bfe
5be8f06
d258bfe
 
 
 
5ae6539
 
 
da3d6db
 
 
 
 
d258bfe
 
89d9250
da3d6db
 
 
 
 
d258bfe
da3d6db
 
 
 
 
 
 
 
 
 
 
 
70cc331
 
 
 
 
 
 
 
 
 
 
5ae6539
 
 
 
 
54cd27e
 
 
 
 
 
 
 
5ae6539
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
---
license: apache-2.0
library_name: onnx
tags:
  - norvitech
  - armiger
  - bitmagnet
  - torrent-classification
  - media-classification
  - byte-level-transformer
  - multi-task-learning
  - onnx
  - int8
pipeline_tag: text-classification
---

<h1 align="center">Armiger</h1>

<p align="center">
  <strong>Fast 8.3 MB universal CPU torrent &amp; media classifier for Bitmagnet and self-hosted media libraries.</strong><br>
  Predicts 8 calibrated decision heads simultaneously in 2.44 ms single-item p50 (3.07 ms/item batch-64, 326 items/s) on Apple M4 Pro CPU ONNX Runtime INT8 — with a self-contained zero-tokenizer Python inference script (<code>armiger_inference.py</code> + <code>vocab.json</code>) included out of the box.
</p>

<p align="center">
  <a href="https://norvitech.com"><img alt="NorviTech Suite" src="https://img.shields.io/badge/NorviTech-Suite-FD8024.svg"></a>
  <a href="https://huggingface.co/NorviTech/armiger-ultra"><img alt="Armiger Ultra" src="https://img.shields.io/badge/Armiger_Ultra-GPU_%2B_Swarm_Suite-10B981.svg"></a>
  <img alt="Licence Apache-2.0" src="https://img.shields.io/badge/licence-Apache--2.0-blue.svg">
</p>

**Armiger** (`NorviTech/armiger`) is an ultra-compact (`8.3 MB`, `8,283,542 bytes`), zero-tokenizer byte-level RoPE Transformer + File-Tree Encoder designed for real-time BitTorrent, DHT, Usenet, and media automation (`Bitmagnet` and self-hosted media libraries) classification on any CPU.

Unlike rule parsers (`GuessIt`, `PTT`, `RTN`, `PTN`, `Anitomy`) that only recognize video filenames or `360M+` parameter subword models (`MIMMO BERT`) that require `~1.4 GB` of weights, **Armiger** reads raw UTF-8 title bytes and internal file trees directly to predict **8 calibrated classification heads** in a single forward pass.

> **Looking for GPU acceleration (`0.21 ms` RTX / `0.29 ms` M4 Pro MPS) + Live Swarm Viability, Honeypot Detection, & Zero-Cue Catalog Disambiguation?**
> Use **[`NorviTech/armiger-ultra`](https://huggingface.co/NorviTech/armiger-ultra)**, which bundles **both** `Armiger` (`8.3 MB` CPU `INT8`) and `Armiger Ultra` (`32.3 MB` `FP32` GPU + `132 KB` Swarm Health Adapter + all 6 plugins) in one unified package.

---

## Quickstart: Standalone ONNX Inference (`armiger_inference.py`)

This repository ships with `armiger_inference.py` and `vocab.json`, implementing the complete 11-input featurizer (`title_bytes`, `ext_ids`, `file_sizes_log`, `file_depths`, `file_flags`, `file_mask`, `struct_feats`, `tracker_ids`, `cat_hint_id`, `tag_ids`, `swarm_feats`) + post-hoc temperature/Menon calibration (`calibration.json`):

```python
from armiger_inference import ArmigerONNXClassifier

clf = ArmigerONNXClassifier(
    onnx_path="armiger.onnx",
    vocab_path="vocab.json",
    calibration_path="calibration.json",
)

pred = clf.predict({
    "name": "Sintel.2010.1080p.WEBM.AV1-OPEN",
    "size": 4_500_000_000,
    "files": [{"path": "Sintel.2010.1080p.mkv", "size": 4_500_000_000}],
})

print(pred["category"])         # "movie"
print(pred["mondrian_gates"])   # {'adult_flagged': False, 'junk_flagged': False, 'scope_excluded': False, 'passed_all': True}
print(pred["heads"].keys())     # dict_keys(['category', 'adult', 'junk', 'anime', 'english_subs', 'lang', 'owner_scope', 'title_language'])
```

---

## Ecosystem Integrations (`DH-Waypoint`, `Bitmagnet` & Torznab / Webhook Clients)

Armiger and Armiger Ultra ship with turnkey HTTP services, Docker Compose stacks, and reference adapters in [`examples/`](examples) and [`docs/INTEGRATION_GUIDE.md`](docs/INTEGRATION_GUIDE.md):

- **[`DH-Waypoint` Integration (`examples/dh-waypoint/`)](examples/dh-waypoint)** — Drop-in `processorapi/v1` service (`armiger_waypoint_processor.py`) and plugin manifest (`07-armiger-ultra.plugin.yml`) implementing batch classification (`dh-waypoint.processor.v1`), pre-ingest cohort admission (`dh-waypoint.processors.admission.v1`), and 4-tier `dh-waypoint.processors.feedback.v1` closed-loop telemetry for [`spencernorton/DH-Waypoint`](https://github.com/spencernorton/DH-Waypoint).
- **[`Bitmagnet` Integration (`examples/bitmagnet/`)](examples/bitmagnet)** — Pre-ingest / post-crawl batch classifier and malware/honeypot pruner (`bitmagnet_armiger_bridge.py`) that upgrades upstream Bitmagnet from `35.17%` rule accuracy to **`95.49%` 11-class neural accuracy** and automatically prunes disguised `.mkv.exe`/`.scr`/`.lnk` malware traps via GraphQL `torrent.delete`.
- **[Torznab Proxy & Media Manager Webhook Suite (`examples/arr-stack/`)](examples/arr-stack)** — Pre-grab Torznab XML filtering proxy (`armiger_torznab_proxy.py`) between `Prowlarr` / `Bitmagnet` / `DH-Waypoint` and `Sonarr`, `Radarr`, `Lidarr`, and `Readarr`, paired with a post-import webhook & `ffprobe` ground-truth receiver (`armiger_arr_webhook_receiver.py`) wired into `SeriesWebhookAdapter`, `MovieWebhookAdapter`, `AudioWebhookAdapter`, `PublicationWebhookAdapter`, `QBittorrentAdapter`, and `PhysicalGroundTruthVerifier`.

See the **[Complete Ecosystem Integration Guide (`docs/INTEGRATION_GUIDE.md`)](docs/INTEGRATION_GUIDE.md)** for architecture diagrams, Docker Compose files, and step-by-step setup instructions.

### Documentation & Verification Index

- **[`docs/INTEGRATION_GUIDE.md`](docs/INTEGRATION_GUIDE.md)** — Turnkey integration architecture and Docker Compose guides for `DH-Waypoint`, `Bitmagnet`, `Prowlarr`, `Sonarr`, `Radarr`, `Lidarr`, `Readarr`, and `qBittorrent`.
- **[`docs/ANONYMOUS_OPT_IN_DHT.md`](docs/ANONYMOUS_OPT_IN_DHT.md)** — Mathematical and wire-level specification for opt-in-by-default (`opt_in_sharing=False`, `ARMIGER_DHT_SHARE_OPT_IN="0"`) anonymous DHT weight and catalog sharing (`AnonymityGuard`, ephemeral `Ed25519`, coarse UTC hour bucketing, DP-clipped deltas, and `BLAKE2b-64` catalog hashes).
- **[`docs/CHART_PIPELINE.md`](docs/CHART_PIPELINE.md)** & **[`benchmarks/CHARTS_MANIFEST.json`](benchmarks/CHARTS_MANIFEST.json)** — Canonical statistical chart pipeline, non-circular LOTO teacher evaluation, paired bootstrap 95% CIs, exact McNemar $p$-values, and SHA-256 PNG provenance manifest.
- **[`benchmarks/anonymous_opt_in_proof_report.json`](benchmarks/anonymous_opt_in_proof_report.json)** — Reproducible cryptographic proof report (`0` packets emitted when opt-in is disabled; `500/500` synthetic PII/infohash/title/IP leaks blocked by `AnonymityGuard`).

---

## 8 Simultaneous Classification Heads (Audited Unmutated Ground-Truth Accuracy)

All metrics below are reproducibly computed using `armiger_inference.py` against the **original, unmutated ground-truth evaluation keys** (`rows.y`), separating **Standalone Neural ONNX (`armiger.onnx`)** from **Fair Blind Hybrid (`+ ZeroCueCatalogPlugin` & `AudioLanguageGuard`)**:

1. **`category` (11 classes):** `movie`, `tv_show`, `xxx`, `music`, `comic`, `game`, `audiobook`, `software`, `ebook`, `course`, `unknown`
   - **`oct15_confirmation` (`N=2,835`):** **`95.06%`** Standalone Neural INT8 (**`95.49%`** Fair Blind Hybrid; **`96.60%`** Neural / **`97.30%`** Hybrid on Video Movie-vs-TV `N=1,296`; **`96.17%`** Neural / **`96.34%`** Hybrid on 4-Medium `N=1,748`)
   - **`fresh_confirmation` (`N=1,402`):** **`94.44%`** Standalone Neural INT8 (**`94.51%`** FP32 / **`94.58%`** Fair Blind Hybrid)
   - **`beyond_confirmation` (`N=1,025`):** **`92.88%`** Standalone Neural (**`95.12%`** Fair Blind Hybrid, `+2.24 pp`)
   - **`zero_cue_2000` (`N=2,000` specialist zero-cue anime/video):** **`87.35%`** Standalone Neural INT8 (**`91.50%`** Fair Blind Hybrid, `+4.15 pp` from `BLAKE2b-64` catalog + structural rules)
   - **`multilang_3000` (`N=3,000`):** **`97.37%`** Standalone Neural INT8 (**`97.50%`** FP32 / **`98.47%`** Fair Blind Hybrid)
   - **5-Split Weighted Mean (`N=10,262`):** **`93.95%`** Standalone Neural INT8 (**`94.00%`** FP32) $\rightarrow$ **`95.39%`** INT8 / **`95.42%`** FP32 Fair Blind Hybrid
2. **`adult` (Safety Gate):** `non_adult` vs. `adult` (**`98.53%`** on `oct15_confirmation` `2,740/2,781`; **`98.21%`** on `fresh` `N=1,393`; **`98.62%`** on `beyond` `N=1,016`; **`99.90%`** on `zero_cue_2000` `N=2,000`; **`100.00%`** on `multilang_3000` `N=3,000`)
3. **`junk` (Malware / Fake-Codec / Archive-Trap Filter):** `clean` vs. `junk` (**`100.00%`** on `oct15_confirmation` `2,170/2,170`; **`100.00%`** on `fresh` `1,291/1,291`; **`99.90%`** on `beyond` `976/977`; **`100.00%`** on `zero_cue_2000` & `multilang_3000`; **`7/7` (`100%`)** disguised executable malware traps blocked at `P(junk) > 0.999`)
4. **`anime` (Anime & Dub Routing):** `non_anime` vs. `anime` (**`99.61%`** on `oct15_confirmation` `505/507`; **`99.60%`** on `fresh` `252/253`; **`98.90%`** on `beyond` `629/636`; **`95.80%`** on `zero_cue_2000` `1,914/1,998`)
5. **`lang` (Audio/Release Language):** `english`, `non_english`, `multi_or_unknown` (**`96.88%`** Standalone Neural / **`97.80%`** with `AudioLanguageGuard` on `oct15_confirmation` binary English-vs-Foreign `N=545`; **`92.75%`** 3-class `N=772`; **`91.47%`** on `multilang_3000` `N=3,000`)
6. **`title_language` (Title Script/Language):** `english_title` vs. `non_english_title` (**`93.70%`** on `oct15_confirmation` `N=969`; **`98.51%`** on `beyond_confirmation` `N=604`; **`97.80%`** on `zero_cue_2000` `N=2,000`)
7. **`english_subs` (Subtitle Availability):** `no_eng_subs`, `has_eng_subs`, `unknown` (**`93.04%`** on `stop` `N=2,171`; **`87.17%`** on `multilang_3000` `N=3,000`)
8. **`owner_scope` (Catalog Policy Gate):** `allowed_type` vs. `excluded` (**`98.65%`** on `oct15_confirmation` `2,633/2,669`; **`99.80%`** on `zero_cue_2000` `N=2,000`; **`99.90%`** on `multilang_3000` `N=3,000`)

---

## Hardware-Attributed Latency & Footprint Benchmarks

| Runtime & Precision | Hardware Platform | Footprint | Single-Item Latency (p50) | Batch-64 Latency (per item) | Batch-64 Throughput |
| :--- | :--- | :---: | :---: | :---: | :---: |
| **`armiger.onnx` (ONNX Runtime INT8)** | **Apple M4 Pro CPU** | **`8.3 MB`** | **`2.44 ms`** (`410 items/s`) | **`3.07 ms`** | **`326 items/s`** |
| **`armiger_ultra.fp32.onnx` (ONNX Runtime FP32)** | **Apple M4 Pro CPU** | `32.3 MB` | `1.12 ms` (`893 items/s`) | `3.32 ms` | `301 items/s` |
| **`armiger_ultra.pt` (PyTorch MPS FP32)** | **Apple M4 Pro GPU (MPS)** | `32.2 MB` | `1.12 ms` | **`0.29 ms`** | **`3,416 items/s`** |
| **`armiger_ultra.pt` (PyTorch CUDA FP32)** | **NVIDIA RTX GPU** | `32.2 MB` | `2.79 ms` (`358 items/s`) | **`0.21 ms`** | **`4,795 items/s`** |

---

## Optional Modular Plugins (Available Standalone or Bundled in `Armiger Ultra`)

`NorviTech/armiger` ships as a compact `8.3 MB` ONNX INT8 engine (`armiger.onnx`, `vocab.json`, `calibration.json`, `armiger_inference.py`). Any of the **6 official Armiger plugins** below can be attached on demand (or downloaded pre-bundled inside [`NorviTech/armiger-ultra`](https://huggingface.co/NorviTech/armiger-ultra)):

| Plugin Repository | Bundled in `Armiger Ultra`? | Footprint | Core Capability & Measured Impact (Unmutated Ground-Truth Keys) |
| :--- | :---: | :---: | :--- |
| **[`NorviTech/armiger-swarm-survival`](https://huggingface.co/NorviTech/armiger-swarm-survival)** | **Yes** (`swarm_adapter.pt`, `swarm_survival.py`) | `167 KB` (`132 KB` `.pt`) | **SwarmSurvivalNet v2 & Honeypot Residual Adapter:** Executes full 48-tensor neural forward pass (`SwarmResidualAdapter`); **`96.83%`** Multi-Source Corpus AUROC (`N=10,278`, vs. `53.02%` raw seeders), **`92.42%`** / **`93.03%`** Public-Tracker AUROC (`N=757` / `N=493`, vs. `85.17%` raw seeders), **`100.0%`** fake-seeder malware trap recall, **`0.00%`** content-category flip guarantee. |
| **[`NorviTech/armiger-swarm-priors`](https://huggingface.co/NorviTech/armiger-swarm-priors)** | **Yes** (`swarm_priors.py`) | `29.3 KB` | **Empirical Bayes Swarm & Release-Group Priors:** 4-pathway tracker scrape prior engine (`86.64%` formula AUROC), mandatory modality dropout (`p=0.60`), anomaly feature extraction, and public-tracker passkey safety filter. |
| **[`NorviTech/armiger-zero-cue-catalog`](https://huggingface.co/NorviTech/armiger-zero-cue-catalog)** | **Yes** (`zero_cue_plugin.py`, `validated_zero_cue_catalog.json`) | `26.0 MB` (`BLAKE2b-64`) | **Zero-Cue Catalog & Structural Disambiguator:** Offline `929,400`-entry `BLAKE2b-64` cryptographically hashed catalog (`472,017` `(title, year)`, `257,016` anime stems, `200,367` long titles) + deterministic structural rules; lifts 5-split (`N=10,262`) weighted category accuracy from **`94.00%`** (Standalone Neural) to **`95.42%`** (Fair Blind Hybrid), `beyond_confirmation` (`N=1,025`) from **`92.88%`** to **`95.12%`**, and `zero_cue_2000` (`N=2,000`) from **`87.40%`** to **`91.50%`** (`+4.10 pp`). |
| **[`NorviTech/armiger-audio-guard`](https://huggingface.co/NorviTech/armiger-audio-guard)** | **Yes** (`audio_language_guard.py`) | `3.3 KB` | **Cross-Head Audio Language & Anime Dub Guard:** Couples `title_language` (`P(Foreign Title)`) with `lang` head to disambiguate `.en.` prepositions, `<Foreign>.ENG.Sub`, regional dubs, and `MULTi (FR EN)` tags; lifts binary English-vs-Foreign audio accuracy on `oct15_confirmation` (`N=545`) from **`96.88%`** (Standalone Neural) to **`97.80%`** (`92.75%` 3-class `N=772`). |
| **[`NorviTech/armiger-calibration-dht`](https://huggingface.co/NorviTech/armiger-calibration-dht)** | **Yes** (`calibration.json`, `calibration_and_dht.py`, `armiger_dht_rsi.py`) | `181 KB` | **Conformal Calibration, BEP-44 DHT Updater & Distributed RSI Engine:** Per-head temperature scaling ($T_h$), Mondrian safety gates (**`100.00%`** junk accuracy on `oct15_confirmation` `N=2,170` & `fresh_confirmation` `N=1,291`, **`99.90%`** on `beyond_confirmation` `N=977`), Hybrid `Ed25519`+`WOTS+-SHAKE256` signed `BEP-44`/`BEP-46` DHT hot-reload, Hybrid `X25519`+`ML-KEM-768`+`ChaCha20-Poly1305` AEAD, distinct-ASN quorum, strictly **opt-in-by-default (`opt_in_sharing=False`)** anonymous sharing via `AnonymityGuard` (`500/500` leak block rate, ephemeral `Ed25519` keys, coarse UTC hour bucketing, DP-clipped deltas), and 500-canary regression gate. |
| **[`NorviTech/armiger-dht-db-sync`](https://huggingface.co/NorviTech/armiger-dht-db-sync)** | **Yes** (`csam_guard.py`, `armiger_dht_db_sync.py`) | `155 KB` | **Modular, CSAM-Protected, Encrypted BEP-44/BEP-46 DHT Database Sync:** Multi-stage CSAM & abuse pre-ingest blocker, Hybrid PQ-signed blinded `SHA-256` tombstone purge engine, 10-category $\times$ 14-language $\times$ 7-quality sharded subscriptions with strict default-off `xxx` isolation, `X25519`+`ML-KEM-768`+`ChaCha20-Poly1305` AEAD, binary Merkle proofs, strictly **opt-in-by-default (`opt_in_sharing=False`)** `BLAKE2b-64` one-way catalog hashing via `AnonymityGuard`, and $K$-of-$N$ distinct-ASN Sybil quorum. |

---

## 1. Categorical & Open-Source Torrent Classifier Comparisons (Unmutated Ground-Truth Keys)

### 7-Dimension Comparison vs. Open-Source Classifiers & Parsers

![Armiger vs Open-Source Torrent Classifiers Across 7 Core Dimensions](assets/armiger_vs_torrent_classifiers_6dims.png)

| System / Model | Footprint | 11-Class Category (`oct15` `N=2,835`) | Movie vs. TV (`N=1,296`) | Catalog Matching (`N=1,296`) | Audio Language (`N=545`) | Anime & Dub (`N=507` / `zero_cue_2000`) | Adult / NSFW Gate (`N=2,781`) | Junk / Malware (`N=2,170`) | Swarm Liveliness (AUROC) |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **[Armiger Ultra (Fair Hybrid)](https://huggingface.co/NorviTech/armiger-ultra)** | `32.3 MB` (`+26 MB` cat.) | **`95.49%`** (`98.47%` mlang) | **`97.30%`** | **`96.53%`** | **`97.80%`** | **`99.61%`** (`95.80%` `zero_cue_2000`) | **`98.53%`** | **`100.00%`** (`99.90%` beyond) | **`96.83%`** Corpus / **`92.42%`** Pub |
| **Armiger (8.3 MB INT8 + Plugins)** | **`8.3 MB`** | **`95.49%`** (`95.06%` Raw) | **`97.30%`** (`96.60%` Raw) | **`96.53%`** (`95.83%` Raw) | **`97.80%`** (`96.88%` Raw) | **`99.61%`** (`95.80%` `zero_cue_2000`) | **`98.49%`** | **`100.00%`** (`99.90%` beyond) | **`92.42%`** Pub (`86.64%` Priors) |
| **MIMMO BERT (360M)** | `~1,400 MB` | `72.24%` | `76.00%` (`93.61%` 4-Med) | `60.26%` | N/A | N/A | `91.05%` | N/A | N/A |
| **MIMMO Cascade** | `~1,400 MB` | `71.32%` | `76.08%` (`93.97%` 4-Med) | `60.34%` | N/A | N/A | `89.68%` | N/A | N/A |
| **RTN (`rank-torrent-name`)** | Code Only | `53.58%` | `81.64%` | `80.48%` | `93.76%` | `77.65%` | `79.00%` | `49.29%` (`0%` rec., `98.57%` spec.) | N/A |
| **PTT / Parsett** | Code Only | `53.58%` | `81.64%` | `80.48%` | `93.76%` | `77.65%` | `79.00%` | N/A | N/A |
| **GuessIt** | Code Only | `38.69%` | `84.65%` | `84.03%` | `94.86%` | `78.80%` | N/A | N/A | N/A |
| **PTN (`parse-torrent-title`)** | Code Only | `35.59%` | `77.85%` | `77.62%` | `93.21%` | `68.65%` | N/A | N/A | N/A |
| **Anitomy** | Code Only | `33.40%` | `73.07%` | `72.76%` | `90.46%` | `64.55%` | N/A | N/A | N/A |
| **Bitmagnet Built-In** | Code Only | `35.17%` | `43.21%` (`88.4%` ans.) | `43.21%` | `88.26%` | N/A | `76.73%` | `50.00%` (`0%` rec., `100%` spec.) | N/A |

### Per-Category Recall Breakdown Across All 10 Media & Software Categories (Unmutated Keys)

![Per-Category Recall Breakdown Across All 10 Media & Software Categories](assets/armiger_categorical_breakdown.png)

| Content Category | `oct15` (`N=2,835`) Armiger Ultra (Fair Hybrid) | `oct15` (`N=2,835`) Armiger (INT8 + ZeroCue) | `oct15` MIMMO BERT (360M) | `oct15` Bitmagnet Built-In | `beyond` (`N=1,025`) Armiger Ultra (Fair Hybrid) | `beyond` (`N=1,025`) Armiger (INT8 + ZeroCue) | `beyond` OpenAI GPT (Fast Tier, LOTO)* | `beyond` Google Gemini Flash (LOTO)* |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **Audiobook** | **`97.89%`** | **`97.89%`** | `0.00%` | `9.47%` | **`100.00%`** | **`100.00%`** | `98.67%` | `98.00%` |
| **Adult / XXX** | **`97.80%`** | **`97.80%`** | `95.50%` | `39.37%` | `91.95%` | `91.95%` | `94.83%` | **`95.69%`** |
| **TV Show** | **`97.50%`** | **`97.50%`** | `58.40%` | `28.62%` | `96.32%` | `96.32%` | **`97.79%`** | `93.75%` |
| **Movie** | **`97.12%`** | **`97.12%`** | `78.85%` | `55.83%` | **`96.84%`** | **`96.84%`** | `94.21%` | `92.63%` |
| **Software** | **`93.75%`** | **`93.75%`** | `59.38%` | `15.62%` | `94.59%` | `94.59%` | **`97.30%`** | `77.03%` |
| **Music** | **`90.71%`** | **`90.71%`** | `77.86%` | `7.86%` | `83.33%` | `83.33%` | **`100.00%`** | **`100.00%`** |
| **Game** | **`90.16%`** | **`90.16%`** | `0.00%` | `0.00%` | `96.30%` | `96.30%` | **`98.52%`** | **`98.52%`** |
| **Ebook** | **`88.00%`** | **`88.00%`** | `80.00%` | `4.00%` | **`98.40%`** | **`98.40%`** | `96.00%` | `96.80%` |
| **Course** | **`81.82%`** | **`81.82%`** | `0.00%` | `0.00%` | `92.00%` | `92.00%` | `95.50%` | **`97.50%`** |
| **Comic** | **`66.67%`** | **`66.67%`** | `0.00%` | `0.00%` | **`98.33%`** | **`98.33%`** | `96.67%` | `95.00%` |

*Note on `beyond_confirmation` (`N=1,025`): `OpenAI GPT (Fast Tier)` and `Google Gemini Flash` are evaluated using non-circular Leave-One-Teacher-Out (LOTO) reference keys (`self_vote_weight = 0.0`) so neither teacher model is scored against its own deciding majority vote (`95.12%` and `93.80%` LOTO vs. `96.59%` and `95.61%` circular self-voted).*

---

## 2. Frontier Cloud LLM & Local GPU LLM Comparisons

### Accuracy Across 6 Core Dimensions vs. Frontier LLMs

![Armiger vs Frontier Cloud LLMs and Local GPU LLM](assets/armiger_vs_llms_overall_and_6dims.png)

### Operational Cost & Token Rate vs. Frontier LLMs

![Cost Benchmark vs Frontier Cloud LLMs and Local GPU LLM](assets/armiger_vs_llms_cost_comparison.png)

| Model | Overall 6-Dim Mean (95% CI) | 11-Class Category (`N=1,025` LOTO / `oct15`) | Catalog Matching (`N=1,025` LOTO / `oct15`) | Audio Language (Strict E-vs-F `N=229` / `N=545`) | Anime & Dub (Valid Media `N=636` / `N=507`) | Junk / Malware (`N=977` Bal / Acc) | Swarm Liveliness (AUROC) | Measured Hardware Speed | Cost per 1M Torrents (Batched / Real-Time) |
| :--- | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: |
| **Armiger Ultra (Fair Hybrid)** | **`96.86%`** Pub / **`97.60%`** Corpus (`[96.35, 97.38]`) | **`95.12%`** (`95.49%` `oct15`) | **`96.39%`** (`96.53%` `oct15`) | **`99.13%`** (`97.80%` `oct15`) | **`98.90%`** (`99.61%` `oct15`) | **`99.23%`** (`99.90%` Acc / **`100%`** `oct15`) | **`96.83%`** Corpus / **`92.42%`** Pub | **`0.21 ms` RTX / `0.29 ms` M4 Pro MPS** | **`$0.00` API** (`$0.0040` compute) |
| **[Armiger](https://huggingface.co/NorviTech/armiger) (`armiger.int8.onnx` + Plugins)** | **`96.85%`** (`[96.40, 97.30]`) | **`95.12%`** (`95.49%` `oct15` / `95.06%` Raw) | `96.29%` (`95.80%` Raw) | **`99.13%`** (`97.80%` `oct15` / `96.88%` Raw) | **`98.90%`** (`99.61%` `oct15`) | **`99.23%`** (`99.90%` Acc / **`100%`** `oct15`) | `92.42%` Pub (`86.64%` Priors) | **`2.44 ms` single / `3.07 ms` batch-64 (M4 Pro CPU)** | **`$0.00` API** (`$0.0020` compute) |
| **Google Gemini Flash (LOTO)\*** | `94.56%` (`[93.97, 95.15]`) | `93.80%` (`95.61%` Circ.) | `90.88%` | `98.69%` | `95.60%` (`608/636`) | `99.18%` (Non-Circ.) | `89.20%` Pub | `~450 ms` | `$94.90` / `$147.00` |
| **Anthropic Claude Haiku 4.5** | `92.88%` (`[92.10, 93.66]`) | `93.76%` | `86.15%` | `95.63%` | **`98.90%`** | `93.09%` | `89.76%` Pub | `~310 ms` | `$712.00` / `$1,220.00` |
| **OpenAI GPT (Fast Tier, LOTO)\*** | `86.24%` (`[85.64, 86.83]`) | **`95.12%`** (`96.59%` Circ.) | `89.07%` | `97.82%` (`94.68%` `oct15`) | `95.60%` (`608/636`) | `50.00%` (`0%` rec.) | `89.82%` Pub | `~365 ms` | `$127.30` / `$220.50` |
| **Local 8B Instruct LLM (FP16)** | `84.79%` (`[83.80, 85.79]`) | `80.78%` | `77.85%` | `93.45%` | `92.45%` | `97.91%` | `66.32%` Pub | `~185 ms` (`5.4/s` RTX 4070 TiS) | `$0.00` API (`$1.85` local power) |

---

## Canonical Statistical Chart Audit & Cryptographic Provenance (`v2.1.0`)

All benchmark charts and headline metrics across the Armiger `v2.1.0` suite are generated deterministically from [`benchmarks/canonical_eval_vectors.json`](https://huggingface.co/NorviTech/armiger-ultra/blob/main/benchmarks/canonical_eval_vectors.json) (`0` strings, titles, or infohashes) and locked by [`benchmarks/CHARTS_MANIFEST.json`](https://huggingface.co/NorviTech/armiger-ultra/blob/main/benchmarks/CHARTS_MANIFEST.json) under four machine-enforced invariants (`pytest benchmarks/test_chart_integrity.py`):

1. **Identical Denominator Lock (`assert_identical_denominator`):** Every model compared on a benchmark bar shares the exact same item count $N$ and item mask (`oct15_confirmation` $N=2,835$; `beyond_confirmation` $N=1,025$; Movie-vs-TV $N=1,296$; Audio $N=545$; Anime $N=507$; Junk $N=2,170$).
2. **Non-Circular Teacher Evaluation Lock (`assert_non_circular_teacher_eval`):** Frontier teacher models (`OpenAI GPT (Fast Tier)`, `Google Gemini Flash`) are evaluated strictly via **Leave-One-Teacher-Out (LOTO)** reference keys (`self_vote_weight = 0.0`), removing $+1.47\text{ pp}$ and $+1.81\text{ pp}$ of circular self-vote inflation.
3. **Paired Bootstrap 95% CIs & Exact McNemar $p$-Values:** Computed using `10,000` paired resamples (`seed = 20261018`, integer-scaled `float64` dot products) and exact binomial `math.comb` McNemar tests (`p = 1.42e-11` vs. `Google Gemini Flash` LOTO; `p = 3.88e-24` vs. `Anthropic Claude Haiku 4.5`).
4. **Deterministic PNG Chunk Stripping:** Output PNGs contain only `IHDR`, `IDAT`, and `IEND` chunks with pinned SHA-256 digests (`0a0bc3a2...`, `7344ba71...`, `51e1f229...`, `1a77a643...`).

---

## Privacy & Anonymous Opt-In-By-Default DHT Sharing (`opt_in_sharing=False`)

Distributed DHT intelligence sharing (`NorviTech/armiger-calibration-dht` and `NorviTech/armiger-dht-db-sync`) is **strictly opt-in by default** and **enforced by the 5-layer `AnonymityGuard` wire firewall** when enabled (see [`docs/ANONYMOUS_OPT_IN_DHT.md`](https://huggingface.co/NorviTech/armiger-ultra/blob/main/docs/ANONYMOUS_OPT_IN_DHT.md) and [`benchmarks/anonymous_opt_in_proof_report.json`](https://huggingface.co/NorviTech/armiger-ultra/blob/main/benchmarks/anonymous_opt_in_proof_report.json)):

| Guarantee | Default State | Wire-Level & Mathematical Enforcement |
| :--- | :--- | :--- |
| **Opt-In by Default** | `opt_in_sharing=False` (`ARMIGER_DHT_SHARE_OPT_IN="0"`) | `0` outbound DHT packets are emitted unless the operator explicitly opts in (`opt_in_sharing=True` and `ARMIGER_DHT_SHARE_OPT_IN="1"`). |
| **`AnonymityGuard` Wire Firewall** | Always active (`500/500` canary block rate) | Inspects every outbound payload before signing; blocks `100.0%` (`500/500`) of synthetic leaks containing raw 40-hex infohashes, release titles, file paths, tracker URLs, passkeys, IPv4/IPv6 addresses, or hostnames. |
| **Ephemeral `Ed25519` Keys** | Single-use keypair per announcement | Rotates a fresh 32-byte `Ed25519` keypair and `ephemeral_node_id` on every publish so contributions are unlinkable across time. |
| **Coarse UTC Hour Timestamps** | `epoch_ts = (utc_now // 3600) * 3600` | Quantizes all outbound timestamps to 1-hour UTC boundaries (`3600s`), eliminating clock-skew and grab-timing correlation. |
| **DP-Clipped Weight Deltas** | `clip_norm = 1.0`, `noise_multiplier = 0.05` | Clips calibration/adapter update vectors in $L_2$ norm (`<= 1.0`) and adds calibrated Gaussian noise ($\sigma = 0.05$) before hybrid `X25519` + `ML-KEM-768` + `ChaCha20-Poly1305` encryption. |
| **`BLAKE2b-64` One-Way Catalog Hashes** | 16-hex-char (`64-bit`) digest | Shared catalog entries store only domain-separated `BLAKE2b-64` title hashes mapped to integer catalog IDs—never raw torrent names or infohashes. |

---

## Intended Use & Legal Compliance

`Armiger`, `Armiger Ultra`, and all bundled plugins are open-source machine learning and cryptographic metadata-classification utilities designed strictly for **lawful use cases**, including:
- Organizing and indexing licensed, public-domain, Creative Commons, and open-source digital media, software distributions (e.g., Linux ISOs, open-source games), and educational archives (e.g., OpenCourseWare, LibriVox, Project Gutenberg).
- Automated cybersecurity screening, fake-seeder honeypot detection, and disguised executable/malware filtering (`.mkv.exe`, `.scr`, `.vbs`) in peer-to-peer and decentralized storage research.
- Child safety (CSAM/CSAE) pre-ingest blocking, cryptographic tombstone revocation, and adult/NSFW namespace isolation for self-hosted and decentralized indexers.

**NorviTech does not condone, encourage, or support copyright infringement or the unauthorized distribution of copyrighted works.** Users are solely responsible for ensuring that their use of these models and plugins complies with all applicable local, national, and international copyright and data-protection laws.

---

<p align="center">
  <a href="https://norvitech.com"><img alt="Part of the NorviTech Suite — open-source apps for the Linux desktop and the self-hosted stack" src="https://norvitech.com/assets/banner.svg" width="640"></a>
</p>

<p align="center">
  <a href="https://huggingface.co/NorviTech/armiger-ultra">Armiger Ultra</a> ·
  <a href="https://huggingface.co/NorviTech/armiger">Armiger</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-swarm-survival">Swarm Survival</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-swarm-priors">Swarm Priors</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-zero-cue-catalog">Zero-Cue Catalog</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-audio-guard">Audio Guard</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-calibration-dht">Calibration &amp; DHT RSI</a> ·
  <a href="https://huggingface.co/NorviTech/armiger-dht-db-sync">DHT DB Sync</a> ·
  <a href="https://norvitech.com">norvitech.com</a>
</p>