> This page is for version 0.8.0.
> For other versions, use one of these documentation indexes:
> - Latest (default): https://docs.nvidia.com/nemo-helix/latest/llms.txt
> - 0.8.0: https://docs.nvidia.com/nemo-helix/v0.8.0/llms.txt
> - 0.7.1: https://docs.nvidia.com/nemo-helix/v0.7.1/llms.txt
> - 0.7.0: https://docs.nvidia.com/nemo-helix/v0.7.0/llms.txt
> - 0.6.0: https://docs.nvidia.com/nemo-helix/v0.6.0/llms.txt
> - 0.5.1: https://docs.nvidia.com/nemo-helix/v0.5.1/llms.txt
> - 0.5.0: https://docs.nvidia.com/nemo-helix/v0.5.0/llms.txt
> - 0.4.0: https://docs.nvidia.com/nemo-helix/v0.4.0/llms.txt
> - 0.3.0: https://docs.nvidia.com/nemo-helix/v0.3.0/llms.txt
> - 0.2.0: https://docs.nvidia.com/nemo-helix/v0.2.0/llms.txt

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

# Create a Model FileSet

Create a FileSet containing your base model checkpoint before creating a Model Entity.

## Prerequisites

* Configured a CLI context that points at your NeMo Helix deployment. Refer to [Connect with CLI Contexts](/documentation/reference/cli-reference/connect-to-deployments).
* For gated or private Hugging Face models: Created a secret with your HF token. Refer to [Manage Secrets](/documentation/get-started/core-concepts/manage-secrets).

---

## From Hugging Face Hub

The most common method is downloading directly from Hugging Face. The example below uses [nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16](https://huggingface.co/nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16), a public model that requires no token:

```python
from nemo_helix_plugin.client.client import NemoClient
from nemo_helix_plugin.client.errors import ConflictError
from nemo_helix_plugin.files.storage_config import HuggingfaceStorageConfig
from nemo_helix_plugin.files.types import CreateFilesetRequest, FilesetPurpose
from nemo_helix_plugin.schema import SecretRef

client = NemoClient.from_config()

HF_REPO_ID = "nvidia/NVIDIA-Nemotron-3.5-Lightning-30B-A3B-BF16"
MODEL_NAME = "nemotron-3-5-lightning-30b-a3b"

# Create FileSet from Hugging Face
try:
    fileset = client.files.create_fileset(
        body=CreateFilesetRequest(
            name=MODEL_NAME,
            description="Nemotron 3.5 Lightning 30B A3B from Hugging Face",
            purpose=FilesetPurpose.MODEL,
            storage=HuggingfaceStorageConfig(
                repo_id=HF_REPO_ID,
                repo_type="model",
            ),
        )
    ).data()
    print(f"Created FileSet: {fileset.name}")
except ConflictError:
    print(f"FileSet '{MODEL_NAME}' already exists, retrieving...")
    fileset = client.files.get_fileset(name=MODEL_NAME).data()

print(f"FileSet ready: {fileset.name}")
```

> **Note**
>
> These examples use the `default` workspace. If your current CLI context uses a different workspace, run `nemo config set --workspace default` first. To check, run `nemo config view`.

> **Tip**
>
> Gated Hugging Face repositories require a Hugging Face token. To use one:
>
> 1. Accept the model license on the Hugging Face model page.
> 2. Create a Hugging Face token with read access.
> 3. Store the token as a secret in the platform (see [Manage Secrets](/documentation/get-started/core-concepts/manage-secrets)), then pass it as `token_secret` in the storage config:
>
> ```python
> storage=HuggingfaceStorageConfig(
>     repo_id="<org>/<gated-model>",
>     repo_type="model",
>     token_secret=SecretRef("my-hf-token"),
> )
> ```

---

## From NGC

For models from NVIDIA NGC:

```python
import os
from nemo_helix_plugin.client.client import NemoClient
from nemo_helix_plugin.client.errors import ConflictError
from nemo_helix_plugin.files.storage_config import NGCStorageConfig
from nemo_helix_plugin.files.types import CreateFilesetRequest, FilesetPurpose
from nemo_helix_plugin.schema import SecretRef
from nemo_helix_plugin.secrets.types import HelixSecretCreateRequest
from pydantic import SecretStr

client = NemoClient.from_config()

MODEL_NAME = "nemotron-mini-4b"
NGC_TARGET = "nemotron-mini-4b-instruct"
NGC_ORG = "nvidia"
NGC_TEAM = "nemo"
NGC_VERSION = "1.0"
NGC_API_KEY_SECRET = "my-ngc-key"
NGC_API_KEY = os.environ.get("NGC_API_KEY")
if not NGC_API_KEY:
    raise RuntimeError("Set NGC_API_KEY before creating the NGC secret.")

# First, create a secret for your NGC API key (if not already created)
try:
    ngc_secret = client.secrets.create_secret(
        body=HelixSecretCreateRequest(name=NGC_API_KEY_SECRET, value=SecretStr(NGC_API_KEY)),
    ).data()
    print(f"Created secret: {NGC_API_KEY_SECRET}")
except ConflictError:
    print(f"Secret '{NGC_API_KEY_SECRET}' already exists, continuing...")
    ngc_secret = client.secrets.get_secret(name=NGC_API_KEY_SECRET).data()

# Create FileSet from NGC
try:
    fileset = client.files.create_fileset(
        body=CreateFilesetRequest(
            name=MODEL_NAME,
            description="Nemotron Mini 4B from NGC",
            purpose=FilesetPurpose.MODEL,
            storage=NGCStorageConfig(
                org=NGC_ORG,
                team=NGC_TEAM,
                target=NGC_TARGET,  # NGC asset name
                target_type="resource",
                version=NGC_VERSION,
                api_key_secret=SecretRef(ngc_secret.name),
            ),
        )
    ).data()
    print(f"Created FileSet: {fileset.name}")
except ConflictError:
    print("FileSet already exists, retrieving...")
    fileset = client.files.get_fileset(name=MODEL_NAME).data()
```

---

## Check FileSet Status

Files are downloaded in the background after you create a FileSet. Check the status:

```python
# List files in the FileSet
response = client.files.list_files(
    workspace="default",
    name="nemotron-3-5-lightning-30b-a3b",
)
files = response.data().data

print(f"Files in FileSet ({len(files)} total):")
for f in files[:10]:  # Show first 10
    print(f" - {f.path} ({f.size:,} bytes)")
```

#### Example Response

```json
{
  "data": [
    {
      "file_ref": "/v2/workspaces/default/filesets/nemotron-3-5-lightning-30b-a3b/-/config.json",
      "path": "config.json",
      "size": 3254,
      "cache_status": null
    },
    {
      "file_ref": "/v2/workspaces/default/filesets/nemotron-3-5-lightning-30b-a3b/-/model-00001-of-00014.safetensors",
      "path": "model-00001-of-00014.safetensors",
      "size": 4900000000,
      "cache_status": null
    },
    {
      "file_ref": "/v2/workspaces/default/filesets/nemotron-3-5-lightning-30b-a3b/-/model.safetensors.index.json",
      "path": "model.safetensors.index.json",
      "size": 1500000,
      "cache_status": null
    },
    {
      "file_ref": "/v2/workspaces/default/filesets/nemotron-3-5-lightning-30b-a3b/-/tokenizer.json",
      "path": "tokenizer.json",
      "size": 17078110,
      "cache_status": null
    }
  ]
}
```

---

## Next Steps

Proceed to [create a Model Entity](/documentation/customizer-reference/manage-model-entities/create-a-model-entity).