> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veri.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Custom models

> Your model library: save a trained checkpoint as a named, deployable model on Veri.

A custom model is a set of weights you own, stored on Veri and deployable from a single named entry. Today you build your library by saving a completed Veri training job: the checkpoint is already on Veri storage, so saving it is a metadata-only step that names it and makes it deployable. No weights are copied.

Your custom models live in the **model library** in the dashboard. From there you deploy a model or copy its ID for the API.

<Note>
  Hugging Face import and direct upload are not available yet. For now, a custom model comes from a completed Veri training job. To serve a Hugging Face repo directly, deploy it with `source="huggingface"` (see [Deployments](/deployments)).
</Note>

## Save a training job as a model

When a training job completes, its checkpoint is already on Veri-managed storage. Save it to give it a name and make it reusable and deployable.

```bash theme={null}
veri models save <job-id> --name support-agent-v2
```

```python theme={null}
model = client.models.create_from_training_job("<job-id>", name="support-agent-v2")
```

Saving is idempotent per job: saving the same completed job again returns the existing model rather than creating a duplicate. The saved model reuses the completed checkpoint already in Veri storage; it does not copy the weights.

Only completed jobs that produced a Hugging Face checkpoint can be saved. Jobs that are still running, failed, or ran a custom script (which produces arbitrary output rather than a standard checkpoint) cannot be saved as a model.

You can also keep working with the raw checkpoint directly:

```bash theme={null}
veri jobs download <job-id> --output-dir ./checkpoint
```

See [Training](/training) for the full training flow.

## Manage your library

```bash theme={null}
veri models list
veri models rename <model-id> --name new-name
veri models delete <model-id>
```

Renaming changes only the library label. Removing a model from the library deletes only the registry entry: it never deletes the training checkpoint, and it does not interrupt a deployment that is already serving that checkpoint. A model with an active deployment cannot be removed until you stop the deployment.

## Model states

| State   | Meaning                                                 |
| ------- | ------------------------------------------------------- |
| `ready` | The checkpoint is stored and the model can be deployed. |

Saving a completed training job produces a `ready` model directly.

## Size limits

A custom model must fit on a single GPU node, the same ceiling as a deployment. Pick a [GPU large enough to hold the weights](/deployments/hosting) when you deploy.

## Deploy a custom model

Once a model is `ready`, deploy it by ID with `source="custom_model"`. Custom models always serve from Veri storage, so cold starts skip any external download step.

```python theme={null}
dep = client.deployments.create_from_model(
    "<your-model-id>",
    name="support-prod",
    gpu={"gpu_type": "A100-80GB", "gpu_count": 1},
)
```

```bash theme={null}
veri deployments create --from-model <your-model-id> \
  --name support-prod --gpu-type A100-80GB --gpu-count 1
```

The deployment records both the saved model and its source checkpoint, so you can always trace what a running endpoint is serving. Because the checkpoint location is captured when the deployment is created, later renaming or removing the model from your library does not affect a running deployment.

See [Deployments](/deployments) for the serving lifecycle and the OpenAI-compatible chat surface.

## Getting started without a model

If your library is empty, you have not saved a trained model yet. [Train a model](/training), then save the resulting checkpoint with `veri models save`. To deploy an open-source model without training, deploy a Hugging Face repo directly from [Deployments](/deployments).

## Where to go next

<CardGroup cols={2}>
  <Card title="Deploy a model" icon="rocket" href="/deployments">
    Spin up a deployment and chat with it in \~10 minutes.
  </Card>

  <Card title="Train your own model" icon="brain" href="/training">
    Train a checkpoint, then save it to your library.
  </Card>

  <Card title="Hosting & GPU sizing" icon="server" href="/deployments/hosting">
    Pick the right GPU for your model size.
  </Card>

  <Card title="CLI deployment commands" icon="terminal" href="/cli/deployments">
    Manage deployments from the terminal.
  </Card>
</CardGroup>
