UCompute engineering notes

How to check a downloaded GGUF against its published SHA-256, and what UCompute’s development builds check

Development build, October 2026. UCompute is in development. There is no public release or download yet. The first half of this note applies to any GGUF file from any tool.

A GGUF file is a few hundred megabytes to tens of gigabytes of weights that you are about to hand to an inference engine. Downloads get cut off, mirrors go stale, and a file with the same name can be replaced upstream. Checking the hash takes a minute and tells you one precise thing: whether the bytes on your disk are the bytes the Hub lists for that file.

Where Hugging Face publishes the hash

Large files on the Hugging Face Hub, including GGUF weights, are tracked as Git LFS objects, and the SHA-256 of each such file is its LFS object id; repositories on the Hub’s newer Xet storage still publish it. You can read it without downloading the file, in two ways.

The raw pointer (replace the repository and file name):

curl -sL https://huggingface.co/Qwen/Qwen2.5-0.5B-Instruct-GGUF/raw/main/qwen2.5-0.5b-instruct-q4_k_m.gguf
version https://git-lfs.github.com/spec/v1
oid sha256:74a4da8c9fdbcd15bd1f6d01d621410d31c6fc00986f5eb687824e7b93d7a9db
size 491400032

Or the repository tree API, which lists every file with its size and, for files stored in LFS (all the GGUF files here), an lfs.oid that is the SHA-256. Ignore the top-level oid: it is the 40-character Git object id, not the file’s hash.

curl -s https://huggingface.co/api/models/Qwen/Qwen2.5-0.5B-Instruct-GGUF/tree/main

Both read the main branch. If you downloaded from a specific commit, replace main with that commit id in either URL, because the file under a name can change between commits.

Hash the file you have

Check the size first: if it differs from size, the download stopped early or is a different file, and there is no need to hash it.

macOS

shasum -a 256 qwen2.5-0.5b-instruct-q4_k_m.gguf

Linux

sha256sum qwen2.5-0.5b-instruct-q4_k_m.gguf

Windows (PowerShell)

(Get-FileHash -Algorithm SHA256 .\qwen2.5-0.5b-instruct-q4_k_m.gguf).Hash

Compare the 64 hexadecimal characters with the pointer’s oid (the part after sha256:) or the tree API’s lfs.oid. Every character must match; Windows prints uppercase and the Hub lowercase, which is the same value.

What a match does and does not prove

A match proves the bytes are identical to the file the Hub served for that name at that commit. It does not prove who trained the model, that the weights behave as the model card says, or that the file is safe to load; it only removes “corrupted or swapped in transit” from the list of possibilities. If the publisher’s account or repository were changed, the pointer would change with it, which is why pinning a commit matters.

What UCompute does (development build)

UCompute’s development builds run this check themselves and pin more than the file name.

No platform is declared supported yet. macOS 26.2 on Apple M2 and Windows 11 on an Intel Core Ultra 7 258V with Arc 140V are experimental; Linux, other GPUs and phones (as clients) are planned.

UCompute’s code is licensed under Apache-2.0. The source has not been published yet.


Corrections and questions: hello@ucompute.org. Please send anything security-related there rather than posting it publicly. UCompute is in development. There is no public release or download yet.

Follow new notes: Bluesky @ucompute.org or the Atom feed.