Device Models
The Models tab of a device shows what model weights are already sitting on that machine's disk — and lets you launch any of them without downloading anything first.
Cordatus does not go hunting across the filesystem. It looks only where you tell it to, so the tab has two halves: Storage Paths on the left, where you register the directories, and Downloaded Models on the right, where everything found under them is listed.
Devices → your device → Models.
Fleet-Management/device-models.mp4 — adding a HuggingFace cache path, the models appearing in the
table, switching to Ollama and NIM, and deploying one straight from the row.
Storage Paths
The left panel holds the paths, grouped by source: HuggingFace, Ollama and NIM. Pick a source with the segmented selector, then use the + button in the panel header to add a path.
Paths are stored per device. Registering ~/.cache/huggingface on one machine says nothing about
any other.
Adding a path
- Press + (Add path).
- Browse the device's filesystem and choose the directory.
- Cordatus validates it on the device and saves it. The list is refreshed straight away.
Validation is about the path itself, not its contents:
| Message | Meaning |
|---|---|
| ✓ Valid path | The directory exists and can be read. |
| Selected path does not exist | Nothing is there on the device. |
| Selected path is not a directory | You picked a file. |
| This path is already added | Duplicate — the existing entry stays. |
A valid path that simply holds no models is not an error. It is saved, and the table stays empty until something appears under it.
Which directory to give
| Source | What to register | What is scanned |
|---|---|---|
| HuggingFace | The HuggingFace cache root, e.g. ~/.cache/huggingface (or the hub folder inside it directly) | Directories named models--org--name, both in the path itself and in a hub subfolder. The name is turned back into org/name. |
| Ollama | The Ollama root, e.g. ~/.ollama — the folder that contains models | models/manifests/registry.ollama.ai/library. Every tag of every model becomes a row, named model:tag, with its size read from the manifest layers. |
| NVIDIA NIM | The NIM cache root | Directories named models--…, both in the path itself and under ngc/hub. |
You can register more than one path per source — a second disk, a second user's cache. All of them are scanned and the results merged; a model found twice is listed once.
Removing a path
Press the × next to the path and confirm. The dialog is explicit about what happens:
This will only remove the path from settings. Your model files will not be deleted.
Downloaded Models
The right panel lists everything found under the registered paths for the selected source. Switch source with the segmented selector in its header; ⟳ rescans the device.
| Column | HuggingFace | Ollama | NVIDIA NIM |
|---|---|---|---|
| Model Name | org/name | model:tag | org/name |
| Source Path | Which registered path it was found under — this is how you tell two copies apart | ✓ | ✓ |
| Size | On-disk size of the folder | Sum of the manifest layers | On-disk size |
| Last Modified | ✓ | — | — |
| Quantization | — | Read from the tag (Q4_K_M, FP16, …) when it is in the name | — |
| Version | — | — | ✓ |
| Deploy | ✓ | ✓ | ✓ |
The footer counts the rows.
The Custom badge
A model in the HuggingFace path that does not follow the models--… cache naming is still
picked up, as long as its folder holds real weights — a config.json, or .safetensors, .bin,
.gguf or .pth files. Those rows carry a Custom badge and are named after their folder.
This is how a model you cloned or copied by hand shows up next to the ones the cache downloaded.
Custom detection applies to the HuggingFace path only. Ollama and NIM are read through their own directory structures.
Empty states
| State | What it means |
|---|---|
| No paths configured — Add a {type} path to start listing models. | Nothing registered yet for this source. |
| No HuggingFace path configured (and the Ollama / NIM equivalents) | The table has nothing to read; add a path on the left. |
| No HuggingFace models found | The paths are registered and readable, but nothing matched under them. |
Deploy a model from the table
Deploy takes the model on that row into the launch flow with its path already filled in — nothing is downloaded, the container reads the weights straight off the disk.
- Sources are matched to engines automatically: HuggingFace models to vLLM, TensorRT-LLM, SGLang and Dynamo; Ollama models to Ollama; NIM models to NIM.
- If only one engine matches, Deploy goes straight there.
- If several do, the button opens a menu and you choose the engine.
- You land on that engine's launch page with the model preselected; carry on as usual — device, version, compute, access, overrides, start.
| Message | Meaning |
|---|---|
| No engine available for {source} | No engine in your account handles this source. |
| No container found for engine "X" | The engine has no container image registered. |
How this relates to LLM Models
Two different things, easy to confuse:
| Devices → device → Models | LLM Launcher → LLM Models → User Models | |
|---|---|---|
| Scope | One device, read live from its disk | Your whole account |
| Source of truth | The filesystem, right now | The models you registered with Cordatus |
| What it is for | Seeing what is already there and launching it | A catalogue with tags, metadata and engines, usable in every launch flow |
They meet in one place: Explore Models on Your Devices on the User Models tab scans a device using exactly these registered paths and imports what it finds into your library. So a path registered here also makes that scan work. See User Models.
Model transfer needs a path on the destination device too. Moving a model to a machine with no registered path for that source fails with "{type} model path is not configured on the destination device."
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| The tab is empty and nothing loads | The device must be Online — paths and models are read from the device itself. |
| A path was added but the table stays empty | The directory is valid but nothing under it matches the layout for that source. Check the table in Which directory to give — for Ollama it is the folder that contains models, not the models folder. |
| A model is on disk but not listed | Under the HuggingFace path it needs either the models--… cache naming or recognisable weight files in its folder. Otherwise register it by hand from LLM Models → User Models → Add a model manually. |
| Sizes look wrong for Ollama | Ollama sizes come from the manifest layers, not from a directory walk, so shared layers are counted per tag. |
| The same model appears twice | It exists under two registered paths. The Source Path column tells you which is which. |
| Deploy is greyed out | No engine is registered for that source in your account. |