Engineering
It tells you before the download, not after
Search the Hugging Face catalogue from inside Runlix, get a reasoned verdict on whether a model will actually run, queue downloads that resume where they stopped, and see where the disk went.
Updated 2026-09-12Measured 2026-09-12

The normal way to find out that a model will not run on your machine is to download it first. Eight gigabytes, twenty minutes, and then an error message that names a field in a configuration file you have never seen.
Runlix asks first. It reads the model's own description on Hugging Face, without downloading a byte of the weights, and gives you a verdict with the reason written next to it.
mlx-lm knows
it, so it is a family that can be added.
The checks run in an order that matters. Vision models are detected before the family is
looked up, because gemma3 and qwen2_5_vl have a model_type that looks like a text model's;
checking the family first would wave them through. Aliases are resolved from mlx-lm's own
remapping table rather than a hand-written list, which is how mistral comes back as "another
name for llama" instead of "unknown". And the list behind "not yet" is literally the filenames in
the frozen copy of mlx-lm kept in the project — so it is right by construction, instead of being
a list somebody has to remember to update.
"Not known" is its own verdict on purpose. An engine that guesses when it cannot tell is an engine that will eventually guess wrong, confidently.
The check runs when you ask for it, one row at a time, because running it for a list you scroll past in a second would be four hundred network requests for nothing.
The catalogue, searched where it lives
Search runs on Hugging Face's side, not over a cached page of results. The earlier version pulled the top five hundred models and filtered them locally, which quietly meant that anything outside that window did not exist as far as the application was concerned.
Each row shows the model, a line of detail taken from its own description — phi3 · 4 bit · 40 layers · 16k context — how many people downloaded it, and a green badge with the size if you
already have it.
Downloads that survive being interrupted
Downloads go through a queue, two at a time. Not more: the downloader already parallelises the files inside one repository, and stacking more on top just splits the same bandwidth into thinner pieces.
Each one shows a progress bar, the phase, and the detail that actually tells you whether to wait:
12/47 files · 3.2 GB / 8.1 GB · 45.2 MB/s · 1m 52s. The speed is a smoothed average, because
the instantaneous number moves too fast to read. Expanding a download lists the repository's
files by size with a tick on the finished ones.
Stop one and the partial files stay on disk. Queue it again and it resumes from where it was — it does not start over. You can also queue a download for something that is not in the catalogue at all, which is how you repair a model the catalogue does not list.
Whether a model is complete is not guessed from how many files arrived. Runlix reads the list the model itself publishes of the pieces it is made of, and requires every one of them — for a single version at a time, so that two half-finished downloads of different versions cannot look like one finished model.
Where the disk went
Model caches grow in a way that is hard to see, and most of the growth is not the models.
Runlix shows 12.3 GB on disk · 8 models, counted from the files that are really there, and
separately shows what you can get back: revisions other than main, left behind by updates and
by references from pull requests, plus the leftovers of interrupted downloads. A real cache had a
single stale revision worth 2.27 GB in it.
Reclaiming reports the bytes freed. When there is nothing to reclaim it says so, rather than appearing to work and doing nothing.
What "complete" actually means
A download is finished when every shard the model's own index names is present — not when the folder stops growing, and not when some number of files have appeared.
An earlier version counted files, and that is wrong in both directions: a small model made of two files looked unfinished, and a big one whose download died two pieces from the end looked done. Asking the model which pieces it is made of is the only answer that holds for both.
The same care is why the disk figure counts the real files rather than the shortcuts pointing at them: shortcuts would count the same file twice when two versions share it, and the number would be wrong in the direction that makes your disk look worse than it is.
After the download
"Use" opens a chat with the model you just downloaded, already chosen. It sounds like the least a button can do, and it was the first thing the first trial run from the disk image broke: the chat built its list of models once, when the app started, so a model downloaded afterwards was not in it. Now the list is read again at the two moments someone looks at it.
A loaded model stays loaded while the app is open. There is no timer that unloads it behind your back, because the next question would pay the reload. When you want the memory back, Settings has a button that frees it — and it frees it for real: letting go of the models is not enough, since MLX keeps what they used in its own pool, so the button empties that pool too and hands the memory back to the Mac. A model that is answering at that moment is left alone.
What a model costs is measured on its weights. Hugging Face's cache keeps models as links into a store of files; measuring the link instead of the file it points to made every model look like a few bytes, and the room-making that decides what to unload never saw a reason to. It follows the links now.
The format filter
Many repositories publish the same model in several formats, and none of Runlix's engines load
most of them. On bge-m3, the ONNX copy alone is 2.29 GB out of 6.86.
Settings has four checkboxes — ONNX, TensorFlow, Flax/JAX, TensorFlow Lite — and what they
exclude is skipped on future downloads. PyTorch weights deliberately cannot be filtered: for some
models the .bin is the only thing published, and a filter that can make a model undownloadable
is a filter that will.
What is already on disk is not touched. The setting stores which formats are enabled, so a format added to the list next year starts out excluded rather than silently slipping through.
Two small things that decide whether it is pleasant
Searching without hammering
Typing in the search box does not fire a request per keystroke: there is a short pause before the query goes out, so a five-letter word is one request rather than five.
Small — and the difference between a catalogue you can type into and one that rate-limits you for using it normally.
The Hugging Face token
Optional. It raises the rate limits and lets you download private models.
It is stored in the macOS Keychain rather than in the settings database, and read once per launch: each read asks you for your password on an ad-hoc signed build, and one of those per launch is already one more than anybody wants.