Workspaces#

Workspaces are the fundamental organizational and authorization boundary in NeMo Microservices. All platform resources—models, datasets, customization jobs, evaluation results, and more—must belong to a workspace.

When authentication is enabled, users are granted roles (Viewer, Editor, or Admin) within specific workspaces, and all resources within a workspace inherit its access controls.

Create separate workspaces when you need true isolation—for example, to separate teams (team-ml-research, team-nlp), individual users (user-jsmith), environments (dev, staging, production), or clients (client-acme). For lighter-weight organization within a workspace that doesn’t require access separation, use projects.

Built-in Workspaces#

The platform automatically creates two built-in workspaces during initialization:

  • default — General-purpose workspace for experimentation, editable by all authenticated users.

  • system — Reserved for platform-provided resources (e.g., evaluation targets, customization templates). Read-only for regular users; only platform administrators can modify.

Create a Workspace#

To create a workspace, provide a name and optionally a description. The name must be unique within your deployment and follow RFC 1035 DNS label rules: lowercase alphanumeric characters and hyphens, starting with a letter, maximum 63 characters. Once created, a workspace cannot be renamed—choose the name carefully. The description is a free-form text field to help identify the workspace’s purpose.

The system also generates a unique id (UUID) for internal use, but the name is the primary identifier used in API paths and SDK calls.

from nemo_microservices import NeMoMicroservices

client = NeMoMicroservices(base_url="<NMP_BASE_URL>")

workspace = client.workspaces.create(
    name="ml-team",
    description="Machine Learning Team workspace"
)
nmp workspaces create \
    --name ml-team \
    --description "Machine Learning Team workspace"

List Workspaces#

To list workspaces, call the list endpoint. When authentication is enabled, only workspaces the user has access to are returned. The response includes pagination metadata.

from nemo_microservices import NeMoMicroservices

client = NeMoMicroservices(base_url="<NMP_BASE_URL>")

response = client.workspaces.list()
for workspace in response.data:
    print(f"{workspace.name}: {workspace.description}")
nmp workspaces list

Get a Workspace#

To retrieve a specific workspace by its name:

from nemo_microservices import NeMoMicroservices

client = NeMoMicroservices(base_url="<NMP_BASE_URL>")

workspace = client.workspaces.retrieve("ml-team")
nmp workspaces get ml-team

Update a Workspace#

To update a workspace, only the description field can be modified. The name cannot be changed after creation.

from nemo_microservices import NeMoMicroservices

client = NeMoMicroservices(base_url="<NMP_BASE_URL>")

workspace = client.workspaces.update(
    "ml-team",
    description="Updated: ML Team workspace for model development"
)
nmp workspaces update ml-team \
    --description "Updated: ML Team workspace for model development"

Delete a Workspace#

To delete a workspace, it must be empty. The operation fails if the workspace contains any entities (models, datasets, jobs, etc.). Remove all entities before deleting.

from nemo_microservices import NeMoMicroservices

client = NeMoMicroservices(base_url="<NMP_BASE_URL>")

client.workspaces.delete("ml-team")
nmp workspaces delete ml-team