Skip to content

Reading the crystal

View as Markdown

How Vraelis Prompto draws a lockfile as a crystal: one face per file, cut by its digest, lit by its verdict.

Every lockfile can be drawn as a crystal. The drawing is computed from the lockfile itself, so the same bytes always grow the same stone and two releases can be compared at a glance. Open the crystal viewer and drop a modellock.json or addonlock.json; it runs in your browser and uploads nothing.

PartMeans
The crystalOne lockfile: one exact release of a model folder, or one project's approved agent add-ons
A face (a column from tip to tip)One file, or one approved add-on (an MCP server, a settings file, an instruction file)
The width of a faceThat file's share of the bytes, square-root scaled so small files stay visible
The cut of a faceBytes of that file's SHA-256 (for an MCP server or settings file, the SHA-256 of its pinned definition)
Height and waistThe SHA-256 of the whole lockfile's entries
LightThe last verdict for that file: green Unchanged, orange Changed, grey Can't verify

More files, more faces

  • A model with 24 weight shards has more faces than a three-file vision model. A single .gguf wraps its one file around three columns so it still forms a stone; it is listed once.
  • Over 64 files, neighbouring small files share a face, and the viewer says how many.
  • Several models on one machine are several crystals. The same model on eight machines is eight identical crystals.
  • CPUs, GPUs, cores and processes do not change a crystal. It shows what was approved, not the hardware that runs it.

With a result

Drop the output of vraelis models verify --json (or vraelis agents verify --json) with the lockfile, and each face takes its file's verdict. Drop two lockfiles and they are compared file by file, like vraelis models diff.

Not the check

The crystal is for people. Two different crystals can look alike at a glance; the verdict always comes from the SHA-256 comparison, and the digests are listed beside every crystal.

Last updated: October 24, 2026