From: Cloudflare <huggingface.co/Cloudflare>Newsgroups: alt.freeweights.textSubject:

clef-flash

Date: 2026-11-15Commit: 22b7550Signed: 2DC28CC7B26A283B ✓

Image text to text model with 9.4B parameters. Safetensors weights, 19.1 GB in all. Published by Cloudflare under Apache-2.0.

9.4B params19.1GBclef-flashsafetensorspermissive
FactsParams9.4BSize19.1 GBFormatssafetensorsTaskimage text to textLicenseApache-2.0From sourcepermissive
$ fw get Cloudflare/clef-flash
# manifest sha256 679808aa7f87… · 19.1 GB · 19 files
$ fw verify ./clef-flash Cloudflare/clef-flash
From sourceHosted (signed)Cloudflare/clef-flashLast check: 2026-11-15 02:35 UTC

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

Fine-tune of Qwen3.5-9B.

Works with

Overview

Size
19.1 GB
Weights
19.1 GB (safetensors)
Parameters
9.4B
Formats
safetensors
Task
image text to text
License
Apache-2.0 (permissive)
Files
19, each with a sha256
Publisher
Cloudflare
Added
2026-11-15
Section
alt.freeweights.text
Lineage

Original release from the publisher.

Base model: Qwen/Qwen3.5-9B

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 02:35 UTCpassed

Model card

From the publisher at commit 22b7550. Shown as plain text with links; images open at the publisher.

Clef-Flash#

Clef-Flash is a 9B multimodal model that turns a state and a schema of typed questions into decisions. It reads the state as text, JSON, images, or video, and returns a probability for every allowed option of every question in a single forward pass. There is no free-form text generation and no output parsing.

The Clef-Flash API is fully compatible with Jev and SystemOne.

Clef-Flash is post-trained from Qwen/Qwen3.5-9B. See Clef for the larger variant.

Model#

  • Backbone: Qwen/Qwen3.5-9B with its vision encoder, stored as standard sharded safetensors.
  • Joint schema head: a small transformer head that reads the backbone's final hidden states, routes evidence from the state to each question, and scores all options of all questions jointly.
  • Output: one logit per allowed option for each question. Apply a softmax per question to get probabilities.

Files#

FilePurpose
model-*.safetensors, model.safetensors.index.json, config.json, generation_config.jsonBackbone, including the vision encoder
joint_head.safetensors, joint_head_config.jsonJoint schema head
joint_schema_model.pyRecord encoding, batching, the model, load_release_model, and systemone
tokenizer.json, tokenizer_config.json, chat_template.jinja, processor_config.jsonTokenizer and image/video processor
LICENSEApache-2.0 license

Usage#

Tested with torch 2.11 and transformers 5.10.2 on a single H200. Image and video inputs also need pillow.

import sys

import torch
from huggingface_hub import snapshot_download

path = snapshot_download("Cloudflare/clef-flash")
sys.path.insert(0, path)
from joint_schema_model import collate_records, encode_record, load_release_model

model, processor = load_release_model(path, device="cuda")

record = {
    "state": {"invoice": {"vendor": "Acme", "total": 1250.0, "currency": "USD", "status": "overdue"}},
    "questions": {
        "status": {
            "type": "choice",
            "instructions": "What is the invoice status?",
            "criteria": {"paid": "Invoice is paid.", "overdue": "Invoice is past due.", "draft": "Not sent."},
        },
        "large": {"type": "noul", "instructions": "Is the total above 1000 USD?"},
    },
}

encoded = encode_record(processor.tokenizer, record, processor=processor)
batch = collate_records([encoded], processor.tokenizer.pad_token_id, torch.device("cuda"))
with torch.inference_mode():
    logits = model(batch)[0]

for question, question_logits in zip(encoded.questions, logits):
    probabilities = question_logits.float().softmax(-1).tolist()
    print(question.question_id, dict(zip(question.option_ids, probabilities)))
SGLang#

Clef-Flash can be served with SGLang. See the SGLang cookbook for launch commands on H200, B200, and B300. On a single H200:

