One directory per model, laid out like apple/coreai-models
so that an agent primed on Apple’s repo recognises this one without new instructions:
models/<model>/
README.md the card — architecture, parity numbers, measured speeds, lessons
recipe.toml the configuration that produced each published bundle (our addition)
verify.toml expected config, where this port deliberately deviates from its source
Ready-to-run bundles are on Hugging Face — one best verified configuration per platform × compute unit. Every card links its source checkpoint, its exporter, and its parity numbers.
Two files here are generated, never hand-edited: _INVENTORY.md (every
published repo, with downloads and verification verdicts) and index.json (the
same thing machine-readable — start there if you are an agent).
python3 conversion/zoo_convert.py list # what can be reproduced
python3 conversion/zoo_convert.py show qwen3.5-0.8b # the command + its prerequisites
python3 conversion/zoo_convert.py doctor # is this venv wired up?
python3 conversion/zoo_convert.py run qwen3.5-0.8b # do it
Scripts that can run without any setup say so: show prints a uv line for the ones that
declare their own dependencies inline (PEP 723, the same mechanism Apple’s models/*/export.py
use), so uv run conversion/export_da3.py --variant small --dtype float16 --res 504 is the
whole story for those ports. The rest import re-authored model code and need the overlay
environment — zoo_convert.py doctor checks it.
Unlike Apple’s repo, several families share one exporter (Qwen3.5’s drives Ornith,
Qwen3.6-27B and Qwen3.8-27B too), so the export scripts stay in ../conversion/ and
recipe.toml names the one to run. A recipe marked status = "unverified" will not run
without --force: the repo does not record which configuration produced the published bundle,
and a wrong recipe is worse than a missing one.
Two fields name the two ends of a conversion, and they are easy to confuse:
hf_repo is the repo the recipe publishes to; source_hf_id is the checkpoint it
converts from. Ports whose upstream is not on the Hub carry source_repo instead
(RF-DETR, YOLOX, AdcSR, TripoSplat, LTX-Video are released on GitHub). Recording the source is
what lets a tool answer “how do I convert this model” from a Hugging Face id, rather than
only “how was that bundle produced” from a recipe name.
python3 conversion/zoo_verify.py mlboydaisuke/qwen3.5-0.8B-CoreAI # one repo
python3 conversion/zoo_verify.py --all --json models/_VERIFY.json # the whole catalog
python3 cli/coreai_doctor.py exports/my_bundle --profile iphone # known failure patterns
python3 cli/coreai_verify.py exports/my_bundle -n 16 # vs an HF oracle
Tier 1 compares a bundle’s tokenizer, chat template, context length and declared precision
against the source repository named in its own metadata.json — no oracle, no device, no
weights, so the whole catalog checks in minutes.
cli/ asks a different question of the same bundle: not “does it match its
source” but “does it match what the runtime will do with it”, from the bundle’s own files.
The two are complementary — a port can copy its source perfectly and still ship a value the
chat template never emits. See cli/DOCTOR_RULES.md.
| Card | Family | Download | Status | ||
|---|---|---|---|---|---|
qwen3.5.md |
Qwen3.5 (hybrid linear+full attn) | 🤗 qwen3.5-0.8B-CoreAI | 0.8B + 2B, top-1 exact vs HF | ||
gemma4-e2b.md |
Gemma 4 (multimodal; text decoder) | 🤗 gemma-4-E2B-CoreAI | 8/8 exact vs HF | ||
gemma4-vl.md |
Gemma 4 E2B vision (image+text→text, 2nd VLM) | vl/ in 🤗 gemma-4-E2B-CoreAI |
margin-ruled exact vs fp32 HF; 82.4 tok/s M4 Max / 25.5 iPhone 17 Pro (pipelined VLM rider) | ||
lfm2.5.md |
LFM2.5 (conv + full-attn hybrid, LiquidAI) | 🤗 LFM2.5-1.2B-CoreAI | 1.2B, oracle gate 16/16, 276.5 tok/s M4 Max / 44.1–46.6 iPhone (int8 + absmax int8 head) (pipelined) | ||
lfm2.5-2.6b.md |
LFM2.5 2.6B (same hybrid, 30L; reasoning model) | 🤗 LFM2.5-2.6B-CoreAI | oracle gate 16/16 on int8hu and int4lin; 116.7 tok/s M4 Max int8hu / 139.2 int4lin (2.0 GB), no iPhone measurement yet | ||
lfm2.5-vl.md |
LFM2.5-VL 450M + 3B (SigLIP2-NaFlex tower + the LFM2 decoder) — the smallest VLM here, 658 MB, and its 3.9 GB detail tier | 🤗 LFM2.5-VL-450M-CoreAI | vision cos 0.999996 + 48/48 token-exact vs fp32 HF; 387.2 tok/s M4 Max (text core) / 112.0 iPhone 17 Pro (image bound, nat 16/16 + image oracle 24/24) + vision 33.6 ms/image iPhone / 18.0 Mac (device cos 0.999995); int8lin 7/9 suite cases (fp16 baseline 8/9), int4 = 0/9, no-go. 3B (Mac-only, AOT past the iOS 2 GiB wall): vision 75.7 ms/image, text core 105.3 tok/s, suite 7/9 at int8 and int4 | ||
north-micro-vision.md |
North-Micro-Vision-Instruct (Cohere, 2.4B) — a Qwen3-VL tower reused verbatim + a parallel-block Cohere decoder; 11 languages | 🤗 North-Micro-Vision-CoreAI | fp32 ladder cos 1.000000 at every seam; suite 9/9 (338/338 tokens) at int8; 145.3/118.6 tok/s M4 Max, 21.5/18.2 iPhone 17 Pro with image oracle 24/24; vision 83.4 ms/image; int4 = 0/9 no-go | ||
minicpm-v-4.7-1b |
MiniCPM-V-4.7-1B (OpenBMB; image + text → text) — MiniCPM-V-4.6’s SigLIP-type tower in front of a Qwen3.5 hybrid decoder with canvas M-RoPE, derived in the graph from the ids and two static shifts; one 448×448 thumbnail, 64 image tokens | 🤗 MiniCPM-V-4.7-1B-CoreAI (published 2026-10-13, revision 51278afd) | int8hu decoder 1.31 GB + int8lin tower 614 MB (fp16 tower 1.09 GB beside it); vs fp32 HF: teacher-forced 44/44 non-knife-edge, P1–P4 free-run 4/4, end to end 4/4 with either tower; iPhone 18 Pro (device JIT) nat 23/23 + oracle 32/32, 98.0 tok/s decode, towers 67.8 / 66.5 ms; M4 Max Python runtime 7.44 ms per decode call | ||
wevisone-vl-2b |
WeVisOne-VL-2B (Tencent; image + words → boxes, counts, points, OCR, referring segmentation and alpha mattes) — built upon Qwen3-VL; its 9.5M-parameter pixel decoder reads the hidden state of each <OBJ>; the decoder returns it as a second output, the pixel decoder is two static graphs |
🤗 WeVisOne-VL-2B-CoreAI (published 2026-10-27, revision c370b50f) |
int8hu decoder 2.46 GB + fp16 tower with taps 0.81 GB + fp16 mask graphs 20 MB; vs the package in fp32 on the fixed 448 grid: decoder A 33/33, B 33/33 (the per-step bar: the card’s Decoder accuracy), suite boxes 100.0 %, counts 100.0 %, points 89.4 %, CER 0.000; mattes on the phone within MAE 5.81e-4, IoU 0.9959 of the package’s; iPhone 18 Pro (device JIT) one cut-out 0.99–1.00 s, seven 4.1 s, peak footprint 2.0 GB | ||
shieldstral.md |
Shieldstral-1.0-3B (Mistral) — a policy-conditioned safety classifier, shipped as a stateless graph rather than a decoder | 🤗 Shieldstral-CoreAI | ministral3 == Mistral + YARN measured at cos 1.000000 / |
ΔP | 0.00000; 9/9 verdicts vs fp32 at fp16, int8lin AND int4lin; 123.6 ms/verdict (S=256) / 232.5 ms (S=512) on M4 Max and 371.9 / 624.7 ms on an iPhone 17 Pro (9/9 there too), 2.53 GB; quantization buys size, not speed |
granite-4.0-h.md |
Granite 4.0-H (Mamba2 + attn hybrid, IBM) | 🤗 granite-4.0-h-CoreAI | 1b + 350m, oracle gate 16/16, 136.5 tok/s M4 Max / 35.4–37.1 iPhone 17 Pro (int8 head) (pipelined, first SSM-scan rider) | ||
nemotron-3-nano.md |
Nemotron-3-Nano 4B (Mamba2 + attn + MLP hybrid, NVIDIA) — zoo’s 2nd SSM-scan rider, 1st non-Granite Mamba2 | 🤗 Nemotron-3-Nano-4B-CoreAI | 4B int8hu 4.3 GB, AOT h18p, 16.0 tok/s iPhone 17 Pro (cooled) / 85.2 tok/s M4 Max (raw AIModel), nat 24/24 + oracle 24/24; no custom kernel | ||
minicpm5-1b.md |
MiniCPM5-1B (plain Llama dense, OpenBMB) | 🤗 MiniCPM5-1B-CoreAI | 1.08B int8 per-block-32 (rebuilt 2026-09-09; the per-channel bundle had dead LM-head rows and never halted); plus ios-ane-h18p/ — stock static iOS export, 8-bit palettized (1.3 GB), Neural Engine, device gate PASS 3/3 (4-bit fails), same-day A/B p128/g256: 76.8 tok/s decode vs 67.1 / 64.4 on the int8 GPU bundle; 24/24 + stop-exact vs HF fp32 on device, 61.7 tok/s iPhone 17 Pro, 246.6 tok/s M4 Max (pipelined, llama→mistral remap) |
||
qwen3-0.6b-official |
Qwen3-0.6B, Apple’s official recipe (no zoo port) — this card records the Neural Engine bundle | 🤗 qwen3-0.6b-CoreAI-official | ios-ane-h18p/ = the published ios/ IR (Apple’s mixed 4/8-bit iOS preset) AOT-compiled for the h18p Neural Engine with the GA toolchain, 31/31 ANE regions, 557 MB; device gate pending (2026-09-15) |
||
qwen3-4b-official |
Qwen3-4B, Apple’s official recipe (no zoo port) — this card records the Neural Engine bundle | 🤗 qwen3-4b-CoreAI-official | ios-ane-h18p/ = the published ios/ IR (mixed 4/8-bit, group 32) AOT-compiled for the h18p Neural Engine, 31/31 ANE regions, 2.66 GB; device gate pending (2026-09-15) |
||
minicpm5-2b |
MiniCPM5-2B (plain Llama dense, 42L, OpenBMB — the 1B recipe one YAML apart: int8 per-block-32) | 🤗 MiniCPM5-2B-CoreAI | 2.5B int8 per-block-32 (2.7 GB), 16/16 token-exact vs HF fp32 (margin-aware gate), 22.4 tok/s iPhone 17 Pro / 127.6 M4 Max (pipelined, llama→mistral remap); plus ios-ane-h18p/ — stock static iOS export, 4-bit palettized (1.4 GB), Neural Engine, device gate PASS 3/3, same-day A/B p128/g256: 55.4 / 51.5 tok/s decode vs 22.8 / 20.6 on the int8 GPU bundle |
||
fastcontext.md |
FastContext-1.0-4B-SFT (repo-exploration agent, Qwen3-4B arch, Microsoft) | 🤗 FastContext-1.0-4B-CoreAI | 4B 4bit, parity 23/24 argmax (ppl 1.41) vs HF, 20.4 tok/s decode / 22.1 prefill iPhone 17 Pro (AOT h18p GPU; zoo’s first stock-arch + first 4B-class iPhone LLM) | ||
youtu.md |
Youtu-LLM-2B (dense DeepSeek-MLA, Tencent) — zoo’s first iPhone MLA + first dense MLA (absorbed latent-KV + flash-decode kernel shared with GLM-4.7-Flash) | 🤗 Youtu-LLM-2B-CoreAI | 1.96B int8, token-exact vs HF fp32 (naive+absorbed 0 flips; int8 engine 16/16 device ≡ Mac ≡ HF), 102.8 tok/s M4 Max / ~19 iPhone 17 Pro | ||
rf-detr.md |
RF-DETR + RF-DETR-Seg (detection / instance segmentation, Roboflow) | 🤗 RF-DETR-CoreAI | det ×4 + seg ×6 fp32, gated cpu+gpu (mask IoU 1.000), 8.6–59.1 ms/frame M4 Max GPU | ||
depth-anything-3.md |
Depth Anything 3 (monocular depth, DINOv2+DPT, ByteDance) — zoo’s first depth model | 🤗 Depth-Anything-3-CoreAI | small + base, fp16/fp32, engine cos 1.000000 (cpu+gpu) / vs official mean r 0.98, 54 MB · 65.7 FPS M4 Max GPU (small fp16) | ||
qwen3-embedding.md |
Qwen3-Embedding (multilingual text embedder, last-token pooling + MRL, Alibaba) | 🤗 Qwen3-Embedding-0.6B-CoreAI | 0.6B fp16, torch ladder exact + engine gate cos 0.999998, 25–45 ms/embedding M4 Max GPU | ||
qwen3-reranker.md |
Qwen3-Reranker (cross-encoder reranker, yes/no logit score, Alibaba) | 🤗 Qwen3-Reranker-0.6B-CoreAI | 0.6B fp16, torch ladder exact (P(yes) Δ=0) + engine gate Δ<5e-4, 45.7 ms/score M4 Max GPU | ||
granite-embedding-97m |
Granite-Embedding-97M-Multilingual-R2 (ModernBERT encoder, CLS/L2, IBM) — zoo’s smallest embedder + first encoder-architecture one | 🤗 Granite-Embedding-97M-Multilingual-R2-CoreAI | 97M fp32, 35/35 vs HF at every stage (layer gate 1e-4, negative controls), iPhone 17 Pro h18p AOT 5.54 / 20.99 ms (S128/S512), M4 Max JIT 4.14 / 4.89 ms; w8 305 MB optional (cos 0.99941, not faster); tokenizer gated 1,362/1,362 | ||
decider-0.8b |
decider-0.8b (Mapika; System One decision model on Qwen3.5-0.8B-Base) — the zoo’s first decision model: typed Choice / Score / Noul questions answered by calibrated option-letter probabilities in one pass, no generation | 🤗 decider-0.8b-CoreAI | int8hu 1.34 GB (the Qwen3.5-0.8B ship recipe, HF id swapped); probability gate vs the author’s fp32 readout: argmax 44/44, max |Δp| 0.0084, mean of row means 0.00067; engine argmax 44/44; M4 Max decode 193.6 tok/s; Swift reads the argmax only until the read-last-logits primitive exists (design in knowledge/) | ||
decider-2b-vision |
decider-2b-vision (Mapika; the decider-2b v5 text weights in the Qwen3.5-2B vision-language model) — an image-input decision model: an image (photo, diagram, game frame) plus lettered questions answered by option-letter probabilities in one pass, no generation | 🤗 decider-2b-vision-CoreAI | int8 decoder with layers 0, 2, 5 fp16 (2.64 GB) + fp16-storage / fp32-math towers at 256×256 and 448×448 (660 / 663 MB); vs the author’s fp32 readout: fixture argmax 157/157, max |Δp| 0.0094; 500 held-out photo runs 497/497 + 3/3 near-ties, max 0.0146; Swift on the M4 Max 108/108, 0.32 s per 256×256 decision; iPhone 18 Pro (device JIT, increased-memory-limit) 108/108, 0.75 s per 256×256 decision, 1.4 s at 448×448 | ||
clef-flash |
clef-flash (Cloudflare; Qwen3.5-9B post-trained with a joint schema head) — a typed-decision model: a state (text, JSON or an image) and noul / choice / score questions answered with a probability for every option from one prefill, no generation |
🤗 clef-flash-CoreAI | fp16 decoder returning hidden rows (15.9 GB) or int8mix with layers 0–11 fp16 (11.8 GB) + the head as a graph (244 MB) + the fp16 lm_head table (2.03 GB) + fp16-storage / fp32-math towers at 256×256 and 448×448 (909 / 912 MB); vs the author’s fp32 readout: fixture argmax 397/397 + 4/4 near-ties, max |Δp| 0.0112; 40 held-out runs 186/186 + 2/2, max 0.0085; Swift on the M4 Max (AOT and JIT) 0.95 s per 436-token decision; Mac only (the decoder alone exceeds an iOS app’s memory) | ||
kev-0.8b |
Kev-0.8B (Jared Palmer; a rank-16 LoRA and a pointer head on Qwen3.5-0.8B-Base) — a typed-decision model: a state (text or JSON) and noul / choice / score questions, one row per question, a probability for every option, no generation |
🤗 Kev-0.8B-CoreAI | fp16 decoder returning hidden rows, 128 tokens a call with an fp32 Metal kernel for the linear-attention recurrence (1.51 GB), + the pointer head on the host; vs the author’s fp32 readout: fixture argmax 420/420 + 13/14 near-ties, max |Δp| 0.0124; held out 125/125 + 5/5, max 0.0058; Swift on the M4 Max (AOT = JIT) 29.9 ms per 94-token question; iPhone 18 Pro (device JIT, default memory limit) 420/420 + 13/14, max 0.0110; 37.8 ms per 94-token question | ||
d1-3b |
d1-3B (Liquid AI; post-trained from LFM2.5-VL-3B) — a typed-decision model that reads pictures: a state (text, JSON, pictures) and noul / choice / score questions, one row per question, a probability for every option from the logits of its option tokens, no generation |
🤗 d1-3B-CoreAI | two decoders returning hidden rows at 64 tokens a call, the Mac’s fp16 (5.56 GB) and the iPhone’s with the MLP linears int8 per block of 32 (3.70 GB), + the tied rows of 2,134 option ids on the host + a SigLIP2 tower, fp16 weights / fp32 math (0.85 GB), each with the export’s debug locations stripped; vs the provider’s fp32 readout: fixture argmax 392/392 + 1/1 near-tie, max |Δp| 0.0039 (fp16) / 0.0197 (int8mlp); held out 118/118 + 2/2, max 0.0140 (int8mlp); pictures 24/24, max 0.00049 / 0.0024; Swift on the M4 Max 34.3 ms per question (the fp16 .aimodel specialized on the Mac = its AOT asset bit for bit); iPhone 18 Pro (device JIT, increased-memory-limit) 416/416 + 1/1, max 0.0186; 48.0 ms per question |
||
kev-4b |
Kev-4B (Jared Palmer; the same recipe on Qwen3.5-4B-Base) — a typed-decision model: a state (text or JSON) and noul / choice / score questions, one row per question, a probability for every option, no generation |
🤗 Kev-4B-CoreAI | fp16 decoder returning hidden rows, 128 tokens a call with an fp32 Metal kernel for the linear-attention recurrence (8.41 GB), + the pointer head on the host; vs the author’s fp32 readout: fixture argmax 422/422 + 10/12 near-ties, max |Δp| 0.0153; held out 126/126 + 3/4, max 0.0096; Swift on the M4 Max (AOT = JIT) 100.2 ms per 94-token question; Mac only (an earlier graph’s iPhone AOT asset crashed at load) | ||
openthai-systemone |
OpenThai-SystemOne (iApp; Thai + English System One decision model on Qwen3.5-0.8B-Base with a 256-way slot head) — the zoo’s second decision model: Choice (up to 255 options) / Score / Noul with an abstain probability, no generation | 🤗 OpenThai-SystemOne-CoreAI | int8lin 1.07 GB (fp16 1.53 GB reference beside it); probability gate vs the author’s fp32 readout: argmax 50/50, max |Δp| 0.021, mean of row means 0.00066; both Swift engines 200/200; M4 Max S=1 prefill proxy 252.7 tok/s; through coreai-kit tokens / argmax 50/50 and SemIf authored144 balanced 0.725 | ||
laya-multilingual |
laya multilingual (Convai Innovations; mmBERT-base 322M encoder + typed decision head) — the zoo’s first encoder-type decision model: Choice / Score / Noul read at option markers in one forward pass, no prefill, no generation | 🤗 Laya-Multilingual-CoreAI | wfp16 645 MB (fp16 weights, fp32 compute; fp32 1.29 GB reference beside it), S=256 / 512, one bundle with main + act; oracle = the publisher’s package, frozen fixture reproduced bit for bit; argmax 81/81, max |Δp| 4.5e-6 on 201 rows × 2 windows (Mac GPU); two-tier layer gate (1e-4 absolute / 2e-4 relative) with five negative controls; M4 Max GPU 12.1 / 19.5 ms per question, iPhone h18p GPU AOT compiled but not measured; through coreai-kit tokens / markers 201/201, 11.5 ms per decision, SemIf authored144 balanced 0.6114 (the model’s own) |
||
julia-1 |
Julia-1 (Supersonic Labs; mmBERT-small 144M encoder + typed decision head, the laya design at half the width) — Choice / Score / Noul read at option markers in one forward pass | 🤗 Julia-1-CoreAI | fp32 582 MB, S=512 / 1024, one function main; oracle = the publisher’s julia package, its typed-decisions CPU totals 426/542/483 reproduced by the bundle’s argmax; argmax 2,120/2,120, max |Δp| 8.6e-5 (Mac GPU, S=1024); layer bar re-measured (1e-4 absolute / 5e-4 relative) with five negative controls; fp16 weight storage measured and not shipped (|Δp| 0.023); M4 Max GPU 8.3 / 16.0 ms per question; Neural Engine not used, iPhone not measured |
||
apus-decision-v1-4b |
APUS-Decision-v1-4B (source apus-ailab/APUS-OpenJev-v1-4B; Qwen3.5-4B text tower; 32-layer decision readout from A–P logits under the chat template; LM head retained) | 🤗 APUS-Decision-v1-4B-CoreAI | int8hu 5.77 GB, Mac GPU option argmax 48/48, max |Δp| 0.005302, both engines 96/96; measured through coreai-kit: 40/40 choice+noul parity, SemIf authored144 mean family balanced accuracy 0.906 | ||
qwen3.5-2b-decision |
Jev-Style-Qwen3.5-2B-Decision (chaoliangUNSW/Jev-Style-Qwen3.5-2B-Decision-MLX-bf16; calibrated English typed decisions, LM head retained) | 🤗 Qwen3.5-2B-Decision-CoreAI | int8hu 3.05 GB + fp16 reference 3.79 GB; both-reference option argmax 58/58, both engines 232/232; measured through coreai-kit 58/58 parity, SemIf authored144 balanced 0.798 | ||
system-one-scorer-4b |
pngwn/system-one-qwen3.5-4b-scorer (English scalar option scorer; Choice / noul / ordered Score, T=1.75; cc-by-nc-4.0) | 🤗 system-one-qwen3.5-4b-scorer-CoreAI | int8lin 5.10 GB + fp16 reference 8.44 GB; option-question argmax 48/48 both, engines 8/8 load calls; measured through coreai-kit: tokens/slots 280/280 and question argmax 48/48 both; int8lin max |Δp| 0.0110, 1,016 ms/question (contended); SemIf authored144 mean family balanced accuracy 0.844; kit catalog entry pending the Hub revision | ||
gliner25-decide |
GLiNER2.5-Decide (Fastino; DeBERTa-v3-large encoder + label head) — zero-shot classification with labels named at call time: one forward pass reads a logit per label at its [L] marker, several tasks per call, no generation |
HF upload pending (mlboydaisuke/GLiNER2.5-Decide-CoreAI) | fp16, S=256 / 512 (873 / 875 MB) + h19p AOT for the iPhone 18 Pro; oracle = gliner2 2.0.0 fp32, decisions 787/787 on 454 texts (Mac GPU max |Δlogit| 0.018, iPhone 18 Pro GPU 0.019); relative-position bucket table baked (coreai-torch 0.4.1 divides int by int as integers: 604/606 without it); iPhone 18 Pro 37.8 / 92.9 ms per call, M4 Max GPU 28 / 52 ms (contended); through coreai-kit TextClassifier token ids 454/454, decisions 787/787 |
||
holo2.md |
Holo2-4B (GUI-grounding / computer-use VLM, Qwen3-VL-4B backbone, H Company) | 🤗 Holo2-4B-CoreAI | 4B int8lin + fp16 vision, parity vision cos 0.9999 / decoder 16/16 vs fp32 HF; rides the Qwen3-VL pipeline; zoo’s first GUI-grounding / computer-use model | ||
colmodernvbert.md |
ColModernVBERT (visual document retriever, late-interaction/MaxSim, ModernBERT+SigLIP2) — zoo’s first visual retriever + first late-interaction model | 🤗 ColModernVBERT-CoreAI | 250M, query + doc encoders fp16/fp32, engine per-token cosine 1.000000 (fp32) / ≥0.99999 (fp16), MaxSim == processor.score exactly, single-tile retrieval 3/3 |
||
yolox.md |
YOLOX-S (single-stage anchor-free detector, YOLO-family, Megvii) — zoo’s first YOLO / single-stage detector (CNN counterpart to RF-DETR; needs host NMS) | 🤗 YOLOX-CoreAI | 8.97M fp32, gated cpu+gpu (head cos 1.000000, detections IoU 1.000), 4.80 ms · 208 FPS M4 Max GPU · ~22 ms iPhone 17 Pro GPU (device-verified live in DetectCamera) | ||
parakeet.md |
Parakeet-TDT-0.6B (FastConformer transducer / TDT, NVIDIA) — zoo’s first transducer / TDT (RNN-T family) ASR (3 graphs + host greedy loop, not an LLM) | 🤗 Parakeet-TDT-0.6B-CoreAI | 600M, encoder fp16 + predict/joint fp32, 77/77 token-exact e2e vs HF (GPU enc cos 0.999995); iPhone 17 Pro: 14.84 s clip → 0.31 s (47.9× real-time), AOT encoder load 3.9 s; 25 EU langs | ||
parakeet-v2 |
Parakeet-TDT-0.6B-v2 (same FastConformer TDT, English-only; vocab 1025 / blank 1024) — ported by Rahul Rachuri; NVIDIA ships v2 as a .nemo only, so the HF-layout checkpoint is itself a conversion (two fixes to transformers’ convert_nemo_to_hf.py) |
🤗 parakeet-tdt-0.6b-v2-coreai | 3 bundles, 82/82 token-exact e2e vs HF ParakeetForTDT (GPU enc cos 0.999998); iPhone 17 Pro Max 175.3× real-time over 3989.9 s of audio, 152/152 chunks and 20376/20376 tokens exact, load 0.27 s; M4 Pro 291× peak |
||
nemotron-asr-streaming.md |
Nemotron 3.5 ASR Streaming 0.6B (cache-aware FastConformer + pure RNN-T, NVIDIA) — zoo’s first STREAMING ASR (live mic, 320 ms chunks, 40 locales via a run-time language input, punctuation built in, any-length) | 🤗 Nemotron-3.5-ASR-Streaming-CoreAI | 600M, conformer fp16 (two 12-layer AOT halves) + predict/joint fp32, 99/99 token-exact e2e vs HF streaming; iPhone 17 Pro: 53 ms/chunk = 6.0× real-time, cached load ~4 s; OpenMDW-1.1 (commercial OK) | ||
funasr-nano.md |
Fun-ASR-Nano-2512 (SenseVoice SAN-M encoder + adaptor + fine-tuned Qwen3-0.6B, Tongyi Lab) — zh (7 dialects, Cantonese) / en / ja with a hotword prompt; the zoo’s first SAN-M / FSMN encoder | 🤗 Fun-ASR-Nano-2512-CoreAI | 985M, encoder fp16-weights/fp32-math 450 MB + decoder int8lin 759 MB (residual ×1/4 in-graph: the fine-tuned Qwen3 overflows fp16); 150/155 token-exact vs the fp32 funasr oracle, the other 5 knife-edge (oracle top-2 gap < 0.05), 0 above the floor, 155 clips = 5 examples + FLEURS en/zh/ja; WER/CER vs FLEURS 5.34 / 6.86 / 6.92 % (oracle 5.08 / 6.86 / 6.95); iPhone 18 Pro RTF 0.075 (device JIT, load 5.1 s cold → 0.9 s), M4 Max RTF 0.022; Apache-2.0 | ||
embeddinggemma-2-transcribe |
EmbeddingGemma 2 Transcribe (Google’s EmbeddingGemma 2 audio encoder, frozen, + a reader trained on LibriSpeech that reads each 40 ms token as the closest of 200,000 English words or blank) — speech→text with greedy CTC, no language model | 🤗 EmbeddingGemma-2-Transcribe-CoreAI (reader v2 upload pending) | fp16 encoder + fp16 reader v2 (6 layers, 960 h of LibriSpeech) with its word table, 30 s windows; encoder 20/20 clips vs transformers fp32 (per-token cos min 0.99645 Mac GPU, 0.99626 iPhone 18 Pro); reader fixture 20/20 = torch, test-clean WER 4.21 % / test-other 10.42 %; M4 Max 3,257.4 s in 6.327 s (×515), encoder GPU ∥ reader Neural Engine, WER 3.80 %; iPhone 18 Pro encoder 59.60 ms per 30 s window (AOT h19p) | ||
nemotron-3-diarization |
Nemotron-3-Diarization (8-speaker streaming Sortformer, NVIDIA): the per-chunk network as one graph (T = 541 for three streaming modes, 684 offline), the speaker cache in the host | 🤗 Nemotron-3-Diarization-CoreAI | fp16, Mac GPU closed loop vs transformers fp32: 97.6 s 99.9987 % (low latency) to 99.9424 % (very low), 21.5 s ≥ 99.9941 % in every profile; fp32 on the CPU 100 %; Mac Neural Engine 99.7746 %, below the 99.9 % bar, not shipped; 15.4–15.9 ms per 0.72 s chunk on M4 Max (contended); iPhone 17 Pro h18p GPU 99.9987 % / 30.1 ms per 0.72 s chunk (RTF 0.043), its Neural Engine compile 99.7758 % (below bar, not shipped) | ||
whisper-large-v3-turbo.md |
Whisper large-v3-turbo (speech→text, OpenAI) — official-recipe artifact + fixed-128 autoregressive decode, stock runtime; the golden card (▶️ runner / 💻 snippet / checklist) | 🤗 whisper-large-v3-turbo-CoreAI-official | 809M fp16, token-for-token exact vs HF greedy; 0.18 s/token M4 Max (first step 0.68 s); Mac + iPhone (AOT); 100 langs, auto-detect | ||
ltxvideo.md |
LTX-Video 2B distilled (text→video flow-matching DiT, Lightricks) — zoo’s first VIDEO model (T5 + DiT + causal video VAE; 8-step host FlowMatch sampler) | 🤗 LTX-Video-2B-CoreAI | 3 nets converted, per-net cos 1.000000 + DiT 8/8 real-step cos 1.000000; DiT fp16 + VAE fp16 + T5 bf16 = 13.5 G; 512×768×49f in ~14 s M-series GPU, coherent photoreal video; Mac-first | ||
triposplat.md |
TripoSplat (single image → 3D Gaussian splats, VAST) — zoo’s first 3D model | 🤗 TripoSplat-CoreAI | 5 nets converted, each converted-vs-eager cos 1.000000; DiT 20-step flow sampler + octree resampling host-side; ~1 min/image Mac GPU; .ply/.splat out |
||
ornith-1.0-9b.md |
Ornith-1.0-9B (agentic coding / self-scaffolding, Qwen3.5 hybrid arch, DeepReinforce) — zoo’s first agentic-coding model | HF upload pending (user-gated) | 9B, eager gate 24/24 exact vs fp32 oracle (fp16 / int8hu / int4lin — family-first clean int4) + engine greedy 12/12 ≡ oracle, 48.3 tok/s int8hu ship / 58.9 int4lin option, M4 Max (pipelined, zero new export code; Mac ship) | ||
nanbeige4.2-3b.md |
Nanbeige4.2-3B (22 shared physical Llama layers × 2 passes), ported by Vadim Smirnov | 🤗 Nanbeige4.2-3B-CoreAI | int8hu 4.59 GiB, fp32 + engine gates pass, 46.4 tok/s M4 Max; 44 KV cache layers; iPhone 17 Pro device-gated: 24/24 token-exact ×2 runs, 8.5/6.4 tok/s settled — zoo’s first community-contributed model | ||
bonsai2-27b |
Bonsai 2 27B (PrismML’s ternary Qwen3.8-27B: group-128 trits in a blockwise-Hadamard basis, read straight from the PQ2_0 GGUF), ported by Rahul Rachuri | 🤗 ternary-bonsai-2-27b-coreai | portable graph 7.2 GB + h16s AOT; generations match PrismML’s MLX runtime on 3 prompts (24 / 48 / 40 new tokens), chunk-vs-walk 80/80; 23.6 tok/s decode M4 Pro, ~7.5–8 GB resident; Mac, text-only | ||
s1-mini.md |
S1-mini by Superwhisper (ASR text normalizer, Qwen3-0.6B finetune) — the zoo’s first ASR post-processor: raw transcript → clean written text (fillers, false starts, punctuation, inverse text normalization). Completes the dictation path behind Parakeet / Nemotron-ASR | 🤗 S1-mini-CoreAI | int8lin 759 MB, oracle gate 16/16 + task gate 13/14 vs released weights, 268.4 decode / 4161 prefill tok/s M4 Max; int4 = no-go — passes the same 16/16 oracle and corrupts digits ($23,450→$2,345), caught only by the task gate. iPhone 17 Pro: 62.4 decode / 69.0 prefill tok/s, 276/276 + 27/27 token-exact vs Mac, PB_G=1024 gate passes — with a hard iOS ceiling of prompt+generated < 1024 tokens (shipped GrowingKVCache guard; chunk input to ~450–500) | ||
kokoro-82m.md |
Kokoro-82M (StyleTTS2 + iSTFTNet text-to-speech, hexgrad) — zoo’s first TTS (3 graphs + host DSP, non-autoregressive 24 kHz) | 🤗 Kokoro-82M-CoreAI | 82M fp32 (~335 MB), spectral gate corr 0.999 vs patched torch; full utterance ~0.75 s M4 Max CPU; 28 English voices | ||
vjepa2.md |
V-JEPA 2 ViT-L SSv2 (self-supervised video world model + action head, Meta) — zoo’s first video understanding model | 🤗 VJEPA2-ViTL-SSv2-CoreAI | 375M fp16 (~708 MB), engine cos 0.999996 top-5 identical + semantic motion gate; ~160 ms/clip M4 Max GPU · ~0.34 s iPhone 17 Pro (AOT) | ||
unlimited-ocr.md |
Unlimited-OCR 3B-A0.5B MoE (document OCR → structured markdown, baidu) — zoo’s first doc-OCR, stock runtime | 🤗 Unlimited-OCR-CoreAI | vision fp16 + R-SWA MoE decoder sym8 (~4.5 GB), decode 0 flips / 9 steps vs fp32 oracle, flat 12.7 ms/token (~79 tok/s) M4 Max | ||
glm-ocr.md |
GLM-OCR 0.9B (document OCR, GLM-4.V small — zhipu) — zoo’s 2nd doc-OCR (image_embeds + M-RoPE decode) |
🤗 GLM-OCR-CoreAI | vision fp16 + GLM decoder int8, CogViT tower + GLM-4 decoder on the rope-shift rider | ||
mineru.md |
MinerU2.5-Pro 1.2B (whole-page document parsing → structured markdown, opendatalab) — zoo’s first whole-page auto-structuring doc-OCR (2-stage layout + per-region recognition in one stock Qwen2-VL) | 🤗 MinerU2.5-Pro-CoreAI | vision fp16 + Qwen2 int8lin, torch ladder 706/706 vs HF. Single-pass (768 grid) on iPhone 17 Pro ~4 s/page (chunked prefill). 2-stage (1036² layout + 768 recognition, tables → <table> HTML via OTSL) byte-identical to reference in the ReadDoc Mac app |
||
llada-8b.md |
LLaDA-8B d3LLM (masked-diffusion LLM, GSAI-ML/d3LLM) — zoo’s first diffusion LLM (parallel canvas denoising, host semi-AR loop) | 🤗 LLaDA-8B-dLLM-CoreAI | int4 blk32 + int8 head 4.9 GB (S=256), layer/logits cos ≈1.0 + temp-0 decode gate vs official; ~38–40 tok/s M4 Max (NFE 11); Mac | ||
rgba-image-2.1 |
RGBA-Image-2.1, the Core AI port of Qwen-Image-2.1 (Alibaba Qwen; Built with Qwen): text → RGBA image from the Qwen3-VL-8B text path + a 7B block-causal DiT + a 64ch VAE; non-commercial (Qwen Research License) | 🤗 RGBA-Image-2.1-CoreAI | bf16 DiT + fp32-compute encoder + fp32 VAE per size (32.41 GB); vs the fp32 reference 46.72 dB at 256² and 35.49 dB at 512² (the model’s own bf16 band: 43.47 / 33.19); DiT 40 steps 190 s at 1024² on M4 Max; Mac-only, AOT --expect-frequent-reshapes |
||
rgba-image-2.1-turbo |
RGBA-Image-2.1-Turbo, the Core AI port of Qwen-Image-2.1-Turbo (Alibaba Qwen; Built with Qwen): the distilled checkpoint of the same pipeline, 8 FlowMatch Euler steps on its own sigma grid, no CFG; the DiT re-exported from its weights, RGBA-Image-2.1’s encoder and VAE bundles reused (the text encoder is byte-identical, the Turbo VAE is a bf16 copy of the fp32 one); non-commercial (Qwen Research License) | 🤗 RGBA-Image-2.1-Turbo-CoreAI | bf16 DiT (14.23 GB) or int8 DiT (7.56 GB, the same speed) + fp32-compute encoder + fp32 VAE per size; vs the fp32 Turbo reference 43.79 / 42.45 / 42.50 dB at 256² / 512² / 1024² (int8 41.76 / 49.28 / 39.32); DiT 8 steps 37.8 s at 1024² on M4 Max (4.721 s per step); Mac-only, AOT --expect-frequent-reshapes |
||
flux2-klein |
text → image + in-context editing; int4, Mac (BFL) | 🤗 FLUX.2-klein-4B-CoreAI | card adopted from the model page | ||
voxcpm |
tokenizer-free TTS, iPhone + Mac (OpenBMB) — kit voxcpm-0.5b |
🤗 VoxCPM-0.5B-CoreAI | card adopted from the model page | ||
voxcpm2 |
tokenizer-free TTS, second generation — kit voxcpm2-2b |
🤗 VoxCPM2-CoreAI | card adopted from the model page | ||
pocket-tts |
pocket-tts (Kyutai) — the zoo’s first Kyutai model and first Mimi conversion: AR flow-matching LM over Mimi latents + one-step flow decoder + streaming Mimi decoder, 8 voices, no G2P layer; ported by Rahul Rachuri | 🤗 pocket-tts-coreai | 5 bundles, every graph cos 1.000000 on cpu_only and gpu (Mimi bit-identical), ASR round-trip 1.38 % WER on a 148-word paragraph and 4.27 % over a 302-sentence sweep; iPhone 17 Pro Max 7.8× real-time fp16, 169 MB peak, load 0.4 s; M4 Pro 8.5× |
||
audio8-tts |
Audio8-TTS-Preview-0.6b (DualAR text-to-speech of the Fish Audio S2 Pro design, Edge0) — 11 languages, zero-shot voice cloning; the zoo’s first semantic-token TTS and first in-graph sampler (one call per frame) | 🤗 Audio8-TTS-Preview-0.6b-CoreAI | 601M + 337M codec; dualar int8 slow / fp16 fast 876 MB + codec fp16 261 MB (+ encoder fp16w32 416 MB); teacher-forced draws vs the fp32 oracle 1,671 / 1,695 semantic and 14,711 / 15,093 codebook, codec cos min 0.99978, encoder codes 691 / 712 frames exact; ASR round trip ja CER 2.3 % / en WER 0.9 % / zh 0 % (oracle 6.5 / 0.0 / 0.0), speaker cos 0.855 (oracle 0.854); iPhone 18 Pro RTF 0.92 whole utterance / 1.53 streaming, first audio 2.0 s, load 6.1 → 0.5 s, footprint 0.6–0.7 GB; M4 Max 0.70 / 0.81 (under other load) | ||
stable-audio-open-small |
text → music/audio, 13× realtime (Stability AI) — kit stable-audio-open-small |
🤗 Stable-Audio-Open-Small-CoreAI | card adopted from the model page | ||
qwen2.5-omni-audio |
audio understanding (Omni thinker’s audio tower) — kit qwen2.5-omni-3b-audio |
🤗 Qwen2.5-Omni-3B-Audio-CoreAI | card adopted from the model page | ||
rwkv7-goose |
attention-free RNN, constant-memory decode | 🤗 RWKV7-Goose-1.5B-CoreAI | card adopted from the model page | ||
qwen3.5-4b |
the Qwen3.5 family’s Mac-class dense size | 🤗 qwen3.5-4B-CoreAI | card adopted from the model page | ||
agents-a1-4b |
Agents-A1-4B (InternScience; long-horizon agentic model on the Qwen3.5-4B text tower — the 4B recipe with the HF id swapped) | 🤗 Agents-A1-4B-CoreAI | int8hu 5.77 GB (Mac-class, pipelined GPU), oracle gate 16/16 on two prompts, chat no-think stops on <|im_end|> 8/8, tool calls 3/3 in the template’s XML <function=…> format, 8/8 sanity; the template injects a dated default system prompt when none is given (card) |
||
adcsr |
single-step ×4 image super-resolution — kit adcsr-x4 |
🤗 AdcSR-CoreAI | card adopted from the model page | ||
timestral |
Timestral-209M (Mistral AI; time-series forecasting, a patch transformer with time and variate attention) — one univariate series → 21 quantiles for up to 1,024 steps from up to 8,192 steps of history | 🤗 Timestral-209M-CoreAI | every shipped graph within 1 % of the released forecaster’s MASE and CRPS on an 84-window fixture (fp32 within 0.1 %); 9.44 ms per forecast on the iPhone 18 Pro Neural Engine / 9.46 ms on the M4 Max’s (2,048-step history); Modified MIT with a revenue condition |
| macOS GPU (M4 Max) | iOS GPU | iOS ANE | |
|---|---|---|---|
| Gemma 4 E2B | ✅ 8/8 · 56.6–59.0 tok/s (int8 kernels) | ✅ 8/8 · 22 tok/s (int4-k-means kernels) | ✅ 8/8 · 6 tok/s (int8 chunks) |
| Qwen3.5 0.8B | ✅ 8/8 · 58.5 (int8 dynamic) | ✅ 27.7 (fp16 static, ctx 2048) / 12.5 (int8 dynamic) | ✅ 14.7 (int8 dynamic); static ✗ this beta (fp16 SSM recurrence) |
macOS ANE is intentionally out of scope (the runtime auto-prefers GPU on Mac for these structures, and the Mac GPU dominates it anyway).
Parity is measured against the Hugging Face eager reference (cosine + top-1 argmax on a fixed prompt): conversion on macOS, then re-verified end-to-end on-device (iPhone 17 Pro, iOS 27 beta). Device numbers are int8, greedy, prompt “What is the capital of France?” / “The capital of France is” → “Paris”.