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 (52 runnable; 10 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
* License page: https://github.com/resemble-ai/chatterbox/blob/master/LICENSE
-----------------------------------------
...

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
license page: https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/LICENSE
model: meta-llama/Llama-3.2-1B-Instruct provider: meta-llama source: https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct
license: llama3.2 https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct/blob/main/LICENSE.txt gated: access through your own Hugging Face account

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. The last three lines are the licensing report: the family's license page, the checkpoint's provider and source, and the checkpoint's own license with whether the repository is gated. Read them before you ship what the model produces.

--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
license page: https://github.com/meta-llama/llama-models/blob/main/models/llama3_2/LICENSE
model: meta-llama/Llama-3.2-1B-Instruct provider: meta-llama source: https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct
license: llama3.2 https://huggingface.co/meta-llama/Llama-3.2-1B-Instruct/blob/main/LICENSE.txt gated: access through your own Hugging Face account
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)

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.