Skip to content

Models

Get all available VLA model types that can be fine-tuned.

from qualia import Qualia
client = Qualia()
models = client.models.types()

client.models.list() is the former name for this call and is deprecated; it returns the same static catalog. Use types().

Response

VLAModel[]
[
{
"id": "smolvla",
"name": "SmolVLA",
"description": "Lightweight VLA model for efficient training",
"base_model_id": "lerobot/smolvla_base",
"base_model_revision": "4b71a4b8e28469bcf8fe3997b3eab151f523e532",
"camera_slots": ["cam_1", "cam_2", "cam_3"],
"supports_custom_model": true
},
{
"id": "pi05",
"name": "Pi0.5",
"description": "Physical Intelligence Pi0.5 model",
"base_model_id": "lerobot/pi05_base",
"base_model_revision": "b2ed0a5381e74337fba28d088bb5e4524cd1ddfa",
"camera_slots": ["cam_1", "cam_2", "cam_3"],
"supports_custom_model": true
},
{
"id": "act",
"name": "ACT",
"description": "Action Chunking Transformer model",
"base_model_id": null,
"base_model_revision": null,
"camera_slots": ["cam_1", "cam_2", "cam_3"],
"supports_custom_model": false
},
{
"id": "sarm",
"name": "SARM",
"description": "Sparse Attention Reward Model",
"base_model_id": null,
"base_model_revision": null,
"camera_slots": ["main_static_view"],
"supports_custom_model": false
},
{
"id": "sarm",
"name": "SARM",
"description": "SARM reward model for Reward-Aware Behavior Cloning",
"base_model_id": null,
"camera_slots": ["cam_1"],
"supports_custom_model": false
}
]
TypeDescriptionCustom ModelRA-BC Support
smolvlaLightweight VLA modelYesYes
pi05Physical Intelligence Pi0.5 modelYesNo
actAction Chunking Transformer modelNoNo
sarmSparse Attention Reward ModelNoNo

The camera_slots field indicates which camera inputs the model expects. Use these slot names as keys in camera_mappings when creating finetune jobs.

Models with supports_custom_model: false train from scratch and reject both model_id and model_revision.

types() lists what you can train. list_trained() lists what you have trained — the model artifacts in your account, newest first, with cursor pagination.

page = client.models.list_trained(limit=50, subtype="vla_model")
for model in page.items:
print(model.artifact_id, model.path, model.created_at)
if page.page_info.has_next:
page = client.models.list_trained(cursor=page.page_info.end_cursor)

Filter with subtype (vla_model or reward_model), project_id, job_id, or search, and order with sort (newest, oldest, updated, name).