@camstack/addon-post-analysis 1.2.287 → 1.2.289

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,18 +1,15 @@
1
1
  <!--
2
2
  THIRD_PARTY_MODELS.md: the product notice for every model CamStack can download.
3
3
 
4
- HAND-WRITTEN FOR NOW. Task 7 of docs/superpowers/plans/2026-09-26-model-license-compliance.md
5
- replaces this file with generator output (scripts/gen-model-licenses.ts), built from the
6
- licence records on the model catalogs. Until then this root file is the single source:
7
- - packages/addon-pipeline, packages/addon-post-analysis, packages/addon-ai and server/backend
8
- each carry a byte-identical COPY (npm cannot ship a file from outside the package).
9
- Edit this root file, then copy it: for d in packages/addon-pipeline packages/addon-post-analysis
10
- packages/addon-ai server/backend; do cp THIRD_PARTY_MODELS.md "$d/"; done
11
- scripts/check-model-notices-shipped.ts fails CI when a copy drifts.
12
- - The Hugging Face mirror (camstack/camstack-models) receives this same file, staged by
13
- hf/camstack-models/upload.sh. Its model card points at the "Source offer" section below.
14
- Facts: docs/superpowers/specs/2026-09-26-model-license-compliance.md (verified 2026-09-26).
15
- Not legal advice.
4
+ GENERATED by scripts/gen-model-licenses.ts from the licence records on the model
5
+ catalogs (D661). Do not edit it: change the record in the catalog
6
+ (packages/addon-pipeline/src/detection-pipeline/registry/model-licenses.ts,
7
+ packages/addon-post-analysis/src/embedding-encoder/catalogs/model-licenses.ts,
8
+ packages/addon-ai/src/runtime/llm-model-licenses.ts), then run npm run models:notices.
9
+ The package copies (packages/addon-pipeline, packages/addon-post-analysis, packages/addon-ai, packages/addon-model-studio, server/backend) are byte-identical
10
+ (npm cannot ship a file from outside the package); the Hugging Face mirror receives
11
+ the same file from hf/camstack-models/upload.sh. Drift fails CI.
12
+ Facts: docs/superpowers/specs/2026-09-26-model-license-compliance.md. Not legal advice.
16
13
  -->
17
14
 
18
15
  # Third-party models
