From: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.textSubject:

clef-8bit

Date: 2026-11-15Commit: 1c8887cSigned: 2DC28CC7B26A283B ✓

Zero shot classification model with 27.4B parameters. Safetensors weights, 29.8 GB in all. Published by mlx-community under Apache-2.0.

27.4B params29.8GBclef-8bitsafetensorspermissive
FactsParams27.4BSize29.8 GBFormatssafetensorsTaskzero shot classificationLicenseApache-2.0From sourcepermissive
$ fw get mlx-community/clef-8bit
# manifest sha256 35119f5272b7… · 29.8 GB · 19 files
$ fw verify ./clef-8bit mlx-community/clef-8bit
From sourceHosted (signed)mlx-community/clef-8bitLast check: 2026-11-15 05:15 UTC

Get help: custom fine-tune or private deploy. We review your setup before we quote.

Quantized of clef.

Works with

Runs with

Ranked by fit to this model (safetensors), then by GitHub stars.

Overview

Size
29.8 GB
Weights
29.8 GB (safetensors)
Parameters
27.4B
Formats
safetensors
Task
zero shot classification
License
Apache-2.0 (permissive)
Files
19, each with a sha256
Publisher
mlx-community
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Base model: Cloudflare/clef

Where these bytes come from
Publisher at the pinned commit→You

Sources are tried in order. A file counts only when its size and sha256 match the manifest. Sources are checked when you ask for them, not on a timer.

Sources
BadgeHostLast checkResult
From sourcehuggingface.co2026-11-15 05:15 UTCpassed

Model card

From the publisher at commit 1c8887c. Shown as plain text with links; images open at the publisher.

mlx-community/clef-8bit#

Cloudflare/clef converted to MLX (8-bit) for Apple Silicon.

Clef turns a state (text, JSON, images, or video) plus a schema of typed questions into a probability for every allowed option, in a single forward pass. It is not a chat model — mlx_vlm.generate, mlx_lm.generate, and LM Studio will load the backbone but produce meaningless text. Use the bundled clef_mlx.py loader, which runs the backbone and the joint schema head.

Which variant fits your Mac?#

VariantBaseDownloadPeak memory (1k / 4k / 16k tokens)Latency (1k / 16k tokens)Minimum Mac RAM
clef-flash-4bit9B6.2 GB7.0 / 7.2 / 8.6 GB0.31 s / 7.0 s16 GB
clef-flash-8bit9B10.7 GB11.4 / 11.6 / 13.0 GB0.34 s / 7.7 s24 GB (16 GB for short prompts)
clef-4bit27B16.3 GB17.1 / 17.5 / 19.6 GB1.4 s / 26.0 s32 GB
clef-8bit (this repo)27B29.8 GB30.5 / 30.8 / 33.0 GB1.5 s / 32.0 s48 GB

Measured on an M5 Max with text input. macOS lets the GPU use only about 70–75% of RAM by default, so the minimum RAM is higher than the peak. The 9B variants are much faster; the 27B variants score higher (see the quality check below).

Usage#

pip install "mlx-vlm>=0.7.4,<0.8" huggingface_hub   # no torch needed

Tested with mlx 0.32.3, mlx-lm 0.32.0 and mlx-vlm 0.7.4. clef_mlx.py uses mlx-vlm internals, so it warns if you load it with an untested mlx-vlm minor version.

import sys
from huggingface_hub import snapshot_download

path = snapshot_download("mlx-community/clef-8bit")
sys.path.insert(0, path)
import clef_mlx

model = clef_mlx.load(path)
response = model.systemone({
    "model": "clef",
    "state": "Our checkout started returning errors and orders are blocked.",
    "questions": {
        "department": {
            "type": "choice",
            "instructions": "Which team should handle the message?",
            "criteria": {"billing": "Payments or invoices", "technical": "Bugs or outages"},
        },
        "urgency": {"type": "score", "criteria": ["Can wait", "This week", "Today"]},
        "outage": {"type": "noul", "instructions": "Is a service down?"},
    },
})
print(response["answers"])

Images (PIL) and videos (frame arrays) go in images / videos, as in the original:

from PIL import Image
model.predict({
    "state": {"task": "Review the attached receipt."},
    "images": [Image.open("receipt.jpg")],
    "questions": {"legible": {"type": "noul", "instructions": "Is the receipt total legible?"}},
})

See the original model card for the input format, question types, and benchmarks.

Try it from the command line#

clef_mlx.py runs on its own. From the downloaded repo it uses that repo by default; elsewhere pass --model mlx-community/clef-8bit.

