WebLLM model library Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm
models.skillsafe.ai/qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3/
Text generation library model for web-llm. Runs on WebGPU —
5.8 MB downloaded once from models.skillsafe.ai, then cached for every SkillSafe app that
uses it. Inference happens on your device; nothing you enter is uploaded to load it, and it never costs a credit.
Weights from GitHub · mlc-ai/binary-mlc-llm-libs, pinned at 025bcaf3780f.
Details
qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3025bcaf3780fa8254f5e5efd3bfea0a5397248f4Files
Each file is served at an immutable URL; the canonical form is the SHA-256 itself. Tokenizer and config JSON are not here by design — they ship in your app bundle.
| Path | Format | Size | SHA-256 | |
|---|---|---|---|---|
Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm | wasm | 5.8 MB | 5ddf44e49b03…571340 |
Use it in an app declaration · SDK loader · web-llm · URLs — generated from this entry
Add to the body of POST /v1/apps/{slug}/releases (or a release session). An unknown or withdrawn model is refused with a 400 naming it; the app page then shows "downloads 5.8 MB · runs on your device" and /models.txt carries the attribution.
{
"models": [
{
"id": "qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu",
"revision": "025bcaf3"
}
]
} Streams with progress, verifies the SHA-256 against the catalogue, keeps a durable copy in the app's Cache API and reports whether the bytes came from cache or the network.
<script src="/sdk.js"></script> <!-- vendored from https://skillsafe.ai/apps-sdk/v1.js -->
const ss = SkillSafe.init({ slug: "your-app" });
const caps = await ss.models.capabilities(); // { webgpu, wasm, wasmSimd, storage }
const bytes = await ss.models.load("qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3", "Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm", {
onProgress: (p) => (bar.style.width = Math.round(p.ratio * 100) + "%"),
}); // ArrayBuffer — SHA-256 verified, cached
// Later visits: await ss.models.status("qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3") → { cached: [...], missing: [] }
// Background prefetch on a landing page: ss.models.warm("qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3") The runtime itself ships in your bundle as a vetted {path, sha256} reference — only the weights come from the registry. Pass the bytes in; do not re-fetch by URL.
// web-llm fetches shards by URL and resumes by range; point its model record at the registry.
const appConfig = { model_list: [{
model: "https://models.skillsafe.ai/qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3/", // params_shard_*.bin + the wasm kernel come from here
model_id: "qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu",
model_lib: "https://models.skillsafe.ai/qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3/Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm",
}] };
const engine = await webllm.CreateMLCEngine("qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu", { appConfig, initProgressCallback: onProgress }); Immutable, credential-free, Access-Control-Allow-Origin: *, range requests honoured. The host refuses requests carrying a foreign Origin; a plain curl is fine.
https://models.skillsafe.ai/qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3/Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm curl -sSL -o Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm "https://models.skillsafe.ai/qwen3-4b-q4f16-1-ctx4k-cs1k-webgpu@025bcaf3/Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm"
shasum -a 256 Qwen3-4B-q4f16_1-ctx4k_cs1k-webgpu.wasm # 5ddf44e49b03e53e24fd29a45591850924346140452f60c29280190388571340 Evaluation
shard sizes + md5 vs ndarray-cache.json; implied parameter count vs the checkpoint; parameter table vs model_lib embedded metadata — MLC's published weights, checked against the WebGPU library. Evaluated Sep 22, 2026.
Library fit
params_matched: 435 · symbolic_dims_resolved: [] · model_type: qwen3 · quantization: q4f16_1 · effective: {"context_window_size":4096,"prefill_chunk_size":1024}
Toolchain: python 3.12.13 · platform Darwin 25.6.0 arm64 · torch 2.10.0 · onnx 1.23.0 · onnxruntime 1.30.0. Recipe models/recipes/qwen3-4b-q4f16.yaml (1639cc66dc94). Full manifest.json
Licence & attribution
Apache-2.0 · licence text
Prebuilt WebLLM model library from mlc-ai/binary-mlc-llm-libs (MLC LLM, Apache License 2.0). https://github.com/mlc-ai/binary-mlc-llm-libs
Apps that declare this model get this text in their generated /models.txt, so a licence that requires a notice always carries one.
Every file here was approved by exact SHA-256 after a structural audit of the graph, fetched from a content-pinned source, and is served credential-free at an immutable URL. The SDK re-verifies the hash on your device before it caches or returns anything. Missing a variant? Request it — or read how the registry works.