Skip to content

Read the status of a Environment

GET
/apis/nodus.dev/v1/namespaces/{namespace}/environments/{name}/status
curl --request GET \
--url https://example.com/apis/nodus.dev/v1/namespaces/example/environments/example/status
namespace
required
string

The project.

name
required
string

The object’s name.

OK

Media type application/json

Environment is an RL and evaluation environment: an OCI image with two entrypoints. nodus-env tasks --split <train|test> --seed N writes JSONL {taskId, prompt, metadata} with no answers, and nodus-env grade reads {taskId, completion} lines on stdin and writes {taskId, verdict, reward, evidence}. Every Environment has a grader, run on the one platform grading path shared by agent evals and TrainingJobs.

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

EnvironmentSpec describes an environment package and its task contract.

object
category

Category is Reasoning, Math, Code, Games, Control or Custom.

string
examples

Examples are TrainingJob templates with measured results; TrainingJob.from_example starts from one.

Array<object>
nullable

EnvironmentExample is a TrainingJob template with measured results. It has no shell strings and installs nothing at run time.

object
baseline

ExampleScore is a measured pass rate in [0, 1].

object
passRate
required

PassRate is passed divided by scored tasks.

number format: double
changePP

ChangePP is the measured change in percentage points.

number format: double
measuredOn

ExampleMeasurement says where and when an example was measured.

object
date

Date is the measurement date (YYYY-MM-DD).

string
offering

Offering is the offering id.

string
mode
required

Mode is Train or Evaluate.

string
model

Model is a pinned model URI (hf://@<40-hex revision>).

string
name
required

Name is unique within the environment; from_example("nodus/gsm8k:<name>") selects it.

string
parameters

Parameters are the runtime parameters.

runtime
required

Runtime is the TrainingRuntime the example runs on, for example nodus/grpo-lora.

string
runtimeSeconds

RuntimeSeconds is the measured wall time.

integer format: int64
tasks

Tasks is the number of held-out tasks the example measures.

integer format: int32
trained

ExampleScore is a measured pass rate in [0, 1].

object
passRate
required

PassRate is passed divided by scored tasks.

number format: double
graders

Graders lists the environment’s graders (default: the image’s own Program grader).

Array<object>
nullable

EnvironmentGrader is one grader.

object
description

Description says what it checks.

string
kind
required

Kind is Program or ExactMatch.

string
name
required

Name identifies the grader in verdicts.

string
heldOutMeasures

HeldOutMeasures lists TrainedTask (default) and Transfer.

Array<string>
nullable
licenses

EnvironmentLicenses are SPDX license ids.

object
code

Code is the code license.

string
data

Data is the data license.

string
modes

Modes lists Train and Evaluate (default [Evaluate]).

Array<string>
nullable
package
required

EnvironmentPackage is exactly one of image and pip.

object
image

Image is a digest-pinned OCI image reference.

string
loader

Loader is the function the generated nodus-env shim calls for verifiers packages (default load_environment).

string
pip

PipPackage names a pip package.

object
index

Index is an optional package index URL.

string
name
required

Name is the distribution name.

string
version
required

Version is the exact version.

string
publisher

Publisher names who maintains the environment.

string
readiness

Readiness is Research (default) or Stable.

string
requirements

EnvironmentRequirements are hints for choosing a model and GPU.

object
gpu

GPU is the smallest useful GPU type.

string
memory

Memory is the GPU memory a typical model needs.

string
rewardType

RewardType is Binary (default) or Scalar.

string
sampleTask

SampleTask is one example task for the catalog (at most 4 KiB).

sandbox

GradingSandbox configures the grading Sandboxes. Egress is always denied and candidate code runs as an unprivileged user that cannot read the answers.

object
cpu

CPU is the CPU limit of one grading Sandbox (default 1).

string
image

Image overrides the grading image (default: the environment image).

string
memory

Memory is the memory limit of one grading Sandbox (default 1Gi).

string
timeout

Timeout bounds one grading batch (default 60s, at most 10m).

string
sourceURL

SourceURL links the environment’s source.

string
splits

EnvironmentSplits declares split sizes.

object
test
required

SplitSize is the number of tasks in a split.

object
size
required

Size is the task count.

integer format: int32
train
required

SplitSize is the number of tasks in a split.

object
size
required

Size is the task count.

integer format: int32
summary

Summary is one sentence for the catalog.

string
version
required

Version is a SemVer version; references use nodus/@.

string
status

EnvironmentStatus is written by the Environment controller.

object
conditions

Conditions include Verified (digest resolved; managed environments signature-checked).

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

Digest is the resolved (or built) image digest.

string
observedGeneration

ObservedGeneration is the generation the status describes.

integer format: int64
phase

Phase is Pending while the image is resolved or built and the manifests are materialized, Ready or Failed.

string
splits

EnvironmentSplitCounts are materialized task counts.

object
test
required

Test is the number of held-out tasks.

integer format: int32
train
required

Train is the number of training tasks.

integer format: int32
Example generated
{
"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": {
"category": "example",
"examples": [
{
"baseline": {
"passRate": 1
},
"changePP": 1,
"measuredOn": {
"date": "example",
"offering": "example"
},
"mode": "example",
"model": "example",
"name": "example",
"parameters": "example",
"runtime": "example",
"runtimeSeconds": 1,
"tasks": 1,
"trained": {
"passRate": 1
}
}
],
"graders": [
{
"description": "example",
"kind": "example",
"name": "example"
}
],
"heldOutMeasures": [
"example"
],
"licenses": {
"code": "example",
"data": "example"
},
"modes": [
"example"
],
"package": {
"image": "example",
"loader": "example",
"pip": {
"index": "example",
"name": "example",
"version": "example"
}
},
"publisher": "example",
"readiness": "example",
"requirements": {
"gpu": "example",
"memory": "example"
},
"rewardType": "example",
"sampleTask": "example",
"sandbox": {
"cpu": "example",
"image": "example",
"memory": "example",
"timeout": "example"
},
"sourceURL": "example",
"splits": {
"test": {
"size": 1
},
"train": {
"size": 1
}
},
"summary": "example",
"version": "example"
},
"status": {
"conditions": [
{
"lastTransitionTime": "example",
"message": "example",
"observedGeneration": 1,
"reason": "example",
"status": "example",
"type": "example"
}
],
"digest": "example",
"observedGeneration": 1,
"phase": "example",
"splits": {
"test": 1,
"train": 1
}
}
}

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"
}