cd "$(hf download mlx-community/clef-8bit --quiet)"
python clef_mlx.py predict \
  --state "Checkout has been failing for every customer for the last hour." \
  --questions '{"urgent": {"type": "noul", "instructions": "Is this urgent?"},
               "team": {"type": "choice", "criteria": {"billing": "Payments", "technical": "Outages and errors"}}}'

--questions takes JSON, a .json file, or - for stdin; --request takes a whole request body instead; --image photo.jpg attaches an image (repeatable). The output is the SystemOne response as JSON.

Run a local SystemOne server#

python clef_mlx.py serve --port 8000          # http://127.0.0.1:8000, local only by default
curl http://127.0.0.1:8000/v1/systemone -H "Content-Type: application/json" -d '{
  "model": "clef",
  "state": "Checkout has been failing for every customer for the last hour.",
  "questions": {"urgent": {"type": "noul", "instructions": "Is this urgent?"}}
}'
  • POST /v1/systemone takes the same request body as the Jev/SystemOne API and returns the same response (plus usage.latency_ms), so existing SystemOne clients can point at your laptop. GET /health and GET /v1/models are also available.
  • Images go in images as data URLs, base64, or http(s) URLs. Videos aren't supported over HTTP.
  • Errors return JSON: 400 for invalid requests, 413 with "maximum context length" for inputs that don't fit. Add "truncate": false to a request (or start with --no-truncate) to get the 413 instead of truncation.
  • Requests run one at a time on the GPU. There is no authentication: keep the default 127.0.0.1 binding unless you put your own proxy in front.
  • For the Decision Index, start with --no-truncate and use its http engine: python -m decision_index run --engine http --option base_url=http://127.0.0.1:8000.

Limitations#

  • Not a chat model. Text generation tools (mlx_lm.generate, mlx_vlm.generate, LM Studio, Ollama) load the backbone but give meaningless output. Only clef_mlx.py runs the decision head.
  • Long inputs are truncated by default, exactly like the reference implementation: the state is cut so the whole prompt fits in 16,384 tokens. Pass truncate=False to predict()/systemone() to get a clef_mlx.ContextTooLong error instead, or raise max_length (the head was trained at 16k).
  • One record per call. There is no batching; requests run one after another.
  • Images or videos, not both in one record. Several images, or several videos, are fine.
  • Speed depends heavily on the chip. Latencies above are from an M5 Max; long prompts on base M-series chips will be several times slower.
  • Custom code. Like the original release, this repo ships Python (clef_mlx.py) that you import and run. Read it before use if that matters in your environment.

Conversion#

  • Backbone: mlx_vlm.convert -q --q-bits 8 --q-group-size 64 (vision tower kept in bf16).
  • Joint schema head: joint_head.safetensors copied unchanged (bf16) and run by clef_mlx.py.
  • processor_config.json is the original from Cloudflare/clef; prompt/token layout matches the reference joint_schema_model.py exactly (images and video).

Parity vs. official PyTorch implementation (bf16)#

InputsTop answer agreesMax abs Δprob
Text (4 records, 10 questions)10/100.007
Images + video (5 records, 9 questions)9/90.032

Measured on an M5 Max (128 GB). Small spot-check, not a full benchmark run.

Quality check: Decision Index (sampled)#

Decision Index (sample)Median latency
This model (8-bit)57.961.13 s
MLX 4-bit (mlx-community/clef-4bit), same rows57.02 (98.1% same top answer)1.03 s
Cloudflare published (full suite)61.21

8-bit tracks the PyTorch reference within 0.007 probability on spot checks. The gap to the published score is mostly sample noise and harness differences (Arts & Human Taste in particular), not quantization.

Method: Decision Index 0.2.1 kit (suite rebuilt byte-identical), stratified 2,000-request sample across all 44 benchmarks (suite sample --n 2000), engine = clef_mlx.py with max_length=16384 and no truncation (over-length requests are refused and count as wrong; 15 of 2,000, mostly BRIGHT). The index is computed from each benchmark's native metric on the sampled rows with the kit's chance correction and weights; HLE and iSarcasmEval are set to 0 to match how Cloudflare's published run is scored. With ~40 rows per benchmark, per-benchmark numbers are noisy (±10+ pts) — only the index is meaningful.

License#

Apache-2.0, following Cloudflare/clef.

Files

