Skip to main content

Pick a model

This tutorial takes one model from the catalog to a served endpoint in four parts, each a complete session, and ends with the same model running inside a C++ program. Core concepts are explained where they first appear. This part picks the model and learns everything about it without downloading a single weight.

It assumes the install directory exists and clika-modelverse is on your PATH (see Quick install). The model is Llama 3.2 1B Instruct, small enough to run on any machine in the system requirements; every command works the same with any other model in the catalog.

The catalog knows the families

list prints every registered model family: its modalities, the commands it provides, and whether it is runnable on this build. No network is involved; the catalog is compiled into the clika-modelverse executable.

clika-modelverse list
registered model families (54 runnable; 9 hidden, --all shows all)

chatterbox runnable
* Input Modalities: text
* Output Modalities: audio
* Valid Combos: text -> audio
* Commands: speak, serve, bench
* Web UI: generic page
* Vendor: Resemble AI
-----------------------------------------
...

A family is the model architecture Modelverse knows how to run; a model you fetch is a checkpoint of that family. The Commands row is the contract for parts 2 and 3: whatever it lists is what that model can do.

A source names a model

Everything model-specific starts from a source: a Hugging Face Hub repo id (<org>/<repo>), a pasted Hugging Face URL, or a local directory. Modelverse runs checkpoints in the formats model publishers ship on the Hub: safetensors, torch containers (pytorch_model.bin), and GGUF. (ONNX exports are a different lane: the ClikaRT runtime runs ONNX models directly; its how-to guide covers that path.) info resolves a source's identity:

clika-modelverse info meta-llama/Llama-3.2-1B-Instruct
meta-llama/Llama-3.2-1B-Instruct
family=llama model_type=llama architecture=LlamaForCausalLM
variant: dense
components: tokenizer=yes image=no audio=no video=no
companions:
config.json 877 B
generation_config.json 189 B
tokenizer.json 8.7 MiB
tokenizer_config.json 53.2 KiB
weights:
model.safetensors 2.3 GiB
total: 2.3 GiB (weights 2.3 GiB, 5 files)
repository: 4.6 GiB in 13 files; the rest is not fetched (other weight formats, files the fetch never takes)
(dry; nothing downloaded)

Identity resolution reads configuration files only. clika-modelverse downloads a few KB of JSON, matches it against the registered families, and reports what it found; weights do not move. This is deliberate: you can interrogate a 70B model from a laptop.

--dry shows what a fetch would cost

Add --dry and info also lists the files a fetch downloads, with sizes, split into companions (configs, tokenizer) and weights, and says how much of the repository it leaves behind (other weight formats, files the fetch never takes):

clika-modelverse info meta-llama/Llama-3.2-1B-Instruct --dry
meta-llama/Llama-3.2-1B-Instruct
family=llama model_type=llama architecture=LlamaForCausalLM
variant: dense
components: tokenizer=yes image=no audio=no video=no
companions:
.gitattributes 1.5 KiB
LICENSE.txt 7.5 KiB
README.md 40.8 KiB
USE_POLICY.md 5.9 KiB
config.json 877 B
generation_config.json 189 B
original/params.json 220 B
original/tokenizer.model 2.1 MiB
special_tokens_map.json 296 B
tokenizer.json 8.7 MiB
tokenizer_config.json 53.2 KiB
weights:
model.safetensors 2.3 GiB
original/consolidated.00.pth 2.3 GiB
total: 4.6 GiB (weights 4.6 GiB, 13 files)
(dry; nothing downloaded)

Nothing here is Llama-specific. info google/gemma-3-4b-it reports variant: dense + multimodal; info openai/whisper-large-v3-turbo reports an audio component. Some repos ship several weight options to choose between; Run a specific GGUF quantization covers picking one.

The model's own commands

clika-modelverse has four commands that work without naming a model (list, devices, info and fetch; generate-template, their file-form helper, rides beside them). Every other command runs on a model you name: pass the source and --help, and clika-modelverse resolves its family and prints that family's own command surface:

clika-modelverse meta-llama/Llama-3.2-1B-Instruct --help
meta-llama/Llama-3.2-1B-Instruct
family=llama text->text

usage: clika-modelverse meta-llama/Llama-3.2-1B-Instruct [options] <command>

commands the 'llama' family provides for this model

options:
-h, --help show this help and exit
--verbose, -v debug diagnostics (the effective-options report)
--quiet, -q warnings and errors only
--no-color plain output (also honored: $NO_COLOR, TERM=dumb, non-tty)

commands:
prompt one templated generation of the positional user message
chat interactive terminal chat (FTXUI ui; plain repl off a tty)
serve run the openai-compatible http server
bench the family-owned benchmark flow
mm_bench the multi-modality benchmark flow (media axes over the serving
path)

Asking a model for a command its family does not provide refuses precisely and names what it does provide, with exit code 3 (Script clika-modelverse has the full exit contract).

Next: part 2, the weights arrive and the model speaks.