A Slurm dashboard that runs on your own machine. sdash is designed as one static binary with its web interface embedded: it listens on loopback, opens your browser, and talks HTTP to the slurmrestd your site already runs, directly or through SSH, under your own Slurm identity, so that Slurm itself decides what you may see and do. The Slurm-facing part does not exist yet; Status says what does.
sdash is a scaffold. The repository holds the decisions the project starts
from (doc/adr/), the build and its checks, and a binary that
listens on loopback, prints its address, signs the browser in and serves the
shell of the interface: a header, a sidebar that leads to the twelve views
the design has, each at an address of its own, keyboard shortcuts and a
command palette. The views are placeholders that say no cluster is
configured; the first of them also says which sdash is running, which it
asks of the first operation of the browser API. There is no release.
There is no Slurm-facing code: nothing here connects to a slurmrestd, and no
view shows a job or a node. That code is to be tested end to end against
clusters that sind creates, which are also
where every test fixture and every vendored slurmrestd specification will
come from, and sind does not run a slurmrestd yet
(sind issue 90). Until it
does, the work here is on the shell of the interface and its primitives
(doc/adr/0016-e2e-and-fixtures-on-sind.md);
doc/sind-requirements.md says what sdash needs
from sind.
Where sdash is going is written down in the decision records and, in more
detail, in doc/initial-conclusions.md, the
first architecture position, which is dated and not kept up to date: where a
record differs, the record holds. doc/design/ holds the
design of the interface, and doc/research/ what was
learnt about slurmrestd and about
Radar, the Kubernetes UI whose shape
and look sdash follows without taking any of its code.
There is no release to install yet. The first will be v0.1.0: one archive
for each platform, sdash_<os>_<arch>.tar.gz for Linux and macOS on amd64
and arm64, with a checksums.txt and a build provenance attestation. Each
archive carries the licences of the third-party code the binary embeds
(doc/adr/0019-version-in-a-signed-tag.md).
Until then sdash is built from a checkout, which needs Go and Node (see Contributing):
$ make build # the UI, then bin/sdash with the UI embedded
$ bin/sdash # listens on port 7374 of 127.0.0.1 and ::1, and opens the browserOn a host you share with other users, such as a login node, start it as
bin/sdash --listen unix: instead: every user of the host can connect to a
loopback port, and only you to the unix socket sdash then listens on. A
browser cannot open a socket, so sdash prints an ssh -L command that
forwards a port of your own machine to it, and the address to open there.
It stops, and removes the socket, when it is interrupted or when the
terminal it was started from hangs up
(doc/adr/0012-local-listener-security.md,
doc/adr/0023-the-listeners-as-built.md).
Slurm 25.11 and later
(doc/adr/0004-slurm-25-11-is-the-floor.md).
sdash connects to a slurmrestd that the site runs and never starts one; it
speaks HTTP to it and nothing else, and the interface adapts to what that
server's REST API offers
(doc/adr/0005-versions-releases-and-capabilities.md).
A release is dropped when SchedMD's support for it has ended and no cluster
at GSI runs it any more.
These are the releases sdash is written for. No code speaks to Slurm yet (see Status), so none has been tested.
A release is a signed tag vX.Y.Z, and the message of the tag is its
release notes, published on the
releases page. Nothing in the
tree names a version; sdash version prints the one a binary was built
from. Until 1.0.0 a minor release may make breaking changes, and its notes
say so
(doc/adr/0019-version-in-a-signed-tag.md).
The repository carries a mise.toml, so the toolchain comes from
mise if you use it:
$ mise install # Go, golangci-lint, Node and sind, as CI uses them
$ make build # the UI, then bin/sdash with the UI embedded
$ make test # Go tests under the race detector
$ make lint # golangci-lint
$ make test-ui # the frontend's unit tests (Vitest)
$ make test-components # its component tests, in a real browser
$ make lint-ui # ESLint and Prettier
$ make dev # print the two-terminal development loop
$ make help # every other targetCommits are Conventional Commits,
and pull requests are rebase-merged onto main, so each commit of a pull
request has to stand as one
(doc/adr/0017-main-only-rebase-merge-conventional-commits.md).
How sdash is built and why is in doc/, and a change that takes a
decision adds a record under doc/adr/. Instructions for coding
agents are in AGENTS.md. Report vulnerabilities as
SECURITY.md says.
There is no contributor agreement and no sign-off. A contributor from
outside GSI keeps the copyright of their contribution, licenses it under
Apache-2.0, and adds an SPDX-FileCopyrightText line of their own to the
files they change
(doc/adr/0002-apache-2-0-and-reuse.md).
This project is developed with the help of AI coding tools. Changes written
by Anthropic's Claude Code agent are committed as
Claude <noreply@anthropic.com> and/or carry a Co-Authored-By: Claude …
trailer.
Copyright 2026 GSI Helmholtz Centre for Heavy Ion Research GmbH http://www.gsi.de
Apache-2.0. See LICENSE.