@@ -33,64 +30,35 @@ under [Non-commercial models](#non-commercial-models).
33
30
 
34
31
  ## Required attributions
35
32
 
36
- - **Ultralytics YOLO26, YOLOv9 and YOLOv8** — © Ultralytics. Licensed under
37
- AGPL-3.0 (`AGPL-3.0.txt`). See the [source offer](#source-offer-for-the-agpl-30-weights).
38
- https://github.com/ultralytics/ultralytics
39
- - **YOLOv9** (architecture) — Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao,
40
- GPL-3.0 (`GPL-3.0.txt`). https://github.com/WongKinYiu/yolov9
41
- - **SCRFD / InsightFace** — code MIT. The pretrained weights are released by
42
- InsightFace for non-commercial research purposes only (`InsightFace-terms.txt`).
43
- https://github.com/deepinsight/insightface
44
- - **MobileCLIP** — © Apple Inc. *Apple Machine Learning Research Model is
45
- licensed under the Apple Machine Learning Research Model License Agreement.*
46
- (`Apple-AMLR.txt`). CamStack's MobileCLIP files are **Model Derivatives**:
47
- the image encoders are converted to OpenVINO IR and CoreML at FP16; the text
48
- encoders are quantised to INT8 ONNX and converted to OpenVINO IR.
49
- https://github.com/apple/ml-mobileclip
50
- - **Llama 3.2** — **Built with Llama.** Llama 3.2 is licensed under the Llama
51
- 3.2 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved.
52
- (`Llama-3.2-Community.txt`; Acceptable Use Policy:
53
- https://www.llama.com/llama3_2/use-policy)
54
- - **fast-plate-ocr** — Copyright (c) 2024 ankandrew, MIT (`MIT-fast-plate-ocr.txt`).
55
- https://github.com/ankandrew/fast-plate-ocr
56
- - **RF-DETR** — © Roboflow, Apache-2.0. https://github.com/roboflow/rf-detr
57
- - **YuNet** — weights Copyright (c) 2020 Shiqi Yu, MIT (`MIT-yunet-reference.txt`).
58
- https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet ·
59
- [license](https://github.com/opencv/opencv_zoo/blob/main/models/face_detection_yunet/LICENSE).
60
- Training code BSD-3-Clause (`BSD-3-Clause.txt`),
61
- https://github.com/ShiqiYu/libfacedetection.train.
62
- Trained on WIDER FACE, whose images are CC BY-NC-ND.
63
- - **AuraFace v1** — fal.ai, Apache-2.0. https://huggingface.co/fal/AuraFace-v1
64
- - **SigLIP 2** — © Google LLC, Apache-2.0 (`Apache-2.0.txt`).
65
- https://huggingface.co/google/siglip2-base-patch16-224 ·
66
- https://github.com/google-research/big_vision. CamStack's SigLIP 2 files are
67
- modified: the vision input scaling `2x - 1` is baked into the graph, the text
68
- graph slices its input to the model's 64 positions, the tokenizer lower-cases,
69
- and the towers are converted to ONNX, OpenVINO IR and CoreML FP16.
70
- - **EasyOCR** — JaidedAI, Apache-2.0. https://github.com/JaidedAI/EasyOCR
71
- - **U²-Net** — Xuebin Qin et al., Apache-2.0. https://github.com/xuebinqin/U-2-Net
72
- - **YAMNet** — © Google LLC, Apache-2.0.
73
- https://github.com/tensorflow/models/tree/master/research/audioset/yamnet
74
- - **AIY Vision Birds V1** and the **Coral Edge TPU models** — © Google LLC,
75
- Apache-2.0. https://github.com/google-coral/test_data
76
- - **EfficientNet-Lite0** via **timm** — Ross Wightman, Apache-2.0.
77
- https://github.com/huggingface/pytorch-image-models
78
- - **torchvision MobileNetV3** — BSD-3-Clause (`BSD-3-Clause.txt`). https://github.com/pytorch/vision
79
- - **Scrypted plugin models** — Koushik Dutta, repository tagged MIT
80
- (`MIT-scrypted-plugin-models.txt`). https://huggingface.co/scrypted/plugin-models
81
- - **Qwen2.5, Qwen3-VL, Qwen3.6** — Alibaba Cloud, Apache-2.0. https://huggingface.co/Qwen
82
- - **Open Images V7** (animal-classifier training data) — annotations © Google
83
- LLC, licensed under CC BY 4.0 (`CC-BY-4.0.txt`). Images are listed by Google
84
- as CC BY 2.0, without warranty.
85
- https://storage.googleapis.com/openimages/web/factsfigures_v7.html
86
- - **Vehicle classification dataset** (vehicle-type-v1 training data) — by
87
- DrBimmer, https://huggingface.co/datasets/DrBimmer/vehicle-classification,
88
- licensed under CC BY-NC 4.0 (`CC-BY-NC-4.0.txt`). CamStack fine-tuned a model
89
- on it; the resulting weights are treated as non-commercial.
90
- - **AudioSet** ontology and labels (YAMNet) — © Google LLC, CC BY 4.0.
91
- https://research.google.com/audioset/
92
- - **COCO** annotations (YOLO pretraining) — COCO Consortium, CC BY 4.0. Images
93
- remain under the terms of their Flickr owners. https://cocodataset.org/#termsofuse
33
+ - © Ultralytics, AGPL-3.0. Corresponding source: the upstream Ultralytics checkpoint and scripts/build-camstack-models.py in https://github.com/camstack/server. https://github.com/ultralytics/ultralytics
34
+ - Coral Edge TPU models and AIY Vision Birds V1 © Google LLC, Apache-2.0. https://github.com/google-coral/test_data
35
+ - © Ultralytics, AGPL-3.0 (Ultralytics YOLOv9 weights). YOLOv9 architecture: Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9). Corresponding source: the upstream Ultralytics checkpoint and scripts/build-camstack-models.py in https://github.com/camstack/server. https://github.com/ultralytics/ultralytics
36
+ - © Ultralytics, AGPL-3.0 (YOLOv8n base, fine-tuned by CamStack with Ultralytics). The fine-tuning checkpoint is not published yet. https://github.com/ultralytics/ultralytics
37
+ - RF-DETR © Roboflow, Apache-2.0. https://github.com/roboflow/rf-detr
38
+ - SCRFD © InsightFace. Pretrained models released for non-commercial research purposes only. https://github.com/deepinsight/insightface/tree/master/detection/scrfd
39
+ - YuNet weights Copyright (c) 2020 Shiqi Yu, MIT. Training code: ShiqiYu/libfacedetection.train, BSD-3-Clause. https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet
40
+ - AuraFace v1 by fal.ai, Apache-2.0. https://huggingface.co/fal/AuraFace-v1
41
+ - Scrypted plugin models, Koushik Dutta: repository tagged MIT (licenses/models/MIT-scrypted-plugin-models.txt), no per-model terms. https://huggingface.co/scrypted/plugin-models
42
+ - © Ultralytics, AGPL-3.0 (YOLOv8n base, fine-tuned for plates by an unidentified third party). CamStack holds no training checkpoint; the ONNX file is the only form it has. https://github.com/ultralytics/ultralytics
43
+ - fast-plate-ocr, MIT License, copyright (c) 2024 ankandrew (full notice: licenses/models/MIT-fast-plate-ocr.txt). https://github.com/ankandrew/fast-plate-ocr
44
+ - EasyOCR © JaidedAI, Apache-2.0. https://github.com/JaidedAI/EasyOCR
45
+ - EfficientNet-Lite0 via timm (Ross Wightman), Apache-2.0. Open Images V7 annotations © Google LLC, CC BY 4.0; images listed by Google as CC BY 2.0, without warranty. https://github.com/huggingface/pytorch-image-models
46
+ - torchvision MobileNetV3, BSD-3-Clause. Trained on the Vehicle classification dataset by DrBimmer (https://huggingface.co/datasets/DrBimmer/vehicle-classification), CC BY-NC 4.0. https://github.com/pytorch/vision
47
+ - Apple Machine Learning Research Model is licensed under the Apple Machine Learning Research Model License Agreement. https://github.com/apple/ml-mobileclip
48
+ - SigLIP 2 © Google LLC, Apache-2.0. https://huggingface.co/google/siglip2-base-patch16-224
49
+ - U²-Net © Xuebin Qin et al., Apache-2.0. https://github.com/xuebinqin/U-2-Net
50
+ - YAMNet © Google LLC, Apache-2.0. AudioSet ontology and labels © Google LLC, CC BY 4.0. https://github.com/tensorflow/models/tree/master/research/audioset/yamnet
51
+ - Qwen models © Alibaba Cloud, Apache-2.0. https://huggingface.co/Qwen · https://huggingface.co/unsloth · https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF
52
+ - Built with Llama. Llama 3.2 is licensed under the Llama 3.2 Community License, Copyright © Meta Platforms, Inc. All Rights Reserved. https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF
53
+ - Scrypted YOLOv9 ReLU detectors, Koushik Dutta (scrypted/plugin-models, repository tagged MIT); trained with the YOLOv9 code of Chien-Yao Wang, I-Hau Yeh, Hong-Yuan Mark Liao, GPL-3.0 (https://github.com/WongKinYiu/yolov9). https://huggingface.co/scrypted/plugin-models
54
+
55
+ Training data under attribution terms:
56
+
57
+ - **COCO 2017** (training data of `yolo26n` and 53 more): annotations CC-BY-4.0; images under their Flickr owners' terms. https://cocodataset.org/#termsofuse
58
+ - **WIDER FACE** (training data of `scrfd-2.5g` and 1 more): research-oriented terms; images CC BY-NC-ND. http://shuoyang1213.me/WIDERFACE/
59
+ - **Open Images V7** (training data of `animal-classifier`): annotations CC-BY-4.0 (Google LLC); images listed as CC-BY-2.0, no warranty. https://storage.googleapis.com/openimages/web/factsfigures_v7.html
60
+ - **DrBimmer/vehicle-classification** (training data of `vehicle-type-v1`): CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading). https://huggingface.co/datasets/DrBimmer/vehicle-classification
61
+ - **AudioSet ontology/labels** (training data of `yamnet-onnx`): CC-BY-4.0 (Google LLC). https://research.google.com/audioset/
94
62
 
95
63
  ## Source offer for the AGPL-3.0 weights
96
64
 
@@ -100,9 +68,7 @@ under [Non-commercial models](#non-commercial-models).
100
68
  cards link here instead of repeating it.
101
69
  -->
102
70
 
103
- The folders `objectDetection/yolo26`, `objectDetection/yolov9`,
104
- `segmentation/yolo26-seg`, `plateDetection/yolov8-plate` and
105
- `packageDetection/yolov8-package` of the model mirror hold Ultralytics weights,
71
+ The folders `objectDetection/yolo26`, `objectDetection/yolov9`, `packageDetection/yolov8-package`, `plateDetection/yolov8-plate` and `segmentation/yolo26-seg` of the model mirror hold Ultralytics weights,
106
72
  modified by CamStack and distributed under AGPL-3.0. Their Corresponding Source
107
73
  is the public CamStack source repository, **https://github.com/camstack/server**
108
74
  (MIT), together with the upstream checkpoints it starts from:
@@ -136,106 +102,143 @@ What the repository does **not** cover yet:
136
102
  These are downloaded by default or selectable, and their terms **do not allow
137
103
  commercial use**:
138
104
 
139
- | Model | Terms |
140
- | --- | --- |
141
- | `scrfd-2.5g` (face detection, selectable, not the default since 2026-09-26) | InsightFace pretrained models: non-commercial research purposes only |
142
- | `mobileclip-s1`, `mobileclip-s2`, `mobileclip-s1-text`, `mobileclip-s2-text` (semantic search, `mobileclip-s1` default) | Apple Machine Learning Research Model License: research purposes only, no commercial product or service |
143
- | `vehicle-type-v1` (vehicle classifier) | trained on a CC BY-NC 4.0 dataset; weights treated as non-commercial |
144
- | `bird-nabirds-404` (hidden, pending removal) | NABirds: no reproduction, distribution or products without the Cornell Lab's written permission |
105
+ | Model | Used for | Terms |
106
+ | --- | --- | --- |
107
+ | `scrfd-2.5g` | Face detection | LicenseRef-InsightFace-NonCommercial-Research; training data: research-oriented terms; images CC BY-NC-ND ([terms](https://github.com/deepinsight/insightface#license)) |
108
+ | `vehicle-type-v1` (default) | Vehicle classifier | CC-BY-NC-4.0; training data: CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading) ([terms](https://creativecommons.org/licenses/by-nc/4.0/)) |
109
+ | `mobileclip-s1` (default) | Semantic search, image encoders (CLIP) | LicenseRef-Apple-AMLR ([terms](https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS)) |
110
+ | `mobileclip-s2` | Semantic search, image encoders (CLIP) | LicenseRef-Apple-AMLR ([terms](https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS)) |
111
+ | `mobileclip-s1-text` | Semantic search, text encoders (CLIP) | LicenseRef-Apple-AMLR ([terms](https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS)) |
112
+ | `mobileclip-s2-text` | Semantic search, text encoders (CLIP) | LicenseRef-Apple-AMLR ([terms](https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS)) |
145
113
 
146
114
  ## Models
147
115
 
148
116
  "Mirror" means https://huggingface.co/camstack/camstack-models, folder given.
149
117
  "Code / weights" gives the two licences separately because they often differ.
150
118
  **Unknown** means no licence could be traced; it does not mean free to use.
119
+ *default* marks the model a step runs when nobody chose one; *hidden* marks an
120
+ entry kept resolvable for a saved selection but no longer offered.
151
121
 
152
122
  ### Object detection
153
123
 
154
124
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
155
125
  | --- | --- | --- | --- | --- | --- |
156
- | `yolo26n`, `yolo26s`, `yolo26m`, `yolo26l`, `yolo26x`, with every `-fp16`, `-int8`, `-320`, `-256`, `-320-int8`, `-256-int8` variant | Ultralytics YOLO26, COCO-pretrained | AGPL-3.0 / AGPL-3.0 | COCO 2017 (annotations CC BY 4.0) | exported to ONNX, OpenVINO IR (FP32/FP16) and CoreML FP16; `-320`/`-256` re-exported at that input size; `-int8` OpenVINO NNCF post-training INT8 | Mirror `objectDetection/yolo26` |
157
- | `yolov9{t,s,m,c}-320`, `yolov9{t,s,m,c}-640`, and their `-int8` twins | Ultralytics YOLOv9 weights, COCO-pretrained; architecture by WongKinYiu | AGPL-3.0 / AGPL-3.0 (original YOLOv9 repository GPL-3.0) | COCO 2017 | exported to ONNX, OpenVINO IR FP16 and CoreML at 320 and 640; `-int8` NNCF INT8 | Mirror `objectDetection/yolov9` |
158
- | `ssd-mobilenet-v2-coco-edgetpu`, `efficientdet-lite0-edgetpu` | Google Coral `test_data` | Apache-2.0 / Apache-2.0 | COCO | none | https://github.com/google-coral/test_data |
159
- | `ssdlite-mobiledet-coco-edgetpu` (selectable, not the default) | Google Coral `test_data`, `ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite` (sha256 `b69e508e…434a2e`); MobileDets (Xiong et al., CVPR 2021) trained with the TensorFlow Object Detection API, https://github.com/tensorflow/models/tree/master/research/object_detection | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`; https://github.com/google-coral/test_data/blob/master/LICENSE) | COCO 2017 (annotations CC BY 4.0, images under Flickr terms) | none: mirrored byte for byte, with the CPU build and `coco_labels.txt` beside it (`scripts/build-ssdlite-mobiledet-model.py`) | Mirror `objectDetection/ssdlite-mobiledet` |
126
+ | `yolo26n` (default), `yolo26s`, `yolo26m`, `yolo26l`, `yolo26x` (hidden), `yolo26n-fp16` (hidden), `yolo26n-int8`, `yolo26s-fp16` (hidden), `yolo26s-int8`, `yolo26m-fp16` (hidden), `yolo26m-int8`, `yolo26l-fp16` (hidden), `yolo26l-int8`, `yolo26n-320`, `yolo26n-320-int8`, `yolo26n-256`, `yolo26n-256-int8`, `yolo26s-320`, `yolo26s-320-int8`, `yolo26s-256`, `yolo26s-256-int8`, `yolo26m-320`, `yolo26m-320-int8`, `yolo26m-256`, `yolo26m-256-int8`, `yolo26l-320`, `yolo26l-320-int8`, `yolo26l-256`, `yolo26l-256-int8`, `yolo26x-fp16` (hidden), `yolo26x-int8` (hidden) | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML (scripts/build-camstack-models.py); OpenVINO FP16 export; exported to OpenVINO IR, then OpenVINO NNCF INT8 post-training quantisation; re-exported at 320×320 to ONNX, OpenVINO IR and CoreML; re-exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; re-exported at 256×256 to ONNX, OpenVINO IR and CoreML; re-exported at 256×256 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolo26` |
127
+ | `ssd-mobilenet-v2-coco-edgetpu` (default), `efficientdet-lite0-edgetpu` | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none | https://github.com/google-coral/test_data |
128
+ | `ssdlite-mobiledet-coco-edgetpu` | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none: ssdlite_mobiledet_coco_qat_postprocess_edgetpu.tflite mirrored byte for byte (sha256 b69e508e…434a2e), with the CPU build and coco_labels.txt beside it (scripts/build-ssdlite-mobiledet-model.py) | mirror `objectDetection/ssdlite-mobiledet` |
129
+ | `yolov9t-320`, `yolov9t-320-int8`, `yolov9t-640`, `yolov9t-640-int8`, `yolov9s-320`, `yolov9s-320-int8`, `yolov9s-640`, `yolov9s-640-int8`, `yolov9m-320`, `yolov9m-320-int8`, `yolov9m-640`, `yolov9m-640-int8`, `yolov9c-320`, `yolov9c-320-int8`, `yolov9c-640`, `yolov9c-640-int8` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported at 320×320 to ONNX, OpenVINO IR FP16 and CoreML; exported at 320×320 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation; exported at 640×640 to ONNX, OpenVINO IR FP16 and CoreML; exported at 640×640 to OpenVINO IR; OpenVINO NNCF INT8 post-training quantisation | mirror `objectDetection/yolov9` |
160
130
 
161
131
  ### Package detection
162
132
 
163
133
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
164
134
  | --- | --- | --- | --- | --- | --- |
165
- | `rfdetr-package` | Roboflow RF-DETR-M | Apache-2.0 / Apache-2.0 | fine-tuning set not recorded (unverified) | fine-tuned to 2 classes at 576; exported to ONNX, OpenVINO IR and CoreML; training checkpoint `.pth` also published | Mirror `packageDetection/rfdetr-package` |
166
- | `yolov8n-package` | Ultralytics YOLOv8n | AGPL-3.0 / AGPL-3.0 | most likely Roboflow Universe `package-at-front-door` (unverified) | fine-tuned by CamStack with Ultralytics; exported to ONNX, OpenVINO IR and CoreML | Mirror `packageDetection/yolov8-package` |
135
+ | `yolov8n-package` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | Roboflow Universe package-at-front-door (most likely): UNVERIFIED | fine-tuned by CamStack with Ultralytics; exported to ONNX, OpenVINO IR and CoreML | mirror `packageDetection/yolov8-package` |
136
+ | `rfdetr-package` (default) | [Roboflow RF-DETR](https://github.com/roboflow/rf-detr) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | parcel fine-tuning set (not recorded): UNVERIFIED | RF-DETR-M fine-tuned to 2 classes at 576; exported to ONNX, OpenVINO IR and CoreML; training checkpoint .pth also published | mirror `packageDetection/rfdetr-package` |
167
137
 
168
138
  ### Face detection
169
139
 
170
140
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
171
141
  | --- | --- | --- | --- | --- | --- |
172
- | `scrfd-2.5g` | InsightFace SCRFD 2.5G (bnkps), via the ONNX re-upload `RuteNL/SCRFD-face-detection-ONNX` | MIT / **InsightFace: non-commercial research only** | WIDER FACE (research-oriented terms) | converted to OpenVINO IR and CoreML FP16 | Mirror `faceDetection/scrfd` |
173
- | `yunet-2023mar` (face-detection default since 2026-09-26) | OpenCV Zoo YuNet 2023mar, `face_detection_yunet_2023mar.onnx` (fp32), https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet | BSD-3-Clause (training code, https://github.com/ShiqiYu/libfacedetection.train; `BSD-3-Clause.txt`) / MIT, Copyright (c) 2020 Shiqi Yu (opencv_zoo; `MIT-yunet-reference.txt`; https://github.com/opencv/opencv_zoo/blob/main/models/face_detection_yunet/LICENSE) | WIDER FACE (images CC BY-NC-ND) | input contract baked into the graph: the pool's RGB /255 becomes the upstream BGR 0..255 (`Mul(255)` plus a channel `Gather`); internal tensor names cleared in the OpenVINO IR; ONNX fp32, OpenVINO IR fp32, CoreML fp16 (`scripts/build-yunet-model.py`) | Mirror `faceDetection/yunet` |
174
- | `scrypted-yolov9t-face` (retired from the catalog, D643; nothing downloads it) | Scrypted `plugin-models` (YOLOv9t ReLU face) | repository tagged MIT; YOLOv9 architecture GPL-3.0 upstream / **Unknown** per model | unknown | OpenVINO IR converted by CamStack | its OpenVINO IR is still on mirror `faceDetection/scrypted-yolov9-face` |
175
- | `ssd-mobilenet-v2-face-edgetpu` (hidden) | Google Coral `test_data` | Apache-2.0 / Apache-2.0 | — | none | https://github.com/google-coral/test_data |
142
+ | `scrfd-2.5g` | [InsightFace SCRFD](https://github.com/deepinsight/insightface/tree/master/detection/scrfd) | MIT / **LicenseRef-InsightFace-NonCommercial-Research** (`InsightFace-terms.txt`) | WIDER FACE: research-oriented terms; images CC BY-NC-ND | obtained via RuteNL/SCRFD-face-detection-ONNX; converted to OpenVINO IR and CoreML FP16 | mirror `faceDetection/scrfd` |
143
+ | `yunet-2023mar` (default) | [OpenCV Zoo YuNet](https://github.com/opencv/opencv_zoo/tree/main/models/face_detection_yunet) | BSD-3-Clause (`BSD-3-Clause.txt`) / MIT (`MIT-yunet-reference.txt`) | WIDER FACE: research-oriented terms; images CC BY-NC-ND | input contract baked into the graph (the pool RGB /255 becomes the upstream BGR 0..255: Mul(255) plus a channel Gather); internal tensor names cleared in the OpenVINO IR; ONNX fp32, OpenVINO IR fp32, CoreML fp16 (scripts/build-yunet-model.py) | mirror `faceDetection/yunet` |
144
+ | `ssd-mobilenet-v2-face-edgetpu` (hidden) | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | — | none | https://github.com/google-coral/test_data |
176
145
 
177
146
  ### Face recognition
178
147
 
179
148
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
180
149
  | --- | --- | --- | --- | --- | --- |
181
- | `arcface-r100` (a ResNet34) | re-upload `onnx-community/arcface-onnx` (itself pointing at `garavv/arcface-onnx`); original author not stated | **Unknown** / **Unknown** | not stated | converted to OpenVINO IR and CoreML FP16 | Mirror `faceRecognition/arcface` |
182
- | `auraface-r100` | fal.ai AuraFace v1 (`glintr100.onnx` only) | Apache-2.0 / Apache-2.0 | stated upstream as commercially and publicly available sources | input scaling `y = 2x - 1` baked ahead of the first Conv (`scripts/build-auraface-model.py`); converted to OpenVINO IR and CoreML FP16 | Mirror `faceRecognition/auraface` |
183
- | `inception-resnet-v1` | Scrypted `plugin-models` | repository tagged MIT / **Unknown** per model | not stated | OpenVINO IR converted by CamStack | ONNX and CoreML: https://huggingface.co/scrypted/plugin-models · OpenVINO: mirror `faceRecognition/inception-resnet-v1` |
150
+ | `arcface-r100` | [onnx-community/arcface-onnx (re-upload of garavv/arcface-onnx)](https://huggingface.co/onnx-community/arcface-onnx) | — / **Unknown** | — | converted to OpenVINO IR and CoreML FP16 | mirror `faceRecognition/arcface` |
151
+ | `auraface-r100` (default) | [fal.ai AuraFace v1 (glintr100.onnx only)](https://huggingface.co/fal/AuraFace-v1) | — / Apache-2.0 (`Apache-2.0.txt`) | — | input scaling y = 2x - 1 baked ahead of the first Conv (scripts/build-auraface-model.py); converted to OpenVINO IR and CoreML FP16 | mirror `faceRecognition/auraface` |
152
+ | `inception-resnet-v1` | [Scrypted plugin-models (repository tagged MIT, no per-model terms)](https://huggingface.co/scrypted/plugin-models) | — / **Unknown** | — | ONNX and CoreML fetched from scrypted/plugin-models; OpenVINO IR converted and re-hosted by CamStack | mirror `faceRecognition/inception-resnet-v1` · https://huggingface.co/scrypted/plugin-models |
184
153
 
185
- ### Licence plate detection and OCR
154
+ ### Licence plate detection
186
155
 
187
156
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
188
157
  | --- | --- | --- | --- | --- | --- |
189
- | `yolov8n-plate` | Ultralytics YOLOv8n fine-tuned for plates by a third party (trained 2023-12-05 per its metadata) | AGPL-3.0 / AGPL-3.0 | **unknown** | converted to OpenVINO IR, CoreML and TFLite fp32 (`tflite/camstack-yolov8n-plate_float32.tflite`, mirrored but not referenced by the catalog) | Mirror `plateDetection/yolov8-plate` |
190
- | `cct-s-v2-global` | `ankandrew/fast-plate-ocr` release model | MIT / MIT | private, not released upstream | input head removed (recorded in the ONNX `doc_string`); converted to OpenVINO IR and CoreML | Mirror `plateRecognition/cct-s-v2-global` |
191
- | `vgg-english-g2` | JaidedAI EasyOCR, via Scrypted `plugin-models` | Apache-2.0 / Apache-2.0 | — | OpenVINO IR converted by CamStack | ONNX and CoreML: https://huggingface.co/scrypted/plugin-models · OpenVINO: mirror `plateRecognition/vgg_english_g2` |
158
+ | `yolov8n-plate` (default) | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | unidentified plate dataset (third-party model, trained 2023-12-05 per its ONNX metadata): UNKNOWN | converted to OpenVINO IR and CoreML | mirror `plateDetection/yolov8-plate` |
192
159
 
193
- ### Classifiers
160
+ ### Licence plate reading
194
161
 
195
162
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
196
163
  | --- | --- | --- | --- | --- | --- |
197
- | `animal-classifier` | timm EfficientNet-Lite0 | Apache-2.0 / Apache-2.0 | Open Images V7 animal subset (annotations CC BY 4.0, © Google LLC) | fine-tuned by CamStack (8 classes); exported to ONNX, OpenVINO IR and CoreML | Mirror `animalClassification/animal-classifier` |
198
- | `animals-10` (hidden, pending removal) | origin not identified | **Unknown** / **Unknown** | unknown | converted to ONNX, OpenVINO IR and CoreML | Mirror `animalClassification/animals-10` |
199
- | `bird-classifier` | Google AIY Vision `birds_V1` | Apache-2.0 / Apache-2.0 | — | converted from TensorFlow with tf2onnx; OpenVINO IR and CoreML derived from it | Mirror `animalClassification/bird-classifier` |
200
- | `bird-classifier-aiy-edgetpu` (hidden) | Google Coral `test_data` | Apache-2.0 / Apache-2.0 | — | none | https://github.com/google-coral/test_data |
201
- | `bird-nabirds-404` (hidden, pending removal) | ResNet50 trained on NABirds (origin not recorded) | **Unknown** / NABirds: no products without Cornell Lab permission | NABirds (Cornell Lab of Ornithology) | converted to ONNX, OpenVINO IR and CoreML | Mirror `animalClassification/bird-nabirds` |
202
- | `vehicle-type-v1` | torchvision MobileNetV3-Large | BSD-3-Clause / **CC BY-NC 4.0** (from its data) | DrBimmer `vehicle-classification`, CC BY-NC 4.0 | fine-tuned by CamStack (8 classes); exported to ONNX, OpenVINO IR and CoreML | Mirror `vehicleClassification/vehicle-type-v1` |
203
- | `vehicle-type-efficientnet` (hidden, pending removal) | trained on VMMRdb (origin not recorded) | **Unknown** / VMMRdb terms unverified | VMMRdb | converted to ONNX, OpenVINO IR and CoreML | Mirror `vehicleClassification/efficientnet` |
164
+ | `cct-s-v2-global` (default) | [ankandrew/fast-plate-ocr](https://github.com/ankandrew/fast-plate-ocr) | MIT / MIT (`MIT-fast-plate-ocr.txt`) | fast-plate-ocr training set: private, not released upstream | input head removed (recorded in the ONNX doc_string); converted to OpenVINO IR and CoreML | mirror `plateRecognition/cct-s-v2-global` |
165
+ | `vgg-english-g2` | [JaidedAI EasyOCR (via Scrypted plugin-models)](https://github.com/JaidedAI/EasyOCR) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | — | ONNX and CoreML fetched from scrypted/plugin-models; OpenVINO IR converted and re-hosted by CamStack | mirror `plateRecognition/vgg_english_g2` · https://huggingface.co/scrypted/plugin-models |
204
166
 
205
- ### Semantic search (CLIP)
167
+ ### Animal classifier
206
168
 
207
169
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
208
170
  | --- | --- | --- | --- | --- | --- |
209
- | `mobileclip-s1`, `mobileclip-s2` (image) | Apple `ml-mobileclip` | MIT / **Apple Machine Learning Research Model License** | per Apple | Model Derivative: converted to OpenVINO IR and CoreML FP16 | Mirror `clip/mobileclip-s1`, `clip/mobileclip-s2` |
210
- | `mobileclip-s1-text`, `mobileclip-s2-text` | Apple `ml-mobileclip`, with the CLIP tokenizer | MIT / **Apple Machine Learning Research Model License** | per Apple | Model Derivative: quantised to INT8 ONNX and converted to OpenVINO IR | Mirror `clip/mobileclip-s1`, `clip/mobileclip-s2` |
211
- | `siglip2-b16-224` (image) | Google SigLIP 2 base patch16-224 (`google/siglip2-base-patch16-224`) | Apache-2.0 / Apache-2.0 | WebLI (Google internal, not released) | input scaling `y = 2x - 1` baked ahead of the patch embedding; converted to OpenVINO IR and CoreML FP16 (an FP32 ONNX is hosted as the verification reference) (`scripts/build-siglip2-model.py`) | Mirror `clip/siglip2` |
212
- | `siglip2-b16-224-text` | Google SigLIP 2 base patch16-224, with its Gemma tokenizer | Apache-2.0 / Apache-2.0 | WebLI (Google internal, not released) | input sliced to the model's 64 positions in the graph; ONNX weights FP16, OpenVINO IR and CoreML FP16; a `Lowercase` normalizer prepended to the tokenizer | Mirror `clip/siglip2` |
171
+ | `animal-classifier` (default) | [timm EfficientNet-Lite0, fine-tuned by CamStack](https://github.com/huggingface/pytorch-image-models) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | Open Images V7: annotations CC-BY-4.0 (Google LLC); images listed as CC-BY-2.0, no warranty | fine-tuned by CamStack on the Open Images V7 animal subset (8 classes); exported to ONNX, OpenVINO IR and CoreML | mirror `animalClassification/animal-classifier` |
172
+
173
+ ### Bird classifier
174
+
175
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
176
+ | --- | --- | --- | --- | --- | --- |
177
+ | `bird-classifier` (default) | [Google AIY Vision birds_V1](https://github.com/google-coral/test_data) | — / Apache-2.0 (`Apache-2.0.txt`) | — | converted from TensorFlow with tf2onnx; OpenVINO IR and CoreML derived from it | mirror `animalClassification/bird-classifier` |
178
+ | `bird-classifier-aiy-edgetpu` (hidden) | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | — | none | https://github.com/google-coral/test_data |
179
+
180
+ ### Vehicle classifier
181
+
182
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
183
+ | --- | --- | --- | --- | --- | --- |
184
+ | `vehicle-type-v1` (default) | [torchvision MobileNetV3-Large, fine-tuned by CamStack](https://github.com/pytorch/vision) | BSD-3-Clause (`BSD-3-Clause.txt`) / **CC-BY-NC-4.0** (`CC-BY-NC-4.0.txt`) | DrBimmer/vehicle-classification: CC-BY-NC-4.0 — treated as binding the trained weights (conservative reading) | fine-tuned by CamStack (8 classes); exported to ONNX, OpenVINO IR and CoreML | mirror `vehicleClassification/vehicle-type-v1` |
185
+
186
+ ### Semantic search, image encoders (CLIP)
187
+
188
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
189
+ | --- | --- | --- | --- | --- | --- |
190
+ | `mobileclip-s1` (default) | [Apple ml-mobileclip](https://github.com/apple/ml-mobileclip) | MIT / **LicenseRef-Apple-AMLR** (`Apple-AMLR.txt`) | — | model derivative: vision encoders converted to OpenVINO IR and CoreML FP16 | mirror `clip/mobileclip-s1` |
191
+ | `mobileclip-s2` | [Apple ml-mobileclip](https://github.com/apple/ml-mobileclip) | MIT / **LicenseRef-Apple-AMLR** (`Apple-AMLR.txt`) | — | model derivative: vision encoders converted to OpenVINO IR and CoreML FP16 | mirror `clip/mobileclip-s2` |
192
+ | `siglip2-b16-224` | [Google SigLIP 2 (google/siglip2-base-patch16-224)](https://huggingface.co/google/siglip2-base-patch16-224) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | WebLI: Google internal, not released | input scaling y = 2x - 1 baked ahead of the patch embedding; converted to OpenVINO IR and CoreML FP16, an FP32 ONNX hosted as the verification reference (scripts/build-siglip2-model.py) | mirror `clip/siglip2` |
193
+
194
+ ### Semantic search, text encoders (CLIP)
195
+
196
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
197
+ | --- | --- | --- | --- | --- | --- |
198
+ | `mobileclip-s1-text` | [Apple ml-mobileclip](https://github.com/apple/ml-mobileclip) | MIT / **LicenseRef-Apple-AMLR** (`Apple-AMLR.txt`) | — | model derivative: text encoders quantised to INT8 ONNX and converted to OpenVINO IR | mirror `clip/mobileclip-s1` |
199
+ | `mobileclip-s2-text` | [Apple ml-mobileclip](https://github.com/apple/ml-mobileclip) | MIT / **LicenseRef-Apple-AMLR** (`Apple-AMLR.txt`) | — | model derivative: text encoders quantised to INT8 ONNX and converted to OpenVINO IR | mirror `clip/mobileclip-s2` |
200
+ | `siglip2-b16-224-text` | [Google SigLIP 2 (google/siglip2-base-patch16-224)](https://huggingface.co/google/siglip2-base-patch16-224) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | WebLI: Google internal, not released | input sliced to the model's 64 positions in the graph; ONNX weights FP16, OpenVINO IR and CoreML FP16; a Lowercase normalizer prepended to the Gemma tokenizer (scripts/build-siglip2-model.py) | mirror `clip/siglip2` |
213
201
 
214
202
  ### Segmentation
215
203
 
216
204
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
217
205
  | --- | --- | --- | --- | --- | --- |
218
- | `u2netp` | `xuebinqin/U-2-Net` | Apache-2.0 / Apache-2.0 | DUTS-TR (terms not checked) | converted to ONNX, OpenVINO IR and CoreML | Mirror `segmentationRefiner/u2netp` |
219
- | `yolo26n-seg`, `yolo26s-seg`, `yolo26m-seg` | Ultralytics YOLO26-seg, COCO-pretrained | AGPL-3.0 / AGPL-3.0 | COCO 2017 | exported to ONNX, OpenVINO IR and CoreML | Mirror `segmentation/yolo26-seg` |
206
+ | `u2netp` (default) | [xuebinqin/U-2-Net](https://github.com/xuebinqin/U-2-Net) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | DUTS-TR: not checked | converted to ONNX, OpenVINO IR and CoreML | mirror `segmentationRefiner/u2netp` |
207
+
208
+ ### Instance segmentation (dormant step)
209
+
210
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
211
+ | --- | --- | --- | --- | --- | --- |
212
+ | `yolo26n-seg`, `yolo26s-seg`, `yolo26m-seg` | [Ultralytics](https://github.com/ultralytics/ultralytics) | AGPL-3.0 / AGPL-3.0 (`AGPL-3.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | exported to ONNX, OpenVINO IR and CoreML | mirror `segmentation/yolo26-seg` |
220
213
 
221
214
  ### Audio
222
215
 
223
216
  | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
224
217
  | --- | --- | --- | --- | --- | --- |
225
- | `yamnet-onnx` | `tensorflow/models` `research/audioset/yamnet` | Apache-2.0 / Apache-2.0 | AudioSet (labels CC BY 4.0, © Google LLC) | converted from TensorFlow with tf2onnx; OpenVINO IR derived from it | Mirror `audioClassification/yamnet` |
226
- | `apple-soundanalysis` | Apple SoundAnalysis, built into macOS | under Apple's macOS licence | — | nothing downloaded | built in |
218
+ | `yamnet-onnx` (default) | [tensorflow/models research/audioset/yamnet](https://github.com/tensorflow/models/tree/master/research/audioset/yamnet) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | AudioSet ontology/labels: CC-BY-4.0 (Google LLC) | converted from TensorFlow with tf2onnx; OpenVINO IR derived from it | mirror `audioClassification/yamnet` |
219
+ | `apple-soundanalysis` (default) | [Apple SoundAnalysis (macOS built-in)](https://developer.apple.com/documentation/soundanalysis) | — / LicenseRef-Apple-macOS | — | none | built in, nothing downloaded |
227
220
 
228
- ### Language and vision-language models (AI addon, not hosted by CamStack)
221
+ ### Language and vision-language models (AI addon)
229
222
 
230
- | Catalog ids | Upstream | Code / weights | CamStack changes | Downloaded from |
231
- | --- | --- | --- | --- | --- |
232
- | `llm-qwen2.5-1.5b-instruct-q4` | Qwen2.5 1.5B Instruct | — / Apache-2.0 | none (GGUF Q4_K_M by Qwen) | https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF |
233
- | `llm-llama3.2-3b-instruct-q4` | Meta Llama 3.2 3B Instruct | — / Llama 3.2 Community License | none by CamStack (GGUF Q4_K_M by bartowski) | https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF |
234
- | `llm-qwen3-vl-2b-instruct-q4`, `llm-qwen3-vl-4b-instruct-q4`, `llm-qwen3-vl-8b-instruct-q4` | Qwen3-VL Instruct | — / Apache-2.0 | none by CamStack (GGUF by unsloth) | https://huggingface.co/unsloth (`Qwen3-VL-{2B,4B,8B}-Instruct-GGUF`) |
235
- | `llm-qwen3.6-35b-a3b-ud-q4` | Qwen3.6 35B-A3B | — / Apache-2.0 | none by CamStack (GGUF UD-Q4_K_M by unsloth) | https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF |
223
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
224
+ | --- | --- | --- | --- | --- | --- |
225
+ | `llm-qwen2.5-1.5b-instruct-q4` | [Qwen (Alibaba Cloud)](https://huggingface.co/Qwen) | — / Apache-2.0 (`Apache-2.0.txt`) | — | none (GGUF Q4_K_M published by Qwen; not re-hosted by CamStack) | https://huggingface.co/Qwen/Qwen2.5-1.5B-Instruct-GGUF |
226
+ | `llm-llama3.2-3b-instruct-q4` | [Meta Llama 3.2 (GGUF by bartowski)](https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF) | — / LicenseRef-Llama-3.2-Community (`Llama-3.2-Community.txt`) | — | Q4_K_M GGUF quantisation by bartowski (not re-hosted by CamStack) | https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF |
227
+ | `llm-qwen3-vl-2b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-2B-Instruct-GGUF |
228
+ | `llm-qwen3-vl-4b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-4B-Instruct-GGUF |
229
+ | `llm-qwen3-vl-8b-instruct-q4` | [Qwen3-VL (GGUF by unsloth)](https://huggingface.co/unsloth) | — / Apache-2.0 (`Apache-2.0.txt`) | — | Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3-VL-8B-Instruct-GGUF |
230
+ | `llm-qwen3.6-35b-a3b-ud-q4` | [Qwen3.6-35B-A3B (GGUF by unsloth)](https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF) | — / Apache-2.0 (`Apache-2.0.txt`) | — | UD-Q4_K_M GGUF quantisation by unsloth (not re-hosted by CamStack) | https://huggingface.co/unsloth/Qwen3.6-35B-A3B-GGUF |
231
+
232
+ ### Model Studio catalogs (object detection, imported on request)
233
+
234
+ | Catalog ids | Upstream | Code / weights | Training data | CamStack changes | Downloaded from |
235
+ | --- | --- | --- | --- | --- | --- |
236
+ | `scrypted-yolov9t-relu-coreml`, `scrypted-yolov9t-relu-onnx`, `scrypted-yolov9t-relu-test-coreml`, `scrypted-yolov9t-relu-test-onnx`, `scrypted-yolov9s-relu-coreml`, `scrypted-yolov9s-relu-onnx`, `scrypted-yolov9s-relu-test-coreml`, `scrypted-yolov9s-relu-test-onnx`, `scrypted-yolov9m-relu-coreml`, `scrypted-yolov9m-relu-onnx`, `scrypted-yolov9m-relu-test-coreml`, `scrypted-yolov9m-relu-test-onnx`, `scrypted-yolov9c-relu-coreml`, `scrypted-yolov9c-relu-onnx`, `scrypted-yolov9c-relu-test-coreml`, `scrypted-yolov9c-relu-test-onnx`, `scrypted-yolov9t-relu-openvino-fp32`, `scrypted-yolov9s-relu-openvino-fp32`, `scrypted-yolov9m-relu-openvino-fp32`, `scrypted-yolov9c-relu-openvino-fp32`, `scrypted-yolov9t-relu-openvino-int8`, `scrypted-yolov9t-relu-test-openvino-int8`, `scrypted-yolov9s-relu-openvino-int8`, `scrypted-yolov9s-relu-test-openvino-int8`, `scrypted-yolov9m-relu-openvino-int8`, `scrypted-yolov9m-relu-test-openvino-int8`, `scrypted-yolov9c-relu-openvino-int8`, `scrypted-yolov9c-relu-test-openvino-int8`, `scrypted-yolov9s-relu-sep-320-tflite-float16`, `scrypted-yolov9s-relu-sep-320-tflite-float32`, `scrypted-yolov9s-relu-sep-320-tflite-int8`, `scrypted-yolov9s-relu-sep-320-tflite-integer_quant`, `scrypted-yolov9s-relu-sep-320-tflite-full_integer_quant`, `scrypted-yolov9s-relu-sep-320-tflite-edgetpu` | [Scrypted plugin-models (repository tagged MIT, no per-model terms)](https://huggingface.co/scrypted/plugin-models) | GPL-3.0 (`GPL-3.0.txt`) / **Unknown** | not stated by Scrypted: UNKNOWN | none: downloaded as published, at a pinned revision | https://huggingface.co/scrypted/plugin-models |
237
+ | `frigate-mobiledet-edgetpu` | [Google Coral test_data](https://github.com/google-coral/test_data) | Apache-2.0 / Apache-2.0 (`Apache-2.0.txt`) | COCO 2017: annotations CC-BY-4.0; images under their Flickr owners' terms | none | https://github.com/google-coral/test_data |
236
238
 
237
239
  ### Your own models
238
240
 
239
- A model you import through Model Studio (uploaded, converted, or pulled from
240
- Frigate+ or Scrypted) keeps whatever licence its author published. CamStack
241
- does not change it and does not record it.
241
+ The Scrypted and Frigate catalogs that Model Studio offers are listed above. A
242
+ model you upload or convert yourself, or pull from your own Frigate+ account,
243
+ keeps whatever licence its author published. CamStack does not change it and
244
+ does not record it.
@@ -10205,6 +10205,48 @@ var ModelProviderIdSchema = _enum([
10205
10205
  "scrypted",
10206
10206
  "custom"
10207
10207
  ]);
10208
+ /**
10209
+ * The licence of a model, as a record rather than a bare SPDX string: a
10210
+ * permissive CODE licence routinely sits on top of restrictive WEIGHTS or
10211
+ * DATA, and the obligations (attribution, modification notices, source offers)
10212
+ * are per upstream. A persisted custom-model row written when this field was a
10213
+ * string still parses — the string is lifted into `{ weights }`.
10214
+ *
10215
+ * Every licence surface (the admin "Models and licenses" page,
10216
+ * `THIRD_PARTY_MODELS.md`, the Hugging Face model table) is GENERATED from
10217
+ * these records by `scripts/gen-model-licenses.ts` (D661).
10218
+ */
10219
+ var ModelLicenseSchema = preprocess((value) => typeof value === "string" ? { weights: value } : value, object({
10220
+ /** SPDX id of the WEIGHTS' terms, a `LicenseRef-*` for non-SPDX terms, or `UNKNOWN`. */
10221
+ weights: string().min(1),
10222
+ /** SPDX id of the upstream code that defines / trained the network. */
10223
+ code: string().min(1).optional(),
10224
+ /** Training data whose terms add obligations (attribution, non-commercial). */
10225
+ data: object({
10226
+ name: string().min(1),
10227
+ terms: string().min(1),
10228
+ url: string().url().optional()
10229
+ }).optional(),
10230
+ /** The project the weights come from. Required on built-in entries (guard). */
10231
+ upstream: object({
10232
+ name: string().min(1),
10233
+ url: string().url()
10234
+ }).optional(),
10235
+ /** Where the licence text governing the weights is published. */
10236
+ url: string().url().optional(),
10237
+ /** Attribution the licence REQUIRES, verbatim. */
10238
+ attribution: string().min(1).optional(),
10239
+ /** What CamStack changed. Required when `hosting` is `camstack-hf` (guard). */
10240
+ modifications: string().min(1).optional(),
10241
+ /** Who serves the file a node downloads. */
10242
+ hosting: _enum([
10243
+ "camstack-hf",
10244
+ "third-party",
10245
+ "built-in"
10246
+ ]).optional(),
10247
+ /** True when the weights or their data forbid commercial use. */
10248
+ nonCommercial: boolean().optional()
10249
+ }));
10208
10250
  var ModelCatalogEntrySchema = object({
10209
10251
  id: string(),
10210
10252
  name: string(),
@@ -10293,11 +10335,11 @@ var ModelCatalogEntrySchema = object({
10293
10335
  p95LatencyMs: record(string(), number()).optional()
10294
10336
  }).optional(),
10295
10337
  /**
10296
- * SPDX-ish license id of the model weights (e.g. `AGPL-3.0` for Ultralytics
10297
- * YOLO26, `GPL-3.0` for YOLOv9, `Apache-2.0` for D-FINE/RF-DETR). Matters for
10298
- * the retraining addon and any future commercial distribution.
10338
+ * The model's licence record — see {@link ModelLicenseSchema}. Optional in
10339
+ * the schema (a custom model's author may state none); REQUIRED and complete
10340
+ * on every built-in catalog entry (`scripts/check-catalog-licence.ts`).
10299
10341
  */
10300
- license: string().optional(),
10342
+ license: ModelLicenseSchema.optional(),
10301
10343
  /**
10302
10344
  * Variant-selector grouping. The UI groups models by `family` + `tier` and
10303
10345
  * offers `precision` / `optimization` as variant axes WITHIN a tier — so all
@@ -11625,12 +11667,32 @@ var AudioClassificationLabelSchema = object({
11625
11667
  originalClass: string().optional(),
11626
11668
  score: number()
11627
11669
  });
11670
+ /**
11671
+ * Did the classifier RUN on this window? (D660)
11672
+ *
11673
+ * `classified` with no labels means the model heard nothing above the
11674
+ * camera's floor. `not-classified` means nobody listened — and until D660 the
11675
+ * two were the same shape (`classification` absent), so a window the global
11676
+ * busy gate threw away read downstream exactly like a quiet one (D393).
11677
+ */
11678
+ var AudioClassifyOutcomeSchema = discriminatedUnion("state", [object({ state: literal("classified") }), object({
11679
+ state: literal("not-classified"),
11680
+ reason: _enum([
11681
+ "superseded",
11682
+ "error",
11683
+ "timeout",
11684
+ "disposed"
11685
+ ])
11686
+ })]);
11628
11687
  var AudioAnalysisResultSchema = object({
11629
11688
  level: AudioLevelSchema,
11689
+ /** Labels at or above the camera's floor. Absent = none — read `classifyOutcome` to know whether the model ran at all. */
11630
11690
  classification: object({
11631
11691
  labels: array(AudioClassificationLabelSchema).readonly(),
11632
11692
  inferenceMs: number()
11633
11693
  }).optional(),
11694
+ /** Whether the classifier ran on this window (D660). */
11695
+ classifyOutcome: AudioClassifyOutcomeSchema,
11634
11696
  timestamp: number()
11635
11697
  });
11636
11698
  var AudioAnalysisSettingsSchema = object({
@@ -22095,6 +22157,13 @@ var AudioEventSchema = object({
22095
22157
  originalClass: string().optional(),
22096
22158
  score: number()
22097
22159
  }).optional(),
22160
+ /**
22161
+ * Whether the classifier RAN on the window behind this row (D660). Absent
22162
+ * on rows written before D660 — unknown, NOT classified: until then a
22163
+ * window the analyzer's busy gate threw away was stored exactly like one
22164
+ * that heard nothing above the floor.
22165
+ */
22166
+ classifyOutcome: AudioClassifyOutcomeSchema.optional(),
22098
22167
  /** Populated by B5 (recording playback URL for this event). */
22099
22168
  mediaUrl: string().optional()
22100
22169
  });
@@ -54088,6 +54157,43 @@ async function readClusterModelPinStrict(api, stepId) {
54088
54157
  reason: choice.reason
54089
54158
  };
54090
54159
  }
54160
+ var APPLE_MOBILECLIP_AMLR = {
54161
+ weights: "LicenseRef-Apple-AMLR",
54162
+ code: "MIT",
54163
+ upstream: {
54164
+ name: "Apple ml-mobileclip",
54165
+ url: "https://github.com/apple/ml-mobileclip"
54166
+ },
54167
+ url: "https://github.com/apple/ml-mobileclip/blob/main/LICENSE_MODELS",
54168
+ attribution: "Apple Machine Learning Research Model is licensed under the Apple Machine Learning Research Model License Agreement.",
54169
+ modifications: "model derivative: vision encoders converted to OpenVINO IR and CoreML FP16",
54170
+ hosting: "camstack-hf",
54171
+ nonCommercial: true
54172
+ };
54173
+ var APPLE_MOBILECLIP_TEXT_AMLR = {
54174
+ ...APPLE_MOBILECLIP_AMLR,
54175
+ modifications: "model derivative: text encoders quantised to INT8 ONNX and converted to OpenVINO IR"
54176
+ };
54177
+ var SIGLIP2_APACHE = {
54178
+ weights: "Apache-2.0",
54179
+ code: "Apache-2.0",
54180
+ data: {
54181
+ name: "WebLI",
54182
+ terms: "Google internal, not released"
54183
+ },
54184
+ upstream: {
54185
+ name: "Google SigLIP 2 (google/siglip2-base-patch16-224)",
54186
+ url: "https://huggingface.co/google/siglip2-base-patch16-224"
54187
+ },
54188
+ url: "https://huggingface.co/google/siglip2-base-patch16-224",
54189
+ attribution: "SigLIP 2 © Google LLC, Apache-2.0.",
54190
+ modifications: "input scaling y = 2x - 1 baked ahead of the patch embedding; converted to OpenVINO IR and CoreML FP16, an FP32 ONNX hosted as the verification reference (scripts/build-siglip2-model.py)",
54191
+ hosting: "camstack-hf"
54192
+ };
54193
+ var SIGLIP2_TEXT_APACHE = {
54194
+ ...SIGLIP2_APACHE,
54195
+ modifications: "input sliced to the model's 64 positions in the graph; ONNX weights FP16, OpenVINO IR and CoreML FP16; a Lowercase normalizer prepended to the Gemma tokenizer (scripts/build-siglip2-model.py)"
54196
+ };
54091
54197
  //#endregion
54092
54198
  //#region src/embedding-encoder/catalogs/embedding-models.ts
54093
54199
  var HF_REPO = "camstack/camstack-models";
@@ -54163,6 +54269,7 @@ var SIGLIP2_META = {
54163
54269
  var CLIP_IMAGE_MODELS = [
54164
54270
  {
54165
54271
  id: "mobileclip-s1",
54272
+ license: APPLE_MOBILECLIP_AMLR,
54166
54273
  name: "MobileCLIP S1",
54167
54274
  description: "Apple MobileCLIP S1 — balanced vision encoder, 512-dim, 256×256 (fp16 OpenVINO/CoreML)",
54168
54275
  inputSize: {
@@ -54185,6 +54292,7 @@ var CLIP_IMAGE_MODELS = [
54185
54292
  },
54186
54293
  {
54187
54294
  id: "mobileclip-s2",
54295
+ license: APPLE_MOBILECLIP_AMLR,
54188
54296
  name: "MobileCLIP S2",
54189
54297
  description: "Apple MobileCLIP S2 — high-accuracy vision encoder, 512-dim, 256×256 (fp16 OpenVINO/CoreML)",
54190
54298
  inputSize: {
@@ -54207,6 +54315,7 @@ var CLIP_IMAGE_MODELS = [
54207
54315
  },
54208
54316
  {
54209
54317
  id: "siglip2-b16-224",
54318
+ license: SIGLIP2_APACHE,
54210
54319
  name: "SigLIP2 B/16",
54211
54320
  description: "Google SigLIP2 base, patch 16, 224×224 — Apache-2.0 vision encoder, 768-dim (fp16 OpenVINO/CoreML)",
54212
54321
  inputSize: {
@@ -54215,7 +54324,6 @@ var CLIP_IMAGE_MODELS = [
54215
54324
  },
54216
54325
  labels: [],
54217
54326
  inputNormalization: "none",
54218
- license: "Apache-2.0",
54219
54327
  clip: SIGLIP2_META,
54220
54328
  formats: {
54221
54329
  openvino: ovFormat(hf("clip/siglip2/openvino/camstack-siglip2-b16-224-vision.xml"), 186),
@@ -54239,6 +54347,7 @@ var CLIP_IMAGE_MODELS = [
54239
54347
  var CLIP_TEXT_MODELS = [
54240
54348
  {
54241
54349
  id: "mobileclip-s1-text",
54350
+ license: APPLE_MOBILECLIP_TEXT_AMLR,
54242
54351
  name: "MobileCLIP S1 Text Encoder",
54243
54352
  description: "Text encoder for MobileCLIP S1, 512-dim, int8 quantized (61 MB)",
54244
54353
  inputSize: {
@@ -54257,6 +54366,7 @@ var CLIP_TEXT_MODELS = [
54257
54366
  },
54258
54367
  {
54259
54368
  id: "mobileclip-s2-text",
54369
+ license: APPLE_MOBILECLIP_TEXT_AMLR,
54260
54370
  name: "MobileCLIP S2 Text Encoder",
54261
54371
  description: "Text encoder for MobileCLIP S2, 512-dim, int8 quantized (61 MB)",
54262
54372
  inputSize: {
@@ -54275,6 +54385,7 @@ var CLIP_TEXT_MODELS = [
54275
54385
  },
54276
54386
  {
54277
54387
  id: "siglip2-b16-224-text",
54388
+ license: SIGLIP2_TEXT_APACHE,
54278
54389
  name: "SigLIP2 B/16 Text Encoder",
54279
54390
  description: "Text encoder for SigLIP2 B/16, 768-dim, fp16 (565 MB)",
54280
54391
  inputSize: {
@@ -54282,7 +54393,6 @@ var CLIP_TEXT_MODELS = [
54282
54393
  height: 0
54283
54394
  },
54284
54395
  labels: [],
54285
- license: "Apache-2.0",
54286
54396
  formats: {
54287
54397
  onnx: {
54288
54398
  url: hf("clip/siglip2/onnx/camstack-siglip2-b16-224-text.onnx"),