> ## 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.

# CLI

> The veri command — install, log in, and drive every Phase-1 workflow from your terminal.

`veri` is the official command-line tool. It ships with the Python SDK; one install gets you both.

By the end of this page you'll have the CLI installed, an authenticated session, and a map of every command group.

## Install

<CodeGroup>
  ```bash uv (recommended) theme={null}
  uv tool install veri-sdk
  ```

  ```bash pipx theme={null}
  pipx install veri-sdk
  ```

  ```bash pip theme={null}
  pip install veri-sdk
  ```
</CodeGroup>

Verify:

```bash theme={null}
veri version
```

## Log in

Pick the flow that fits your environment.

<CodeGroup>
  ```bash Browser (default) theme={null}
  veri login
  ```

  ```bash Paste a key theme={null}
  veri login --paste
  ```

  ```bash Headless / CI theme={null}
  veri login --token vk_your_api_key
  ```

  ```bash Custom API URL theme={null}
  veri login --token vk_... --url https://api.veri.studio
  ```
</CodeGroup>

Confirm:

```bash theme={null}
veri whoami
veri doctor
```

`veri whoami` shows the account it resolves to (user, email, plan) alongside the active key, config file path, and credit balance. `veri doctor` runs a health check against the control plane.

<Note>
  Credentials live at `~/.config/veri/config.toml` (or `$XDG_CONFIG_HOME/veri/config.toml`). The CLI auto-migrates from the legacy `~/.veri/credentials.json` path when neither `VERI_API_KEY` nor `VERI_API_URL` is set in the environment. Env vars take precedence over the file.
</Note>

## Command groups

| Group              | Pages                           | Quick description                                                    |
| ------------------ | ------------------------------- | -------------------------------------------------------------------- |
| `veri run`         | [Run](/cli/run)                 | Submit a workflow from a TOML config + a Python module               |
| `veri train`       | [Run](/cli/run)                 | Submit a `@training_job`-decorated Python file (one-call ergonomics) |
| `veri datasets`    | [Datasets](/cli/datasets)       | Upload, connect-hf, check, preview, list, get, delete                |
| `veri rewards`     | [Training](/cli/training)       | Upload, list, get, delete reward functions                           |
| `veri jobs`        | [Training](/cli/training)       | Create, list, get, cancel, download training jobs                    |
| `veri deployments` | [Deployments](/cli/deployments) | Create, list, get, stop, chat, metrics, requests                     |
| `veri evals`       | [Evals](/cli/evals)             | Coming soon: define and run evaluations                              |
| `veri volumes`     | [Volumes](/cli/volumes)         | Create, list, get, delete; `upload`, `upload-dir`, `ls`, `rm`        |
| `veri gpu`         | [Reference](/cli/reference)     | `list`, `compare`                                                    |
| `veri billing`     | [Reference](/cli/reference)     | `balance`, `transactions`                                            |
| `veri config`      | [Reference](/cli/reference)     | `show`, `set`                                                        |

Plus top-level: `veri login`, `veri logout`, `veri whoami`, `veri doctor`, `veri version`, `veri init`.

## Global flags

These flags are spliced into every command group by Veri's Typer wrapper:

| Flag             | Effect                                                   |
| ---------------- | -------------------------------------------------------- |
| `-o`, `--format` | Output format: `table` (default), `json`, `jsonl`, `csv` |
| `--json`         | Alias for `--format json`                                |
| `-q`, `--quiet`  | Pipe-friendly: suppress banners and non-essential stdout |

## Exit codes

| Code  | Meaning                                    |
| ----- | ------------------------------------------ |
| `0`   | Success                                    |
| `1`   | User error (bad arguments, missing files)  |
| `2`   | API error from the control plane (4xx/5xx) |
| `3`   | Network error (DNS, timeout)               |
| `4`   | Auth error (missing/expired key)           |
| `130` | Interrupted by SIGINT                      |

## Where to go next

<CardGroup cols={2}>
  <Card title="veri run" icon="play" href="/cli/run">
    The hero verb — submit any workflow from a TOML config.
  </Card>

  <Card title="Datasets" icon="database" href="/cli/datasets">
    Upload, connect, validate.
  </Card>

  <Card title="Training" icon="brain" href="/cli/training">
    Reward functions and training jobs.
  </Card>

  <Card title="Deployments" icon="rocket" href="/cli/deployments">
    Serve, chat, stop.
  </Card>

  <Card title="Evaluations" icon="chart-line" href="/cli/evals">
    Score deployments, inspect runs.
  </Card>

  <Card title="Volumes" icon="hard-drive" href="/cli/volumes">
    Managed storage for datasets and checkpoints.
  </Card>

  <Card title="Reference" icon="book" href="/cli/reference">
    Full command table, all flags, all exit codes.
  </Card>
</CardGroup>
