> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/nemo-helix/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/nemo-helix/_mcp/server.

# Data Designer CLI

The NeMo Data Designer plugin adds the `nemo data-designer` command group. Use it to execute Data Designer workloads on NeMo Platform.

## Configuration Sources

The `preview` and `create` commands accept a configuration source path. The most flexible form is a Python file that defines `load_config_builder()` and returns a configured `DataDesignerConfigBuilder` instance. This file can have any name; the examples below use `product_reviews.py`.

```python
import data_designer.config as dd

def load_config_builder() -> dd.DataDesignerConfigBuilder:
    model_configs = [
        dd.ModelConfig(
            provider="default/nvidia-build",
            model="nvidia/nemotron-3.5-lightning-30b-a3b",
            alias="text",
        )
    ]

    config_builder = dd.DataDesignerConfigBuilder(model_configs)
    # Add columns, constraints, seed datasets, processors, and profilers here.
    return config_builder
```

```bash
nemo data-designer preview product_reviews.py --workspace default
nemo data-designer create product_reviews.py --workspace default
```

## Validate

The `validate` command checks a configuration before you spend time on a preview or a create job. It accepts the same configuration sources as `preview` and `create`.

```bash
nemo data-designer validate product_reviews.py
```

```text
  ────────────────────────── Data Designer Validate ──────────────────────────

  Config: product_reviews.py

  ✅    ✔ Configuration is valid
```

Validation covers both the configuration itself and the NeMo Platform resources it depends on: Inference Gateway provider references, Files service seed sources, Nemotron Personas filesets, and the seed source types the service supports.

It does **not** check whether the models you reference actually respond. A provider can resolve while still refusing to serve the model named alongside it, so a green `validate` is not a promise that a preview will run. Use [`check-models`](#check-models) for that.

A single run reports every problem it detects rather than stopping at the first one:

```text
  ❌    ✘ The NeMo Platform Data Designer service only supports seed data from
HuggingFace or the NeMo Platform Files service (FilesetFile, Directory, or
FileContents seed sources referencing fileset paths). Upload your data to the
Files service, adjust your config, and try again.
  ❌    ✘ Errors in model configs: ["Cannot access provider
'default/does-not-exist'. Check that it exists and you have access to it."]
```

The command exits `0` only when no errors are reported, so you can gate a pipeline on it.

| Option                    | Description                                                                                                                        |
| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| `--workspace <WORKSPACE>` | Workspace used to resolve provider references and seed sources. Defaults to the workspace of the active CLI context, or `default`. |
| `--output <text\|json>`   | Output format. Defaults to `text`.                                                                                                 |

Use `--output json` to consume results programmatically:

```bash
nemo data-designer validate product_reviews.py --output json
```

```json
{
  "config_source": "product_reviews.py",
  "errors": [
    {
      "message": "Errors in model configs: [\"Cannot access provider 'default/does-not-exist'. Check that it exists and you have access to it.\"]"
    }
  ],
  "ok": false
}
```

## Check Models

The `check-models` command probes every model your configuration references, without running a workload. It sends a tiny generation request to each model alias, routed through the Inference Gateway, and reports whether it came back.

```bash
nemo data-designer check-models product_reviews.py
```

```text
  ──────────────────────── Data Designer Check Models ────────────────────────

  Config: product_reviews.py

  🩺 Running health checks for models...
  👀 Checking 'nvidia/nemotron-3.5-lightning-30b-a3b' in provider named 'default/nvidia-build' for model alias 'text'...
  ✅ Passed!

  ✅    ✔ All models responded successfully
```

This is the companion to `validate`, and the two answer different questions:

| Command        | Question                                                                | Cost                                 |
| -------------- | ----------------------------------------------------------------------- | ------------------------------------ |
| `validate`     | Is my configuration well-formed, and do the resources it names resolve? | No inference                         |
| `check-models` | Do the models it names actually respond?                                | One small generation per model alias |

Because only a live request can tell you a model works, `check-models` is what catches a model name that a provider advertises but cannot serve. Run it once before your first `preview`, and again after changing a model or provider — not on every edit, since each run bills a real generation.

Models configured with `skip_health_check=True` are skipped. A failing probe stops at the first bad model rather than reporting every problem at once, so fix and re-run. The per-model log lines above tell you which alias failed.

```text
  ❌    ✘ Model health check failed (ModelNotFoundError): Model
'nvidia/this-does-not-exist' not found
```

The command exits `0` only when every probe succeeds, so you can gate a pipeline on it.

| Option                    | Description                                                                                                                                         |
| ------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `--workspace <WORKSPACE>` | Workspace used to resolve provider references and seed sources. Defaults to the workspace of the active CLI context, or `default`.                  |
| `--output <text\|json>`   | Output format. Defaults to `text`. With `json`, the report is the only thing on stdout; per-model log lines go to stderr so stdout stays parseable. |

```bash
nemo data-designer check-models product_reviews.py --output json
```

```json
{
  "config_source": "product_reviews.py",
  "errors": [
    {
      "error_type": "ModelNotFoundError",
      "message": "Model 'nvidia/this-does-not-exist' not found"
    }
  ],
  "ok": false
}
```

## Retrieval SDG

Nemotron retrieval Stage 0/1 use dedicated jobs, not `create`. See [Retrieval SDG](/documentation/design-synthetic-data/retrieval-sdg).

```bash
nemo data-designer retrieval generate \
  --corpus default/my-docs \
  --provider default/nvidia-build \
  --chat-model nvidia/nemotron-3.5-lightning-30b-a3b \
  --embed-model nvidia/nemotron-3-embed-1b
nemo data-designer retrieval-prepare --spec '{"sdg_input":"default/stage0-out"}'
```

## Personas

The plugin provides commands for Nemotron Personas datasets.

Create a Files API Fileset for a persona locale so workloads can use it:

```bash
nemo data-designer personas make-fileset \
  --locale en_US \
  --api-key-secret system/ngc-api-key
```

If you need to create the secret during the same command, set an environment variable with the NGC API key and pass `--api-key-env-var`:

```bash
nemo data-designer personas make-fileset \
  --locale en_US \
  --api-key-secret system/ngc-api-key \
  --api-key-env-var NGC_API_KEY
```