docker run --gpus all \
  --shm-size 32g \
  -p 30000:30000 \
  -v ~/.cache/huggingface:/root/.cache/huggingface \
  --ipc=host \
  lmsysorg/sglang:dev-clef \
  sglang serve \
    --model-path Cloudflare/clef-flash \
    --host 0.0.0.0 \
    --port 30000

The server answers Jev/SystemOne requests at /v1/systemone:

curl http://localhost:30000/v1/systemone \
  -H 'Content-Type: application/json' \
  -d '{"model":"Cloudflare/clef-flash","state":"My Stripe integration keeps failing. Please help ASAP.","questions":{"urgency":{"type":"noul","instructions":"Does this message express urgency?"}}}'
Jev / SystemOne API#

systemone takes a Jev/SystemOne POST /v1/systemone request body and returns the same response body: model, answers keyed by question ID, and usage. A choice answer has choice, confidence, and probabilities; a score answer has the expected score, confidence, legend, and probabilities; a noul answer has the probability of true. instructions is optional, and images and videos may be added to the request.

from joint_schema_model import systemone

response = systemone(model, processor, {
    "model": "clef-flash",
    "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 and video#

Add images (PIL images) or videos (frame arrays) to the record and pass the processor to encode_record. Optional processor arguments go in media_kwargs.

from PIL import Image

record = {
    "state": {"task": "Review the attached receipt."},
    "images": [Image.open("receipt.jpg")],
    "questions": {
        "legible": {"type": "noul", "instructions": "Is the receipt total legible?"},
    },
}
encoded = encode_record(processor.tokenizer, record, processor=processor)

Text-only and multimodal records can be mixed in the same batch.

Input format#

FieldDescription
stateAny string or JSON value describing the situation to decide on
images, videosOptional lists of images or video frame arrays
media_kwargsOptional keyword arguments for the image/video processor
questionsMapping of question ID to question

Each question has:

  • type: noul (true/false), choice (named options), or score (ordered options)
  • instructions: what to decide; optional, and the question ID is used when it is omitted
  • criteria: for choice, a mapping of option ID to description; for score, a list of option descriptions indexed from 0; for noul, optional descriptions for true and false

encode_record accepts max_length (default 16,384 tokens) and max_state_tokens to bound the input.

Results#

Decision Index#

Per-benchmark results from our internal run of the Decision Index 0.2.1 suite. Scores are percentages; ForecastBench is a Brier score, where lower is better. The last two rows are request latency in milliseconds, where lower is better. The best value in each row is in bold.

BenchmarkClefClef-flashJevDiffusionGemma JevKev 9BLaya
BFCL (case exact accuracy)98.598.895.896.594.538.1
ToolRet (nDCG@10)69.266.465.361.264.312.8
API-Bank (accuracy)91.993.188.283.756.311.5
BANKING77 (macro-F1)94.290.979.774.384.814.3
CLINC150+OOS (macro-F1)97.466.889.383.579.03.2
RouterBench (selected quality)79.779.979.979.080.057.1
Home appliance simulator (case exact accuracy)83.097.752.342.025.00.0
SGD/SGD-X (macro-F1)43.834.243.040.664.042.4
ContractNLI (macro-F1)81.484.371.776.057.829.0
ANLI (macro-F1)69.859.174.866.456.348.7
BPoMP (accuracy)96.995.490.686.967.051.6
Humicroedit (accuracy)66.775.161.963.055.847.2
POP909-CL (accuracy)15.81.618.12.510.85.1
cfcolor (accuracy)66.065.864.758.256.352.3
MMLU (accuracy)90.391.891.779.375.330.7
GPQA Diamond (accuracy)48.051.078.344.938.827.6
ARC-Easy (accuracy)99.099.599.398.297.747.0
ARC-Challenge (accuracy)97.798.397.894.593.728.6
WinoGrande (accuracy)93.597.592.073.673.250.5
HellaSwag (accuracy)98.298.694.583.381.933.1
GSM8K (accuracy)80.867.379.950.348.721.6
ChessBench (accuracy)24.723.017.214.211.27.7
MuSR (accuracy)83.586.066.161.257.943.2
SATA-Bench (case exact accuracy)33.836.726.427.526.70.3
BRIGHT (nDCG@10)45.939.347.542.938.519.9
Amazon ESCI (macro-F1)57.557.455.253.449.224.4
ACOS (per-review F1)33.325.929.524.518.33.5
FinEntity (macro-F1)96.297.187.089.088.461.0
VAST (macro-F1)59.549.664.655.755.440.5
NLI4CT (macro-F1)82.978.684.178.474.947.7
CRUXEval (accuracy)86.786.173.064.751.240.2
CLadder (accuracy)94.097.772.667.862.052.9
ForecastBench (Brier, lower is better)13.910.617.429.617.641.1
Habermas Machine (accuracy)68.771.845.945.039.433.4
PhishNChips (accuracy)79.675.062.585.450.750.1
MMLU-Pro (accuracy)65.965.382.756.951.113.6
BBH (accuracy)73.768.992.970.765.234.1
RAGTruth (hallucination F1)79.435.676.570.446.248.8
HoVer (accuracy)65.261.272.970.958.855.8
When2Call MCQ (accuracy)72.465.681.075.449.611.9
New Yorker (accuracy)69.566.170.163.658.127.1
Median latency (ms)209.338.8524.184.451.45.8
p95 latency (ms)238.6122.4536.0211.2187.9222.5
Workflow evals#

Decision accuracy on four end-to-end business workflows from Typesafe Evals, scored against consensus reference labels. All models are scored on the same dataset revision and case cohort.

WorkflowMetricClefClef-flashJev
Invoice processingExact actions64.757.161.8
Invoice processingPrimary action86.273.383.1
Customer serviceExact actions76.377.076.0
Security incidentsExact actions62.961.761.7
Agent trace observabilityPrimary action68.569.871.6

License#

Released under the Apache-2.0 license, following the base model Qwen/Qwen3.5-9B.

Files

19 files · 19.1 GBWeights 19.1 GB (safetensors). Sizes and sha256 from the signed manifest.
Hide all 19 files with their sha256
FileSizesha256
.eval_results/Cloudflare__clef-flash.yaml1.11 KB4ee39a04dc803f6e90520edbc2253377bd7b1646cf5f47c8c2c8812e54825e9e
.eval_results/safeagents-judge-bench.yaml1.19 KBc6f02c4738621231b1b9039928646000ac2234eac2426ba341600cf02eabaa82
.gitattributes1.57 KB34448b82c17d60fec9b65b1f093c115ddbaadc04beb1b0140b6bfed2e012a930
LICENSE11.5 KBbbedc3fda3305820b977265f01b8619d87570a6739de3a5582c3464840f1e57a
README.md11.1 KB53a3dc4ac96a1b2f17e6c03d9cf19a50b25ddad8d270fbe655902f6ce68bb4b5
chat_template.jinja7.76 KBa4aee8afcf2e0711942cf848899be66016f8d14a889ff9ede07bca099c28f715
config.json2.83 KB66f87f6fb2616b46604daf2a9c67ddc87938296d07156efa34d59b5be49e3238
generation_config.json116 B45707f8467bf4e54e112c6095a1b2d1f2d63651cf86816344cfff21f02dda0d4
joint_head.safetensors244 MB19cdcec8c81dc9212be320fff47462ab342fbc1278be4368fb3da71241cf5ba0
joint_head_config.json119 B77efe959a38b5b17b241543e129e695f3c77465ece55a25985279bd8176279a0
joint_schema_model.py23.3 KB0e304cf7c6500e8bb59bef7e2afd2c6373f82596dfb3b57d1aa93c175e2dc3a3
model-00001-of-00004.safetensors4.94 GB8b45a8e968141cdcc58fb71c9adfc258e2c77b5f062bc636c1fd5bc5d916b565
model-00002-of-00004.safetensors4.99 GB7590856c713eed844a2dcf48e6c43c4de165b788bc3f80e328311183cdbc7db8
model-00003-of-00004.safetensors4.95 GBe6eac2467952c33361ed7dcb3c7959d1086bbe57201cd3749c3d769fdc17fe63
model-00004-of-00004.safetensors3.93 GB9fcecc6556b39171238373a465f409794b7f821fb4cd1e6459e3a9c0fe317af7
model.safetensors.index.json69.3 KB941305ff9f77551e145a6cea976ef456cd5cb208cbece99f168376c752fcf96c
processor_config.json1.19 KBd89ef49ce9cd37fbf510158e13c1ef063d9286411c1ec9049932dbe0487143b1
tokenizer.json20.0 MB06b9509352d2af50381ab2247e083b80d32d5c0aba91c272ca9ff729b6a0e523
tokenizer_config.json1.07 KB91a08f825d370d085d692e04cf117cdd7faad7bf18e996f1e6031b6dab03db72
VersionsEach time the pinned upstream commit or file list changed in this repo. Newest first.
Upstream commitDateContents
22b7550798 pinned now2026-11-15 02:35 UTC19 files · 19.1 GB

Use it

$ fw get Cloudflare/clef-flash
# manifest sha256 679808aa7f87… · 19.1 GB · 19 files
$ fw verify ./clef-flash Cloudflare/clef-flash
fw.pyChecks the signature and every sha256, tries each source in order, resumes.
$ python3 fw.py get https://freeweights.allternit.com/manifests/Cloudflare/clef-flash.json --dir ./clef-flash $ python3 fw.py verify ./clef-flash ./Cloudflare__clef-flash.json
hfThe Hugging Face CLI with one setting. Same repo id.
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Cloudflare/clef-flash --revision 22b75507981345858dd152fbd9a6f8c0c4068b0a --local-dir ./clef-flash
transformersLoad the weights in Python.
import os os.environ["HF_ENDPOINT"] = "https://freeweights.allternit.com" from transformers import AutoModelForImageTextToText, AutoProcessor processor = AutoProcessor.from_pretrained("Cloudflare/clef-flash", revision="22b75507981345858dd152fbd9a6f8c0c4068b0a") model = AutoModelForImageTextToText.from_pretrained("Cloudflare/clef-flash", revision="22b75507981345858dd152fbd9a6f8c0c4068b0a", device_map="auto")
vLLMServe an OpenAI-compatible API.
$ HF_ENDPOINT=https://freeweights.allternit.com vllm serve Cloudflare/clef-flash --revision 22b75507981345858dd152fbd9a6f8c0c4068b0a

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: Cloudflare <huggingface.co/Cloudflare>Newsgroups: alt.freeweights.textSubject: clef-flashDate: 2026-11-15Commit: 22b7550Signed: 2DC28CC7B26A283B ✓
Upstream
Cloudflare/clef-flash
Pinned commit
22b75507981345858dd152fbd9a6f8c0c4068b0a
Manifest
clef-flash.json · .minisig
Manifest sha256
679808aa7f873286e299e65766543532e54d1031a992a9dfcccc7691091893db
Signature
minisign, Ed25519, key 2DC28CC7B26A283B
Created
2026-11-15 02:35 UTC
Generator
freeweights-manifest/0.1.0
Takedowns
None.

How to verify

$ curl -O https://freeweights.allternit.com/manifests/Cloudflare/clef-flash.json $ curl -O https://freeweights.allternit.com/manifests/Cloudflare/clef-flash.json.minisig $ minisign -Vm clef-flash.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

Qwen/Qwen3.5-9B · this model is a finetune of it

4 models in the catalog name this one as their parent.

Quantizations
4
Get it
Download
$ HF_ENDPOINT=https://freeweights.allternit.com hf download Cloudflare/clef-flash
Open in Freeweights Studio

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

Signed manifest
minisign, key 2DC28CC7B26A283B. clef-flash.json. Provenance. Takedown history: none.

Variants

4 quantized or adapter builds of clef-flash. Each has its own license check and page.

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