Skip to content

List or watch trainingruntimes in every project

GET
/apis/nodus.dev/v1beta1/trainingruntimes
curl --request GET \
--url https://example.com/apis/nodus.dev/v1beta1/trainingruntimes
labelSelector
string
fieldSelector
string
limit
string
continue
string
watch
string
resourceVersion
string
allowWatchBookmarks
string
timeoutSeconds
string

OK

Media type application/json
object
apiVersion
string
items
required
Array<object>

TrainingRuntime is a signed trainer image plus the contract TrainingJobs compile against: the launcher, the parameter JSON Schema, the defaults, the resource presets and the measured step times (Beta).

object
apiVersion
string
kind
string
metadata
object
annotations
object
key
additional properties
string
creationTimestamp
string
deletionGracePeriodSeconds
integer format: int64
deletionTimestamp
string
finalizers
Array<string>
nullable
generateName
string
generation
integer format: int64
labels
object
key
additional properties
string
managedFields
Array<object>
nullable
object
apiVersion
string
fieldsType
string
fieldsV1
object
key
additional properties
manager
string
operation
string
subresource
string
time
string
name
string
namespace
string
ownerReferences
Array<object>
nullable
object
apiVersion
required
string
blockOwnerDeletion
boolean
controller
boolean
kind
required
string
name
required
string
uid
required
string
resourceVersion
string
selfLink
string
uid
string
spec
required

TrainingRuntimeSpec is the contract a TrainingJob compiles against.

object
checkpointing

RuntimeCheckpointing configures recovery state.

object
path

Path is the state directory (default /nodus/state).

string
strategy

Strategy is HFTrainer (default) or Custom.

string
command

Command is the trainer entrypoint.

Array<string>
nullable
defaults

RuntimeDefaults apply when a TrainingJob leaves the field unset.

object
initCommand

InitCommand is a preflight run before the command.

object
command
required

Command is the argv.

Array<string>
nullable
timeout

Timeout is at most 30m.

string
parameters

Parameters are merged under the TrainingJob’s parameters.

resources

Resources are capacity floors. For GPU work the offering’s host shape applies if larger.

object
cpu

CPU is the vCPU floor.

string
disk

Disk is the ephemeral disk floor.

string
gpu

GPURequest asks for accelerators. A family (H100) matches any of its variants and never another family.

object
count

Count is the GPUs per node: 1, 2, 4 or 8.

integer format: int32
exact

Exact pins the exact variant instead of matching the family.

boolean
interconnect

Interconnect is Any or NVLink.

string
minMemory

MinMemory is the per-GPU memory floor.

string
type

Type lists 1–8 accelerator ids or families from the catalog.

Array<string>
nullable
memory

Memory is the host memory floor.

string
nodes

Nodes above 1 is shorthand for spec.distributed.nodes and is stored in that form.

integer format: int32
sidecars

Sidecars start before the trainer (for example a vLLM rollout server) and stop after it.

Array<object>
nullable

Sidecar is a helper container with native-sidecar semantics.

object
command
required

Command is the sidecar’s argv.

Array<string>
nullable
env

Env adds environment variables.

Array<object>
nullable

EnvVar is one environment variable: a literal value or a Secret key.

object
name
required

Name matches ^[A-Za-z_][A-Za-z0-9_]*$.

string
value

Value is the literal value.

string
valueFrom

EnvVarSource names where an env value comes from.

object
secretKeyRef

SecretKeySelector selects one key of a Secret.

object
key
required

Key is the key within it.

string
name
required

Name is the Secret.

string
image

Image defaults to the Job’s image.

string
name
required

Name is unique within the Job.

string
startupTimeout

StartupTimeout bounds how long the sidecar may take to become ready.

string
environmentTasks

EnvironmentTasks is AttemptAPI when this exact image fetches public manifests through the live attempt. Empty means the runtime is incompatible with GPU-host environment execution.

string
estimate

RuntimeEstimate is measured by the nightly runs. Keys are accelerator classes such as h100-80g or rtx-4090.

object
secondsPerStep

SecondsPerStep is used by training runtimes: expected duration is steps × seconds per step, scaled by how much more batchSize, gradientAccumulation and maxCompletionLength a TrainingJob sets than the defaults.

object
key
additional properties
number format: double
secondsPerTask

SecondsPerTask is used by evaluation runtimes: expected duration is tasks × seconds per task.

object
key
additional properties
number format: double
image
required

Image is the digest-pinned trainer image; managed runtimes are cosign-verified at release and seed.

string
launcher

Launcher is Plain (default), Torchrun, Accelerate or Deepspeed. Multi-node runs use it as the gang launcher.

string
modes

Modes lists Train (default) and Evaluate.

Array<string>
nullable
outputs

Outputs are the downloadable results the runtime writes.

Array<object>
nullable

RuntimeOutput is one downloadable result.

object
name
required

Name is the output name.

string
path
required

Path is where the trainer writes it.

string
parameters

Parameters is the JSON Schema of spec.parameters on a TrainingJob (at most 64 KiB).

presets

Presets choose resources for a model, method and quantization.

Array<object>
nullable

RuntimePreset is the resources measured for one model, method and quantization.

object
method
required

Method is Full, LoRA or QLoRA.

string
model
required

Model is a Hugging Face repository, for example Qwen/Qwen3-0.6B.

string
quantization

Quantization is empty or a scheme such as nf4.

string
resources
required

Resources are capacity floors. For GPU work the offering’s host shape applies if larger.

object
cpu

CPU is the vCPU floor.

string
disk

Disk is the ephemeral disk floor.

string
gpu

GPURequest asks for accelerators. A family (H100) matches any of its variants and never another family.

object
count

