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