Skip to content

SystemsLab 157.0.0 ​

Added ​

  • Host agents can now be drained — cordoned out of the scheduler so no new jobs are assigned to them — via systemslab host drain <host> [--wait], the drain_host MCP tool, or POST /host/{id}/drain. A busy host enters draining and finishes its current job before becoming drained; it stays out of the pool until explicitly reactivated (systemslab host reactivate <host>, reactivate_host, or POST /host/{id}/reactivate). This lets a machine that is both a developer box and an agent be used for local work without contaminating experiment measurements.
  • The MCP submit_experiment tool now accepts Jsonnet and YAML specs in addition to TOML, selected with a new format argument that defaults to toml. Jsonnet and YAML specs can also be expanded into multiple variants under a shared context with a new sweep argument, which takes the same sweepfile shape as the systemslab sweep command.
  • Context artifacts now open the same viewers as experiment artifacts — the generic file viewer, the rezolus metrics dashboard, the llm-perf, rpc-perf, vllm and sgl dashboards, and the PromQL explorer — instead of being download-only.
  • The metrics dashboard now charts AMD GPU metrics — utilization, memory, power, temperature, clocks, PCIe throughput, and the AMD hardware performance counters — and gains a GPU selector that scopes the aggregate charts to a subset of devices. The system info viewer also lists each GPU's model, vendor, memory, architecture, driver, PCI bus, and NUMA node.
  • The KPI summary now reports Input Tok/s and Total Tok/s alongside the existing Output Tok/s.

Changed ​

  • The systemslab/download-artifact action now falls back to searching the contexts an experiment belongs to when the named artifact is not found in the experiment itself, so a context-level artifact can be staged once and pulled by every experiment in it. This applies only when no job is specified, and the match must still be unambiguous.

Fixed ​

  • Fixed getent hosts <name>.systemslab.internal — and any process resolving such a name through getaddrinfo — segfaulting on hosts with the SystemsLab NSS module installed. The returned struct hostent had unterminated h_aliases and h_addr_list arrays, so callers walked off the end of them. An AF_INET6 lookup for an IPv4-only job also no longer answers with a synthesized IPv4-mapped address, which had been shadowing the job's real address in getaddrinfo results. Jobs no longer need to work around this by using the *_ADDR environment variables.
  • An experiment in which one job failed and its siblings were cancelled as a consequence now reports failed rather than sometimes reporting cancelled, and the same precedence applies when rolling experiment states up into a context's status. Experiments and contexts the user cancels outright still report cancelled.
  • A context with no experiments now shows a distinct empty status instead of error.
  • Fixed proxied MCP tool calls failing with 401/403 partway through a session once the CLI's login token aged out. Tokens are now refreshed against the credential actually sent, and the proxy reloads the token from disk and retries once on an auth failure, so an out-of-band systemslab login recovers the session without restarting the MCP server.
  • The MCP list_actions tool now reports action names in the canonical systemslab/<name> form. It previously returned stale snake_case names such as download_artifact and start_metrics, which passed validate_spec but failed at run time with "no such action". Its tags parameter is also now documented as an array, matching what the systemslab.libsonnet helpers actually accept.