Zyquo MLX — Hub Integration & Curated Model Catalog
Phase 0.C research document. Every catalog row was live-verified against the Hugging Face Hub API on 2026-07-30 (HTTP 200, sizes summed from real tree listings). Anything computed rather than measured is marked estimated.
1. Hugging Face Hub HTTP API
1.1 Search — GET https://huggingface.co/api/models
Verified working parameter set:
?author=mlx-community&pipeline_tag=text-generation&filter=mlx
&search=Qwen3&sort=downloads&direction=-1&limit=100&full=true&config=true| Param | Behavior (verified) |
|---|---|
search |
substring match on repo name |
author |
org/user scope (mlx-community, lmstudio-community, …) |
filter |
tag filter; filter=mlx matches the MLX library tag across all orgs |
pipeline_tag |
text-generation, image-text-to-text (VLM), feature-extraction (embeddings), automatic-speech-recognition, image-to-image |
sort + direction=-1 |
downloads, likes, lastModified, trendingScore (default) |
limit |
up to 1000 per page; pagination via Link: <…cursor=…>; rel="next" response header (cursor-based) |
full=true |
adds siblings (filenames only — no sizes) + sha |
config=true |
adds config incl. quantization_config (bits/group_size), architectures, model_type |
List-item fields: id, author, downloads (30-day rolling), likes, tags, gated, lastModified, createdAt, pipeline_tag, library_name, private.
safetensors parameter counts are not in search results — only on the
per-model endpoint.
Rate limits (anonymous, from live response headers):
ratelimit-policy: "fixed window";"api";q=500;w=300 → 500 API requests per
5 minutes; ratelimit: "api";r=…;t=… gives remaining/reset. Design
HubService to batch (one 1000-item search call) and cache.
1.2 Model info & file listing
GET /api/models/{repo_id}→sha(commit, for revision pinning),siblings,usedStorage,safetensors: {parameters: {BF16: n, U32: n}, total},gated(false|"manual"),cardData.- ⚠️ Quantized-parameter quirk (verified): MLX packs 4-bit weights as U32,
so
safetensors.totalundercounts ~8×. Real params ≈BF16 + U32 × 8(Qwen3-4B-4bit: 125.9M BF16 + 502.8M U32 → ≈ 4.1B ✓).ModelStoremust use this formula or parse the repo name. GET /api/models/{repo_id}/tree/main?recursive=true→ per-file{type, path, size, lfs: {oid, size, pointerSize}}.- Not recursive by default — always pass
recursive=true(FLUX repos keep components in subdirectories). sizeis always the true byte size;lfs.oidis the file's SHA-256 — use it as the integrity check after download.- Revision pinning:
/tree/{commit_sha}?recursive=true. 1000 entries per page,Link rel="next"beyond.
- Not recursive by default — always pass
1.3 Download / resolve (drives DownloadManager)
GET https://huggingface.co/{repo}/resolve/{revision}/{filename}→ 302 to a signed, expiring CDN URL (Xet bridge,us.aws.cdn.hf.co/xet-bridge-us/…). Small files (e.g.config.json) → 307 to/api/resolve-cache/….HEADon the resolve URL (before redirect) yields:x-linked-size(exact size),x-linked-etag(content SHA-256),x-repo-commit(resolved commit — pin all subsequent files of a download to it for a consistent snapshot),accept-ranges: bytes.- Resume (verified):
Range: bytes={downloaded}-on a fresh resolve request (CDN URLs expire — never persist them) → HTTP 206 withcontent-range. This is the resumable-download contract. - Auth / gated repos:
Authorization: Bearer hf_…works on both/api/*and/resolve/*. Gated repos reportgated: "manual"and return 401 anonymously (verified withmeta-llama/Llama-3.1-8B-Instruct). Allmlx-communitycatalog repos verifiedgated: false.
1.4 MLX ecosystem conventions (census of top-1000 mlx-community repos)
- Tags: library tag
mlx, region tags4-bit/8-bit,base_model:quantized:{original-repo}. - Name-suffix census (top-1000 by downloads):
-4bit×400,-8bit×176,-bf16×104,-mlx/-MLX×99,-6bit×70,-qat×50,mxfp4×33,-5bit×24,-3bit×22,-DWQ×18,-fp16×16, whisper-style-q4/-q8×17. config.json"quantization":{bits, group_size, mode}— 2026 repos say"affine";"mxfp4"(gpt-oss, group_size 32) and mixed recipes (MXFP4-Q8,DQ4plus-q8) also occur.-DWQ= distilled-weight quantization (same size, better quality).- Ecosystem state mid-2026 (from live download charts): current generations
are Qwen3.5 / Qwen3.6, gemma-4, GLM-4.7/5.2, Kimi-K2.5/K2.6, DeepSeek-V4,
Mistral-Small-4, FLUX.2-Klein, Qwen3-TTS/ASR, parakeet v3. No Llama-4 in
mlx-community. Many new text models carry
pipeline_tag: image-text-to-text(natively multimodal).
2. Featured Catalog (live-verified 2026-07-30)
Disk = exact sum of weight files from the live tree listing. Min RAM = weights + ~20% overhead + OS headroom, rounded to a Mac tier (estimated — calibrate in Phase 7). Downloads = 30-day count at verification.
2.1 Text LLMs — small (0.5–3B)
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/Qwen3-0.6B-4bit |
0.6B | 4-bit gs64 | 0.34 GB | 8 GB | 49.9k |
mlx-community/Llama-3.2-1B-Instruct-4bit |
1B | 4-bit gs64 | 0.70 GB | 8 GB | 48.3k |
mlx-community/gemma-3-1b-it-qat-4bit |
1B | 4-bit gs64 QAT | 0.73 GB | 8 GB | 33.2k |
mlx-community/Qwen3-1.7B-4bit |
1.7B | 4-bit gs64 | 0.97 GB | 8 GB | 14.1k |
mlx-community/SmolLM3-3B-4bit |
3B | 4-bit gs64 | 1.73 GB | 8 GB | 2.0k |
mlx-community/Llama-3.2-3B-Instruct-4bit |
3B | 4-bit gs64 | 1.81 GB | 8 GB | 21.1k |
2.2 Text LLMs — mid (4–9B)
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/Qwen3-4B-Instruct-2507-4bit |
4B | 4-bit gs64 | 2.26 GB | 8 GB | 41.6k |
mlx-community/Mistral-7B-Instruct-v0.3-4bit |
7B | 4-bit gs64 | 4.08 GB | 16 GB | 12.1k |
mlx-community/Qwen2.5-Coder-7B-Instruct-4bit |
7B | 4-bit gs64 | 4.28 GB | 16 GB | 30.7k |
mlx-community/Llama-3.1-8B-Instruct-4bit |
8B | 4-bit gs64 | 4.52 GB | 16 GB | 27.1k |
mlx-community/Qwen3-8B-4bit |
8B | 4-bit gs64 | 4.61 GB | 16 GB | 32.3k |
mlx-community/gemma-4-e4b-it-4bit |
~8B (eff. 4B) | 4-bit gs64 affine | 5.15 GB | 16 GB | 61.6k |
mlx-community/Qwen3.5-9B-4bit |
9B | 4-bit gs64 affine | 5.95 GB | 16 GB | 22.8k |
2.3 Text LLMs — large (14–35B, incl. MoE)
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/Qwen3-14B-4bit |
14B | 4-bit gs64 | 8.31 GB | 16 GB | 40.3k |
mlx-community/DeepSeek-R1-Distill-Qwen-14B-4bit |
14B | 4-bit gs64 | 8.31 GB | 16 GB | 41.8k |
mlx-community/gpt-oss-20b-MXFP4-Q8 |
20.9B MoE | MXFP4 gs32 + Q8 | 12.08 GB | 24 GB | 355.3k |
mlx-community/Mistral-Small-3.1-24B-Instruct-2503-4bit |
24B | 4-bit gs64 | 14.09 GB | 24 GB | 27.5k |
mlx-community/Devstral-Small-2-24B-Instruct-2512-4bit |
24B | 4-bit gs64 affine | 15.10 GB | 24 GB | 114.0k |
mlx-community/Qwen3.6-27B-4bit |
27B | 4-bit gs64 affine | 16.05 GB | 32 GB | 50.7k |
mlx-community/Qwen3-30B-A3B-Instruct-2507-4bit |
30B-A3B MoE | 4-bit gs64 | 17.18 GB | 32 GB | 83.8k |
mlx-community/Qwen3-Coder-30B-A3B-Instruct-4bit |
30B-A3B MoE | 4-bit gs64 | 17.18 GB | 32 GB | 7.4k |
mlx-community/gemma-4-31b-it-4bit |
31B | 4-bit gs64 affine | 18.41 GB | 32 GB | 47.5k |
mlx-community/Qwen3-32B-4bit |
32B | 4-bit gs64 | 18.43 GB | 32 GB | 2.1k |
mlx-community/DeepSeek-R1-Distill-Qwen-32B-4bit |
32B | 4-bit gs64 | 18.43 GB | 32 GB | 8.2k |
mlx-community/Qwen3.6-35B-A3B-4bit |
35B-A3B MoE | 4-bit gs64 affine | 20.40 GB | 32 GB | 62.0k |
MoE note: RAM is set by total params (all experts resident); speed by
active params. Qwen3-30B-A3B needs a 32 GB Mac but generates at ~3B speed —
the ideal recommendation for 32 GB machines.
2.4 Vision-language models
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/Qwen3-VL-4B-Instruct-4bit |
4B | 4-bit gs64 affine | 3.09 GB | 16 GB | 17.5k |
mlx-community/SmolVLM2-2.2B-Instruct-mlx |
2.2B | bf16 | 4.49 GB | 16 GB | 365 |
mlx-community/Qwen2.5-VL-7B-Instruct-4bit |
7B | 4-bit gs64 | 5.64 GB | 16 GB | 3.6k |
mlx-community/Qwen3-VL-8B-Instruct-4bit |
8B | 4-bit gs64 affine | 5.76 GB | 16 GB | 2.3k |
mlx-community/pixtral-12b-4bit |
12B | 4-bit gs64 | 7.14 GB | 16 GB | 276 |
mlx-community/gemma-3-12b-it-qat-4bit |
12B | 4-bit gs64 QAT | 8.03 GB | 24 GB | 31.8k |
2.5 Embeddings (MLX format)
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/all-MiniLM-L6-v2-4bit |
22M | 4-bit gs64 | 0.01 GB | 8 GB | 1.7k |
mlx-community/nomicai-modernbert-embed-base-bf16 |
149M | bf16 | 0.30 GB | 8 GB | 5.2k |
mlx-community/Qwen3-Embedding-0.6B-4bit-DWQ |
0.6B | 4-bit DWQ | 0.34 GB | 8 GB | 15.3k |
mlx-community/bge-m3-mlx-fp16 |
568M | fp16 | 1.14 GB | 8 GB | 11.2k |
mlx-community/Qwen3-Embedding-4B-4bit-DWQ |
4B | 4-bit DWQ | 2.26 GB | 8 GB | 2.4k |
2.6 Speech
| Repo | Params | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/Qwen3-ASR-0.6B-8bit |
0.6B | 8-bit gs64 affine | 1.01 GB | 8 GB | 75.3k |
mlx-community/whisper-large-v3-turbo |
0.8B | fp16 | 1.61 GB | 8 GB | 77.8k |
mlx-community/parakeet-tdt-0.6b-v3 |
0.6B | bf16 | 2.51 GB | 8 GB | 1.33M |
mlx-community/whisper-large-v3-mlx |
1.5B | fp16 | 3.08 GB | 8 GB | 26.6k |
2.7 Image generation
| Repo | Type | Quant | Disk | Min RAM | DLs |
|---|---|---|---|---|---|
mlx-community/FLUX.2-Klein-4B-4bit |
FLUX.2 Klein 4B | 4-bit (components in subdirs) | 4.61 GB | 16 GB | 575 |
argmaxinc/mlx-FLUX.1-schnell-4bit-quantized |
FLUX.1-schnell (DiffusionKit) | 4-bit | 7.03 GB | 16 GB | 7.3k |
dhairyashil/FLUX.1-schnell-mflux-4bit |
FLUX.1-schnell (mflux) | 4-bit | 9.61 GB | 24 GB | 606 |
No stable-diffusion MLX repos exist in mlx-community (live search returned
zero). The mflux ecosystem lives under mflux-community/ — pick per
mflux-version compatibility at implementation time.
Verification total: 43 repos checked, 0 failures, all gated: false.
3. RAM Guidance Table (powers MemoryAdvisor badges)
Estimated — arithmetic + community guidance; calibrate on real runs in Phase 7.
Basis: 4-bit gs64 affine = 4 + 32/64 bits/weight = 4.5 bits ≈ 0.5625 B/param (confirmed by catalog: Qwen3-14B → 0.561 B/p, Qwen3-32B → 0.562 B/p); bf16 = 2 B/param. macOS GPU working-set ceiling ≈ 70–75% of unified RAM; keep model + KV cache + activations ≤ ~(RAM − 5 GB). KV cache ≈ 0.5–2 GB at 8k ctx for 7–32B GQA models. LoRA (bf16 base) ≈ 2 B/param + activations + adapter optimizer state. QLoRA (4-bit frozen base) ≈ 0.5625 B/param + activations (~2–5 GB at batch 1–4, seq 1–2k, grad checkpointing on).
| Mac RAM | 4-bit inference (realistic max) | LoRA FT (bf16 base) | QLoRA FT (4-bit base) |
|---|---|---|---|
| 8 GB | ≤3B comfortable; 4B tight | ≤0.6B | ≤1.7B |
| 16 GB | 7–9B comfortable; 14B ok w/ modest ctx | ≤3B | ≤7–8B |
| 24 GB | 14B comfortable; 20B MoE & 24B ok | ≤7B (tight) | ≤14B |
| 32 GB | 27–32B dense & 30B/35B-A3B MoE | ≤8–9B | 14B comfortable; 24B tight |
| 48 GB | 32–35B comfortable + long ctx; ~50B-class | ≤14B | ≤32B |
| 64 GB | 70B 4-bit (~39.4 GB; Llama-3.3-70B-Instruct-4bit verified to exist) |
≤24B | 32B comfortable |
| 96 GB | 70B comfortable; ~100–120B MoE | ≤32B | ≤70B (tight) |
| 128 GB | 120B-class MoE (e.g. Mistral-Small-4-119B-2603-4bit, exists); 70B 8-bit |
≤35B dense | 70B comfortable; ~120B MoE possible |
This Mac (dev machine): 48 GB → 4-bit inference up to ~35B comfortable; LoRA ≤14B; QLoRA ≤32B.
Caveats for MemoryAdvisor:
- Min-RAM columns are computed, not measured — Phase 7 calibrates them.
downloadsis a 30-day rolling count (freshness signal, not lifetime).- For quantized repos derive real params as
BF16 + U32 × 8from thesafetensorsfield, or parse the name suffix.