19 files · 29.8 GBWeights 29.8 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE11.5 KBbbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a
README.md8.27 KBb56ae6c9d32e386fe76d2b41fa60c08c3a8e97efe4c8b201f1e1364f434d317e
chat_template.jinja8.95 KBc3cf9e34abf4f9e36c2d72165aa9c132d3e2a725b6c2586aaa3a8af9d7a81041
clef_mlx.py33.7 KB852223c944819a32fad5cf798d9d1dff30419820eaf5ad1f10cb9698afec97d5
config.json5.03 KBff17906eec7f9e3035bc83537cf968bdf7d559be88287afe1cef5fbf855d9e82
generation_config.json214 Bdc36854b2b25176764cfeeda32a3d80fb4fcffbef2b00d55c6614079bf21eb9f
joint_head.safetensors256 MBa010ac04f078e699988e4049cbea5e62c962393f59fec366640b64e8d69a4953
joint_head_config.json119 B890be585d75b981201eb96a35f98a9967afe37bc8d220cfdea2e72d56507534f
model-00001-of-00006.safetensors5.32 GBc7921fe72af5c961c3c4230ea25068ed6d1e502d5ecb2b4a53b7c9c213effa0c
model-00002-of-00006.safetensors5.35 GBe9d93d15495354045da281f102649b99793e5b6ed0e05852c58f46e6616b54a0
model-00003-of-00006.safetensors5.35 GB7015f40310c86a18230e28644832b624532333d5dfbf7584e6c62341dbd8975e
model-00004-of-00006.safetensors5.34 GBb99b75d269cc037e6501bc7ce951126b66ab8be876e936980bdda045bd76017d
model-00005-of-00006.safetensors5.29 GB83d7b64daac098749889b74307e3c2b41be8c256ac643be8cae40bccdd8778ab
model-00006-of-00006.safetensors2.85 GB17442d87f0ca4d71ae790349b1eccb14b5c82886358b5b45e3e6bd1a0d17f1fc
model.safetensors.index.json218 KB4301ca600788afb2a45c0aa367140d6144ecf617d0a51a8187fc6755d65301f8
processor_config.json1.19 KBd89ef49ce9cd37fbf510158e13c1ef063d9286411c1ec9049932dbe0487143b1
tokenizer.json20.0 MBa5cd9732badce41de57e6efce8302930ded1c1188c5f81feb2bd6c24c4a1941f
tokenizer_config.json1.19 KB7d884d6eaf8142a3343a933ca5ab6ccc2fa93d52591cdbbe2ea33559bb2b503a
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
1c8887c208 pinned now2026-11-15 05:15 UTC19 files · 29.8 GB

Use it

$ fw get mlx-community/clef-8bit
# manifest sha256 35119f5272b7… · 29.8 GB · 19 files
$ fw verify ./clef-8bit mlx-community/clef-8bit
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/mlx-community/clef-8bit.json --dir ./clef-8bit $ python3 fw.py verify ./clef-8bit ./mlx-community__clef-8bit.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mlx-community/clef-8bit --revision 1c8887c20827d91cb1b0c6f186e24f5bc5b0e0ce --local-dir ./clef-8bit

License

Name
Apache License 2.0
Id
Apache-2.0
Class
Permissive
Redistribution
yes
Listing
Hosted (signed)
Decided
License as declared by the publisher. No person read it. 2026-11-15
Text in
LICENSE
Text sha256
bbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a
Terms gate
No extra terms beyond the license.

Read the license text

Licenses are checked against the license table. A custom license passes only after a person reads it.

Provenance

From: mlx-community <huggingface.co/mlx-community>Newsgroups: alt.freeweights.textSubject: clef-8bitDate: 2026-11-15Commit: 1c8887cSigned: 2DC28CC7B26A283B ✓
Upstream
mlx-community/clef-8bit
Pinned commit
1c8887c20827d91cb1b0c6f186e24f5bc5b0e0ce
Manifest
clef-8bit.json · .minisig
Manifest sha256
35119f5272b7ba0ec91e15d4dac1f7d7b43500117b491a4fb036d8e8f713498b
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 05:15 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/mlx-community/clef-8bit.json $ curl -O https://freeweights.allternit.com/manifests/mlx-community/clef-8bit.json.minisig $ minisign -Vm clef-8bit.json -P RWQ7KGqyx4zCLXtUFOqvfv8L3g+8fpKJ1FsuxPyOYMF+4KufbUxKq1Oq $ shasum -a 256 <file> # compare with the Files tab

A manifest whose signature fails must be rejected. A file whose size or sha256 does not match must be discarded. Verify a download

Model tree

Parent

Cloudflare/clef · this model is a quantization of it

No model in the catalog names this one as its parent.

Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download mlx-community/clef-8bit
Open in Freeweights Studio

Pull, verify and run it in the Allternit app on Desktop, web or phone.

Signed manifest
minisign, key 2DC28CC7B26A283B. clef-8bit.json. Provenance. Takedown history: none.
From: laion <huggingface.co/laion>Subject: a2-rl-e2egit_large-50-32B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-large-15-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_e2egit-v2-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_pymethods2test-large-80-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_exp_rpt_unitsyn-python-large-10-8B
From: laion <huggingface.co/laion>Subject: a3-rl-DCAgent_mix_h2_language_proportional-65-8B