CLI and API
Submit and read managed evaluations from the rlmesh CLI, Python, or the HTTP API.
Everything the dashboard does with evaluations is also available from the rlmesh CLI, the Python client, and the HTTP API. Install the CLI and sign in first; see Your First Evaluation.
Submit from the CLI
An evaluation request is a JSON file. It names one or more models and one or more tasks. Each task names an environment, a task id, and an episode count.
Save this as request.json. It runs the prebuilt SmolVLA model on one LIBERO scenario:
{
"models": [{ "model": "prebuilt/smolvla/libero" }],
"tasks": [{ "taskId": "libero_goal/0", "env": "prebuilt/libero", "episodes": 5 }],
"tags": { "team": "robotics" }
}
Check it without launching, then submit and wait for the result:
rlmesh eval submit request.json --preview
rlmesh eval submit request.json --wait
--preview validates the request and prints its size and warnings. --wait blocks until the evaluation finishes and exits nonzero unless it completed. - instead of a file name reads the request from stdin.
Your own images
Reference a pushed image by its repository path in your namespace. Without a tag, the request uses the repository’s current version, the one your last :latest push selected. Add :v1 or @sha256:... to pin a version:
{
"models": [
{
"model": "your-namespace/my-model:v1",
"envVars": { "MY_SETTING": "1" }
}
],
"tasks": [{ "taskId": "pendulum", "env": "your-namespace/pendulum", "episodes": 10, "seed": 0 }]
}
taskIdis free-form for an environment without scenarios. For an environment with scenarios, such asprebuilt/libero, it names one as<group>/<scenario>, for examplelibero_goal/0.envVarson a model are set on its container. They are stored with the evaluation and shown to everyone in your organization under Raw request.- The image must have passed its probe. An image that is still probing, or failed, is refused.
Every field is listed in the API reference under EvaluationRequest. The Configuration tab of any evaluation in the dashboard shows its Raw request, which you can save as a starting point.
Watch and read
rlmesh eval list
rlmesh eval get eval_...
rlmesh eval wait eval_...
rlmesh eval cancel eval_...
rlmesh eval get prints the evaluation as JSON, including its status, progress and request.
Submit from Python
rlmesh.platform.Client uses your CLI sign-in, or RLMESH_API_KEY when it is set. It is experimental and may change.
from rlmesh.platform import Client
client = Client()
request = {
"models": [{"model": "prebuilt/smolvla/libero"}],
"tasks": [{"taskId": "libero_goal/0", "env": "prebuilt/libero", "episodes": 5}],
}
print(client.preview(request)["estimates"])
evaluation = client.submit(request)
client.wait(evaluation["id"])
print(client.scores(evaluation["id"]))
scores() groups outcomes by task by default. Pass group_by="scenario", "benchmark", "perturbation" or "model" for other rollups.
HTTP API
The API is at https://api.rlmesh.dev/v1. Send an API key or the output of rlmesh token as a bearer token:
curl -H "Authorization: Bearer $(rlmesh token)" https://api.rlmesh.dev/v1/evaluations
The full reference is at api.rlmesh.dev/docs.
CLI commands
| Command | What it does |
|---|---|
rlmesh version |
Print the CLI version and distribution details. |
rlmesh login |
Sign in to the platform in your browser. |
rlmesh logout |
Delete the stored credential for a profile. |
rlmesh whoami |
Show the active profile, platform and sign-in state. Exits nonzero unless signed in. |
rlmesh registry login |
Connect Docker to the image registry with your current session, and print your push targets. |
rlmesh registry publish TARGET IMAGE... |
Publish pushed builds as one version with compute variants (--channel latest to promote it). |
rlmesh org list |
List the organizations you belong to. |
rlmesh org switch ORG_ID |
Make an organization (org_...) the active one. |
rlmesh profile list |
List named profiles and their sign-in state. |
rlmesh profile use NAME |
Set the default profile. |
rlmesh profile remove NAME |
Delete a profile and its stored credential. |
rlmesh token |
Print a fresh access token for scripts. |
rlmesh eval submit REQUEST |
Submit an evaluation request (--preview to check it, --wait to block until it ends). |
rlmesh eval list |
List evaluations, newest first (--status, --tag KEY:VALUE, --q, --limit). |
rlmesh eval get ID |
Print one evaluation as JSON. |
rlmesh eval wait ID |
Wait for an evaluation to finish. Exits nonzero unless it completed. |
rlmesh eval cancel ID |
Cancel a running evaluation. |
rlmesh check MODULE:CLASS |
Check an environment or model class for packaging mistakes before you build. |
rlmesh check-image IMAGE |
Check a built image the way the platform will after the push. |
rlmesh describe MODULE:CLASS |
Print a class’s describe envelope, or with --label its dev.rlmesh.describe image label. |
Every command takes --help. Commands that talk to the platform take --profile NAME; many take --json for machine-readable output.