Count is the GPUs per node: 1, 2, 4 or 8.

integer format: int32
exact

Exact pins the exact variant instead of matching the family.

boolean
interconnect

Interconnect is Any or NVLink.

string
minMemory

MinMemory is the per-GPU memory floor.

string
type

Type lists 1–8 accelerator ids or families from the catalog.

Array<string>
nullable
memory

Memory is the host memory floor.

string
nodes

Nodes above 1 is shorthand for spec.distributed.nodes and is stored in that form.

integer format: int32
requires

RuntimeRequirements say which inputs a TrainingJob must set.

object
data

Data requires spec.data.

boolean
environment

Environment requires spec.environment.

boolean
model

Model requires spec.model (default true).

boolean
teacher

Teacher requires spec.teacher.

boolean
task

Task is what the runtime trains: SFT, Pretrain, DPO, ORPO, KTO, Reward, GRPO, Distill, Evaluate or Custom.

string
status

TrainingRuntimeStatus is written by the TrainingRuntime controller.

object
conditions

Conditions include Verified (SignatureVerified for managed runtimes).

Array<object>
nullable
object
lastTransitionTime
required
string
message
required
string
observedGeneration
integer format: int64
reason
required
string
status
required
string
type
required
string
imageDigest

ImageDigest is the verified image digest.

string
imageUser

ImageUser is the user the verified image’s config runs its process as (root when it names none).

string
managed

Managed is true for catalog runtimes in project nodus; it is derived, never set by a client.

boolean
observedGeneration

ObservedGeneration is the generation the status describes.

integer format: int64
phase

Phase is Pending until the image digest is verified, then Ready, or Failed.

string
kind
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
Example generated
{
"apiVersion": "example",
"items": [
{
"apiVersion": "example",
"kind": "example",
"metadata": {
"annotations": {
"additionalProperty": "example"
},
"creationTimestamp": "example",
"deletionGracePeriodSeconds": 1,
"deletionTimestamp": "example",
"finalizers": [
"example"
],
"generateName": "example",
"generation": 1,
"labels": {
"additionalProperty": "example"
},
"managedFields": [
{
"apiVersion": "example",
"fieldsType": "example",
"fieldsV1": {
"additionalProperty": "example"
},
"manager": "example",
"operation": "example",
"subresource": "example",
"time": "example"
}
],
"name": "example",
"namespace": "example",
"ownerReferences": [
{
"apiVersion": "example",
"blockOwnerDeletion": true,
"controller": true,
"kind": "example",
"name": "example",
"uid": "example"
}
],
"resourceVersion": "example",
"selfLink": "example",
"uid": "example"
},
"spec": {
"checkpointing": {
"path": "example",
"strategy": "example"
},
"command": [
"example"
],
"defaults": {
"initCommand": {
"command": [
"example"
],
"timeout": "example"
},
"parameters": "example",
"resources": {
"cpu": "example",
"disk": "example",
"gpu": {
"count": 1,
"exact": true,
"interconnect": "example",
"minMemory": "example",
"type": [
"example"
]
},
"memory": "example",
"nodes": 1
},
"sidecars": [
{
"command": [
"example"
],
"env": [
{
"name": "example",
"value": "example",
"valueFrom": {
"secretKeyRef": {
"key": "example",
"name": "example"
}
}
}
],
"image": "example",
"name": "example",
"startupTimeout": "example"
}
]
},
"environmentTasks": "example",
"estimate": {
"secondsPerStep": {
"additionalProperty": 1
},
"secondsPerTask": {
"additionalProperty": 1
}
},
"image": "example",
"launcher": "example",
"modes": [
"example"
],
"outputs": [
{
"name": "example",
"path": "example"
}
],
"parameters": "example",
"presets": [
{
"method": "example",
"model": "example",
"quantization": "example",
"resources": {
"cpu": "example",
"disk": "example",
"gpu": {
"count": 1,
"exact": true,
"interconnect": "example",
"minMemory": "example",
"type": [
"example"
]
},
"memory": "example",
"nodes": 1
}
}
],
"requires": {
"data": true,
"environment": true,
"model": true,
"teacher": true
},
"task": "example"
},
"status": {
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"imageDigest": "example",
"imageUser": "example",
"managed": true,
"observedGeneration": 1,
"phase": "example"
}
}
],
"kind": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
}
}

An error: a metav1.Status whose reason is a registered code.

Media type application/json

Status is the error body of every API response: a Kubernetes metav1.Status (so kubectl and client-go understand it) plus three top-level extensions that those clients ignore (ADR-028).

object
apiVersion
string
code
integer format: int32
details
object
causes
Array<object>
nullable
object
field
string
message
string
reason
string
group
string
kind
string
name
string
retryAfterSeconds
integer format: int32
uid
string
docs

Docs is the URL of the code’s docs page.

string
fix

Fix says what to do next, for example a CLI command or the field to change.

string
kind
string
message
string
metadata
object
continue
string
remainingItemCount
integer format: int64
resourceVersion
string
selfLink
string
shardInfo
object
selector
required
string
reason
string
requestId

RequestID identifies the request in logs and support tickets.

string
status
string
Example generated
{
"apiVersion": "example",
"code": 1,
"details": {
"causes": [
{
"field": "example",
"message": "example",
"reason": "example"
}
],
"group": "example",
"kind": "example",
"name": "example",
"retryAfterSeconds": 1,
"uid": "example"
},
"docs": "example",
"fix": "example",
"kind": "example",
"message": "example",
"metadata": {
"continue": "example",
"remainingItemCount": 1,
"resourceVersion": "example",
"selfLink": "example",
"shardInfo": {
"selector": "example"
}
},
"reason": "example",
"requestId": "example",
"status": "example"
}