YuleYule
CLI

yule verify / inspect

Inspect metadata and verify model integrity

yule inspect

Print model metadata without running inference or computing hashes.

yule inspect ./model.gguf

Output includes all GGUF key-value pairs: architecture, vocab size, context length, rope settings, quantization info, and any custom metadata the publisher included.

yule verify

Full verification: parse metadata, build a Merkle tree over all tensor data, and report the root hash.

yule verify ./model.gguf
verifying: ./model.gguf

  format:       GGUF v3
  name:         TinyLlama 1.1B
  architecture: Llama
  parameters:   1.1B
  context:      2048
  embedding:    2048
  heads:        32 (kv: 4)
  layers:       22
  vocab:        32000
  tensors:      201
  file size:    637.81 MB
  parse time:   15.2ms

  building merkle tree...
  merkle root:  ffc7e1fd6016a6f9ba2ca390a43681453a46ec6054f431aeb6244487932b0e65
  leaves:       638
  verify time:  1240.3ms

  VERIFICATION COMPLETE

Verbose Mode

Add --verbose to include per-tensor blake3 hashes:

yule verify ./model.gguf --verbose

This prints every tensor's name, shape, quantization type, size, and individual blake3 hash. Useful for pinpointing exactly which tensor differs between two model files.

What the Merkle Root Means

The merkle root is a single 256-bit hash that represents the entire tensor payload of the model. It's built from blake3 hashes of 1MB chunks of tensor data, combined into a binary Merkle tree.

If a single byte of any tensor changes, the merkle root changes. This is the same hash that appears in every API response under integrity.model_merkle_root, so you can verify that the model the server loaded is the one you verified on disk.

On this page